软件项目管理课程心得

2023-02-11

第一篇:软件项目管理课程心得

软件工程课程心得

软件工程项目总结

在我们整个软件工程过程中,我体会到了许多,也学到了许多。

在项目要进行自由分组后,我们的项目小组便诞生了。我们小组由七个成员组成,在相互商量后我们也确定了我们组的项目,是做一个校园 b2c电子商务网站。我们也随即做了分工,由于我们团队只有我和另一名成员有类似的项目开发经验,所以我们便要担负起更重的任务。最后由于在整个团队中,对于界面开发这一块只有我的开发经验较深,所以我便担任了主要的界面设计人员。我们的项目也正式开始了。

需求调研和分析对于软件开发过程至关重要。我们在开发时如果不进行调研和分析,那么对于后来的项目进展将产生致命的后果。我们在项目的开发中便遇到了这样的问题。老师作为我们的客户,他对这个校园 b2c电子商务网站的要求便是我们必须了解的,我们也必须以客户的要求为根本构建我们的这个系统。我们开始自己随意的计划整个网站的设计,然后报给老师,老师作为一个客户并不是全部认同,随后我们也必须按着客户的要求更改我们的设计报告。我也明白了,再做一个系统时,必须随时和客户保持沟通,随时了解他们需要什么,他们想要什么功能。如果我们不去和客户沟通,不去调研客户的需求,做出来的系统即使在我们看来是一个很好,很完美的产品,但是如果客户不认同,那么我们所做的一切都是徒劳,还要返工去修改,费时费力。所以在做任何一个项目时,前期的需求调研和需求分析都是必须的,这是在做一个项目的基本,是关系成败的重要一环。

对于一个项目,它的需求设计也非常重要。在我们的校园 b2c电子商务网站开发的过程中,遇到了一些问题,如客户提交购买确认后,我们如何确定应该以什么方式将货物给客户,还有以什么确定货物的送达地点,客户的订单在哪里处理,订单以什么方式惊醒处理,在管理员应该实现的功能上反复增删等,这些问题很多都是由于设计不够清晰,不够完善而导致的。出现的这些问题很多都是非常棘手的,我们为了解决这些棘手的问题浪费了大量的时间,我们不得不在工程代码上改了又改,在数据库里增表、删表、加数据、减数据,当然,在文档里也要做出相应的修改以适应新的功能。还好,我们能及时地发现问题,通过相互

沟通讨论,问题也得到了解决。通过总结,我们也意识到,我们大家在做需求分析和进行需求了解时仅仅考虑了一些基本的功能,而至于管理员和客户之间的联系,以及具体的一些流程我们都没有深究,而导致我们到后期花费了大量的时间用于修复之前没有考虑周全而带来的问题。如果我们的需求设计能够比较清晰和完善,那么我们在开发过程中便会很明白的知道我们应该实现什么样的功能,在数据库里应该怎样建表,以什么方式插入数据,从而可以避免反复修改工程的问题,也能避免出现可能毁坏整个工程的问题。整个工程的需求设计对于一个项目的顺利进展至关重要。

对于文档在软件工程中的作用,我在这次项目开发过程中有了更加深刻的理解。文档在软件开发过程中是很有用的,文档是一项必不可少的东西,但文档也不能太多,太过繁琐,如果是那样就不太好了。首先我们要明确开发过程中为什么要写这些文档,文档的最根本的作用是为了更好的沟通。一个项目或产品可能需要延续很长的时间,开发过程中可能需要很多的环节,可能会遇到很多的问题和很多的解决的方法,这时,我们需要文档的帮助,我们需要有一个东西来记录,我们需要有一个共同的声音。文档只不过是一个准绳,将开发中的各个树枝树叶扶正。如果,这个准绳太多太紧,大树可能会发育的很高很直,但是就是有些畸形,如果这个准绳太少太松,大树可能就会变成灌木丛。文档的多少、繁简是有度的,绝对不能说越多越好。我觉得,文档需要说明解决问题的方法而不是解决问题的理论,因为解决问题的理论是在文档形成中做到的。文档完整即可,每一份文档说明一个问题,无需将多个文档的内容放在一个文档的里面。除了重要阶段形成文档,其它部分都只是讨论或者说是想法。不要让文档成为累赘,如果真是这样,我认为就是该考虑写这些文档的必要性的时候了。 我们在文档的时候,一定要明白为什么要写这些。

在整个项目开发过程中,我们也同时遇到了许多程序接口问题,页面和功能相结合的问题,数据库建表的问题,这些问题都是源于我们项目小组成员之间的沟通不足。我深刻认识到,在项目开发时,项目小组中各个成员之间的相互沟通是非常重要的。如果我们要在功能方面作出修改,那么程序人员和页面人员及数据库人员就必须相互沟通,共同对整个程序作出相应的修改,这样才能避免最终整合时出现问题。

在这十个周里,我还对软件工程有了新的理解。在我以前的理解当中,软件工程,无非就是一个人或者几个人或一个团队集中在一起进行编写代码的工作,以实现开发出所用的软件。但现在我明白了,软件工程的作用,就是告诉人们怎样去开发软件和管理软件。具体地讲,它表现在与软件开发和管理有关的人员和过程上。所以,软件工程就不仅仅是单一的编程过程了。它包括了系统分析->建模->概要设计->详细设计->编码->测试->维护。编码可以理解为编程,这个只占总时间的20%左右。编程只是其中的一小部分。

在这次项目里我完成了许多工作,在界面设计上我完成了,首页、全部的商品页面、全部的用户页面及部分管理员页面的制作,在后期项目整合过程中修改了功能和界面结合时出现的bug,还有数据库插入数据及解决数据库集中整合时出现的问题。这些工作我都顺利完成了,虽然并不能算是非常的出色,但也算是尽力了。现在看到自己辛劳的成果,我感到很欣慰。

当然,在这次项目过程中我也发现了自己的一些问题。如现在的网站开发技术还不够强,在和小组成员相互沟通上还不够积极等。我希望以此为契机,在将来的项目开发中能做得更好。

第二篇:软件课程设计心得体会

软件课程的设计让我们体会更多的是熟悉到团队协作的主要性,只要合作协作才干保证整个项目标有条不絮。接下来小编搜集了软件课程设计心得体会,欢迎查看,希望帮助到大家。软件课程设计心得体会【1】对于此次课程设计,我早在寒假就借了linux相关书籍参看,但上方讲的主要是有关linux操作方面的资料,编程方面讲得很少,而且在假期中也并不明白课设的题目是什么,因此此次课设基本上都是在开学后的这两周内完成的。

以前做过的软件方面的课设如C语言课设、数据结构课设都是在假期完成的,由于自我是一个十分追求完美的人,因此几乎每次都花了将近大半个假期的时光来做,如C语言就花了一个多月的时光来做,分数当然也较高,有90来分。对于课程设计,我历来都是相当认真的,此次操作系统的课程设计当然也不例外。但是linux以前没怎样接触过,学校也没怎样系统地讲过,在刚接到题目时除了明白如何用gcc编译等等,几乎能够算作处于一无所知的状态。时光紧任务重,要从对linux一无所知的状态到独立出色地完成课设,不下点苦功夫是不成的。那两周里我除了吃饭睡觉几乎就没离开电脑过,有时时光晚了食堂关门饭都没得吃了。最后,在这样近乎玩命地学习工作下,身体撑不住了,在第二周周三晚上我发烧了。但是眼看就要到检查的日期了,而我的课设也就快完工了。我不想因为看病而耽误下去弄得前功尽弃,因此只买了点药,继续在电脑前拼命……最后,总算赶在周五检查前做出了较满意的作品。

在周五检查那天,老师看了我第4题后,又抽查了一下我的第3题,其实也只是要我把第3题运行一下而已罢了。若放在平时,这绝对是小菜一碟,但当时正在发烧,加上一点紧张,居然把模块加载命令insmodfdev.o错打成insmodfdev.c了,由于这个低级失误造成心中慌乱,于是后面的一条生成设备文件命令mknod干脆就照着参考资料打上去了。于是老师认为我不熟,在那题上打了个半钩。当时心里确实感到十分地遗憾和沮丧,心想所谓“台上一分钟,台下十年功”,一分钟若把握不好,也同样尽毁十年功啊!

但最后,我最后明白,分数但是是个数字,知识才是自我的。透过这次课程设计,我确实学到了很多东西,多年后我可能已经忘记这次课设最后打了多少分,但这些学到的东西却能够使我受益终生。除了知识技术上的东西,我更锻炼了自我的快速学习潜力;我学会了如何快速有效地从图书馆、网络获取自我需要的信息;我尝到了在周围很多同学拷来拷去时孤军奋战的痛苦;我体会了夜以继日完成一个项目时中途过程的艰辛及最终完成后巨大的成就感……我更加深了人生的信心,以后应对任何一个困难的项目,我想我都不会惧怕,并最终能够成功地将其完成。

感谢老师,感谢此次课程设计。虽然在其中吃了不少苦头,但我毫不后悔,因为我满载而归。软件课程设计心得体会【2】

通过此次课程设计,使我更加扎实的掌握了有关方面的知识,在设计过程中虽然遇到了一些问题,但经过一次又一次的思考,一遍又一遍的检查终于找出了原因所在,也暴露出了前期我在这方面的知识欠缺和经验不足。实践出真知,通过亲自动手制作,使我们掌握的知识不再是纸上谈兵。

过而能改,善莫大焉。在课程设计过程中,我们不断发现错误,不断改正,不断领悟,不断获取。最终的检测调试环节,本身就是在践行“过而能改,善莫大焉”的知行观。这次课程设计终于顺利完成了,在设计中遇到了很多问题,最后在老师的指导下,终于游逆而解。在今后社会的发展和学习实践过程中,一定要不懈努力,不能遇到问题就想到要退缩,一定要不厌其烦的发现问题所在,然后一一进行解决,只有这样,才能成功的做成想做的事,才能在今后的道路上劈荆斩棘,而不是知难而退,那样永远不可能收获成功,收获喜悦,也永远不可能得到社会及他人对你的认可!

课程设计诚然是一门专业课,给我很多专业知识以及专业技能上的提升,同时又是一门讲道课,一门辩思课,给了我许多道,给了我很多思,给了我莫大的空间。同时,设计让我感触很深。使我对抽象的理论有了具体的认识。

我认为,在这学期的实验中,不仅培养了独立思考、动手操作的能力,在各种其它能力上也都有了提高。更重要的是,在实验课上,我们学会了很多学习的方法。而这是日后最实用的,真的是受益匪浅。要面对社会的挑战,只有不断的学习、实践,再学习、再实践。这对于我们的将来也有很大的帮助。以后,不管有多苦,我想我们都能变苦为乐,找寻有趣的事情,发现其中珍贵的事情。就像中国提倡的艰苦奋斗一样,我们都可以在实验结束之后变的更加成熟,会面对需要面对的事情。

回顾起此课程设计,至今我仍感慨颇多,从理论到实践,在这段日子里,可以说得是苦多于甜,但是可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,但可喜的是最终都得到了解决。

实验过程中,也对团队精神的进行了考察,让我们在合作起来更加默契,在成功后一起体会喜悦的心情。果然是团结就是力量,只有互相之间默契融洽的配合才能换来最终完美的结果。此次设计也让我明白了思路即出路,有什么不懂不明白的地方要及时请教或上网查询,只要认真钻研,动脑思考,动手实践,就没有弄不懂的知识,收获颇丰。软件课程设计心得体会【3】

整个设计透过了软件和硬件上的调试。我想这对于自我以后的学习和工作都会有很大的帮忙。在这次设计中遇到了很多实际性的问题,在实际设计中才发现,书本上理论性的东西与在实际运用中的还是有必须的出入的,所以有些问题不但要深入地理解,而且要不断地更正以前的错误思维。

一切问题务必要靠自我一点一滴的解决,而在解决的过程当中你会发现自我在飞速的提升。对于教材管理系统,其程序是比较简单的,主要是解决程序设计中的问题,而程序设计是一个很灵活的东西,它反映了你解决问题的逻辑思维和创新潜力,它才是一个设计的灵魂所在。因此在整个设计过程中大部分时光是用在程序上方的。

很多子程序是能够借鉴书本上的,但怎样衔接各个子程序才是关键的问题所在,这需要对系统的结构很熟悉。因此能够说系统的设计是软件和硬件的结合,二者是密不可分的。透过这次课程设计我也发现了自身存在的不足之处,虽然感觉理论上已经掌握,但在运用到实践的过程中仍有意想不到的困惑,经过一番努力才得以解决。

这也激发了我今后努力学习的兴趣,我想这将对我以后的学习产生用心的影响。其次,这次课程设计让我充分认识到团队合作的重要性,只有分工协作才能保证整个项目的有条不絮。另外在课程设计的过程中,当我们碰到不明白的问题时,指导老师总是耐心的讲解,给我们的设计以极大的帮忙,使我们获益匪浅。因此十分感谢老师的教导。透过这次设计,我懂得了学习的重要性,了解到理论知识与实践相结合的重要好处,学会了坚持、耐心和努力,这将为自我今后的学习和工作做出了最好的榜样。我觉得作为一名软件工程专业的学生,这次课程设计是很有好处的。

更重要的是如何把自我平时所学的东西应用到实际中。虽然自我对于这门课懂的并不多,很多基础的东西都还没有很好的掌握,觉得很难,也没有很有效的办法透过自身去理解,但是靠着这一个多礼拜的“学习”,在小组同学的帮忙和讲解下,渐渐对这门课逐渐产生了些许的兴趣,自我开始主动学习并逐步从基础慢慢开始弄懂它。

我认为这个收获就应说是相当大的。一开始我们从参考书上找来了课题,但是毕竟是参考书,做到之后发现很多程序都是不完整的,这让我们伤透了脑筋。看着别的小组都弄得有模有样了,但是我们连一个课题都还没有定好。好不容易又找到了课题,但是结果还是很不尽人意。程序接线什么的都弄好了,调试也没有问题,但是就是无法到达预期想要的结果。参考书毕竟只是一个参考,设计这种东西最后还是要靠自我动脑筋。

然后我们大家一齐齐心协力,从平时做的实验?老师上课的举例?书本上的知识以及老师的辅导和其他同学的帮忙下最后完成了。就应说这是透过我们小组成员的共同努力和动脑完成的,虽然资料并不是很复杂,但是我们觉得设计的过程相当重要,学到了很多,收获了很多。我觉得课程设计反映的是一个从理论到实际应用的过程,但是更远一点能够联系到以后毕业之后从学校转到踏上社会的一个过程。小组人员的配合?相处,以及自身的动脑和努力,都是以后工作中需要的。

所以我认为这次的课程设计好处很深,和其他4位同学的共同学习、配合?努力的过程也很愉快,另外还要感谢老师的耐心辅导。

第三篇:软件测试课程学习心得

我所理解的软件测试

《软件测试方法和技术》这门课程,还是由张建东老师教我们的。在张老师的讲解下,我深刻的体会到软件测试是很有必要的。一个软件,从最开始的可行性分析、需求分析、概要设计、详细设计、编写代码。这一系列的开发之下。千辛万苦的,花费了大量的人力物力、金钱时间,终于把软件给做出来了。你试着想一下,要是送到客户的手上,客户突然发现,软件用不了,或者是软件存在很大的缺陷。导致软件不好用、甚至比原先没有这个软件,还麻烦了。客户是很愤怒的。客户一愤怒,就导致客户不会付钱。这最终,项目失败,造成资源的大量浪费,所以说软件测试还是很有必要的。再者就是,软件测试可以发现软件的缺陷,从而通知编程人员不断改进软件。在这样不断测试,不断改进的情况下。将软件性能不断提高,软件变得越来越好用。

软件测试,旨在发现软件的缺陷。可以这样说,软件测试就是以发现软件缺陷,为最终目的的测试活动。它通过软件测试方法,白盒的、黑盒的、静态的或是动态的。借助软件测试工具,来找到缺陷。然后在缺陷评审和确认之后将缺陷记录下来,并用缺陷管理工具管理,详细描述,关注软件缺陷的发生周期。对它的严重性、和优先级下一个定义。书写软件缺陷报告,具名缺陷的重现步骤、测试的期望结果与实际结果、还有相关图片、文字资料。提交给软件编程人员,来完成软件缺陷的修复。

软件测试的方法,包括:白盒测试和黑盒测试。其中,白盒测试之中,有含有:语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖、路径覆盖、等方法。黑盒测试方法中,有:等价类划分法、边界值分析法、判定表法、因果图法等。软件测试方法,按照是否运行代码来看,可以分为:静态测试和动态测试。其中静态测试有,对代码的走查和评审。动态测试,则是要通过运行代码来执行。白盒测试多用于软件的单元测试上,黑盒测试多用于功能性测试上。代码的静态测试和动态测试,则是每一个软件项目都必须的。

单元测试,多构造桩函数或是驱动程序来测试。一般借助与各种软件测试工具。软件测试,或者说程序测试。一般先是进行单元测试。单元测试,修改完单元之中的缺陷、错误之后,就是集成测试。集成测试多针对程序功能进行测试,看程序的各项功能是否达到要求,是否齐全。集成测试之后就是系统测试。系统测试是针对整个软件系统的。看软件系统是否达到性能的要求。从而改进代码,以求达到系统的严格要求。最后就是验收测试,这个测试,一般都分成两半来做。一半是,程序员模拟客户环境,进行测试。而,另一半则是,真正的客户参与的测试。最大程度的体现客户的真实环境。客户在试运行的情况下,看是否会发现,平时发现并且以前的环境发现不了的问题。

验收测试,包含对界面的测试和软件可用性的测试,运用尼尔森十大原则,来测试软件是否好用。软件是否达到用户的对软件界面的需求。

无论是软件编写,还是软件测试,都需要相应的文档管理。还有针对软件测试制定的测试计划,软件测试执行等。

通过本学期的学习,我感受到软件测试是一门非常需要学习的课程。即使作为考察课程,它也是软件行业人士所必须了解的知识。它对软件工程项目的作用是至关重要的。现在,作为学生的我所做的项目虽然都是一些小的项目,但是在小组共同开发的时候还是需要用到项目的测试。如今这门课程我学的还不是很好,但我相信在今后的实训及工作当中,能够更好的体验和感受到项目测试的精髓,对软件项目测试有更深入的了解。我也希望,学校的老师能够在今后的教学当中重视软件项目测试课程,多让学生了解实例,去感受、体会软件项目测试所遇到的问题和解决方案,理解软件项目测试的精髓。

第四篇:学习《软件工程》课程心得体会

软件工程课程

——心得体会

摘要:高校教职工工资管理系统是为了解决教职工工资管理的而设计的,目的是建立一个能够初步实现高校教职工工资管理系统的智能化管理,该系统能跟据每位教师的职称不同而确定不同的基本工资,同时能根据每个教职工的出勤率,加班时间计算出每个教职工的月工资,还能根据每个月的情况计算出年终奖金。利用此系统能减少工资计算管理教职工数量,增加教职工效率,同时还能使公司工资管理更加合理、透明,为高校节约成本。在进行软件需求说明书设计及概要设计的心得体会。 关键字:工资 管理 功能 心得

绪论:软件工程课程设计的题目是高校教职工工资管理系统,本文主要是对于软件工程课程设计中需求分析与概要设计分析的心得。

我们进行设计的项目是高校教职工工资管理系统。高校教职工工资管理系统是为了解决教职工工资管理的而设计的,目的是建立一个能够初步实现高校教职工工资管理系统的智能化管理,该系统能跟据每位教师的职称不同而确定不同的基本工资,同时能根据每个教职工的出勤率,加班时间计算出每个教职工的月工资,还能根据每个月的情况计算出年终奖金。利用此系统能减少工资计算管理教职工数量,增加教职工效率,同时还能使公司工资管理更加合理、透明,为高校节约成本。

一、需求分析和概要设计。 1)需求分析

按照软件工程的软件过程来说:

1需求分析产生了软件功能规格说明书,需要确定用户对软件的需求,要作到明确、无歧义。不涉及具体实现方法。用户能看得明白,开发人员也可据此进行下面的工作(概要设计)。

2.概要设计产生了软件概要设计说明书,说明系统模块划分、选择的技术路线等,整体说明软件的实现思路。并且需要指出关键技术难点等。

在进行需求分析时,我们既是开发者又是用户,本系统的业务流程与业务分类的定义比较难。我们的团队进行了研讨,还充分运用了身边的各种资源,大量的查找了很多网络上关于工资系统的资料。通过资料的进行讨论、根据我们的课题进行分析,最后确定了用户的需求为:

1.本系统在高校应用后高校工资管理方面的教职工将减少至目前的50%左右; 2.本系统在高校应用后将在高校各方面的成本将会有所降低;

3.本系统在高校应用后将教职工的工资达到完全透明,计算更加精确教职工因纠纷事件减少到1%。 根据分析将系统的功能从一般教职工与系统管理者两个角度将功能划分为7个模块,当然介于我们的知识有限,有的功能没有实现:员工工资与考勤直接挂钩,但本系统无法与员工考勤系统挂钩相连,由于涉及此系统时该高校并没有员工考勤系统,而且我们在最初进行商量的时候也没有提出该要求。 2)概要设计

从概要阶段开发正式进入软件的实际开发阶段,本阶段完成系统的大致设计并明确系统的数据结构与软件结构。在软件设计阶段主要是把一个软件需求转化为软件表示的过程,这种表示只是描绘出软件的总的概貌。由概要设计说产生大的概要说明书的目的就是进一步细化软件设计阶段得出的软件总体概貌,把它加工成在程序细节上非常接近于源程序的软件表示。

在本阶段主要涉及处理流程的设计、总体结构和模块外部设计、功能分配。在接口设计上有用户接口、外部接口、内部接口;数据结构设计有逻辑结构设计、物理结构设计等等。在接口设计时参考了大量的资软件工程课程设计——心得体会 料。

最后就是编写文档——软件需求说明书、概要分析说明书。

而文档的作用在于:一是可以帮助整理思路。把要完成的目标,系统的结构,每一个模块的功能等整理一下,然后分门别类地写下来,这样在开发的过程中,就有据可依,在需要回过头来修改设计的时候,也有证可考。二是便于交流。三是可以作为以后维护时的参考资料。

三、软件工程课程设计——心得体会

我们进行了为期一周的课程设计。通过这次课程设计,我拓宽了知识面,锻炼了能力,综合素质得到较大提高。安排课程设计的基本目的,在于通过理论与实际的结合、人与人的沟通,进一步提高思想觉悟。尤其是观察、分析和解决问题的实际工作能力,以便培养成为能够主动适应社会主义现代化建设需要的高素质的复合型人才。作为整个学习体系的有机组成部分,课程设计虽然安排在一周进行,但并不具有绝对独立的意义。它的一个重要功能,在于运用学习成果,检验学习成果。运用学习成果,把课堂上学到的系统化的理论知识,尝试性地应用于实际设计工作,并从理论的高度对设计工作的现代化提出一些有针对性的建议和设想。检验学习成果,看一看课堂学习与实际工作到底有多大距离,并通过综合分析,找出学习中存在的不足,以便为完善学习计划,改变学习内容与方法提供实践依据。对我们信息管理与信息系统专业的学生来说,实际能力的培养至关重要,而这种实际能力的培养单靠课堂教学是远远不够的,必须从课堂走向实践。这也是一次预演和准备毕业设计工作。通过课程设计,让我们找出自身状况与实际需要的差距,并在以后的学习期间及时补充相关知识,为求职与正式工作做好充分的知识、能力准备,从而缩短从校园走向社会的心理转型期。课程设计促进了我系人才培养计划的完善和课程设置的调整。

在一个星期的课程设计之后,我们普遍感到不仅实际动手能力有所提高,更重要的是通过对软件开发流程的了解,进一步激发了我们对专业知识的兴趣,并能够结合实际存在的问题在专业领域内进行更深入的学习。

软件工程课程虽已结束,但我对于软件工程的学习才刚刚开始。我体会到项目管理的重要性,随着软件规模、复杂度的不断增加,项目开发中更多的是协作、管理和控制。我学习到很多一般性的方法,例如:需求获取、模块化、计划等等。同时,我也认识到使用计算机解决实际问题的复杂性,人们认识表达的过程不断反复、逐步深化,软件工程方法要提供给程序员们一种更加有效的对客观世界问题域进行形式化的过程方法。

第五篇:软件过程与管理-课程总结

软件过程与管理结课报告

学生姓名:

X X

号:

XXXXXXXXXX 班

号:

116122

指导教师:

罗显刚

中国地质大学(武汉)信息工程学院

在学习完这门课后,我对于软件过程与管理有了一定的理解,下面介绍一下我的心得。 软件过程

软件过程是指一套关于项目的阶段、状态、方法、技术和开发、维护软件的人员以及相关Artifacts(计划、文档、模型、编码、测试、手册等)组成。软件过程是指软件生存周期所涉及的一系列相关过程。过程是活动的集合;活动是任务的集合;任务要起着把输入进行加工然后输出的作用。活动的执行可以是顺序的、重复的、并行的、嵌套的或者是有条件地引发的。

软件过程可概括为三类:基本过程类、支持过程类和组织过程类。基本过程类包括获取过程、供应过程、开发过程、运作过程,维护过程和管理过程。支持过程类包括文档过程、配置管理过程、质量保证过程、验证过程、确认过程、联合评审过程、审计过程以及问题解决过程。组织过程类包括基础设施过程、改进过程以及培训过程。

软件过程主要针对软件生产和管理进行研究。为了获得满足工程目标的软件,不仅涉及工程开发,而且还涉及工程支持和工程管理。对于一个特定的项目,可以通过剪裁过程定义所需的活动和任务,并可使活动并发执行。与软件有关的单位,根据需要和目标,可采用不同的过程、活动和任务。

软件过程是指软件整个生命周期,从需求获取,需求分析,设计,实现,测试,发布和维护一个过程模型。一个软件过程定义了软件开发中采用的方法,但软件过程还包含该过程中应用的技术——技术方法和自动化工具。过程定义一个框架,为有效交付软件工程技术,这个框架必须创建。软件过程构成了软件项目管理控制的基础,并且创建了一个环境以便于技术方法的采用、工作产品(模型、文档、报告、表格等)的产生、里程碑的创建、质量的保证、正常变更的正确管理。

软件过程的成熟等级有五级,分别为初始级,可重复级,定义级,定量管理级,优化级。 (1)在初始级,企业一般不具备稳定的软件开发与维护的环境。常常在遇到问题的时候,就放弃原定的计划而只专注于编程与测试。处于这一等级的企业,成功与否在很大程度上决定于有杰出的项目经理与经验丰富的开发团队。因此,能否雇请到及保有能干的员工成了关键问题。项目成功与否非常不确定。虽然产品一般来说是可用的,但是往往有超经费与不能按期完成的问题。

(2)在可重复级,建立了管理软件项目的政策以及为贯彻执行这些政策而定的措施。基于过往的项目的经验来计划与管理新的项目。企业实行了基本的管理控制。符合实际的项目承诺是基于以往项目以及新项目的具体要求而作出的。项目经理不断监视成本、进度和产品功能,及时发现及解决问题以便实现所作的各项承诺。

通过具体地实施这一级的各个关键过程领域的要求,企业实现了过程的规范化、稳定化。因而,曾经取得过的成功成为可重复达到的目标。

(3)在定义级,有关软件工程与管理工程的一个特定的、面对整个企业的软件开发与维护的过程的文件将被制订出来。同时,这些过程是集成到一个协调的整体。这就称为企业的标准软件过程。

这些标准的过程是用于帮助管理人员与一般成员工作得更有效率。如果有适当的需要,也可以加以修改。在这个把过程标准化的努力当中,企业开发出有效的软件工程的各种实践活动。

同时,一个在整个企业内施行的培训方案将确保工作人员与管理人员都具备他们所需要的知识与技能。

非常重要的一点是,项目小组要根据该项目的特点去改编企业的标准软件过程来制订出为本项目而定义的过程。

一个定义得很清楚的过程应当包括:准备妥当的判据,输入,完成工作的标准和步骤,审核的方法,输出和完成的判据。因为过程被定义得很清楚,因此管理层就能对所有项目的技术过程有透彻的了解。

(4)在定量管理级,企业对产品与过程建立起定量的质量目标,同时在过程中加入规定得很清楚的连续的度量。作为企业的度量方案,要对所有项目的重要的过程活动进行生产率和质量> 一个企业范围的数据库被用于收集与分析来自各项目的过程的数据。这些度量建立起了一个评价项目的过程与产品的定量的依据。项目小组可以通过缩小他们的效能表现的偏差使之处于可接受的定量界限之内,从而达到对过程与产品进行控制的目的。

因为过程是稳定的和经过度量,所以在有意外情况发生时,企业能够很快辨别出特殊的原因并加以处理

(5)在优化级,整个企业将会把重点放在对过程进行不断的优化。企业会采取主动去找出过程的弱点与长处,以达到预防缺陷的目标。同时,分析有关过程的有效性的资料,作出对新技术的成本与收益的分析,以及提出对过程进行修改的建议。整个企业都致力于探索最佳软件工程实践的创新。

项目小组分析引起缺陷的原因,对过程进行评鉴与改进,以便预防已发生的缺陷再度发生。同时,也把从中学到的经验教训传授给其他项目。

降低浪费与消耗也是这个等级的一个重点。

处于这一等级的企业的软件过程能力可被归纳为不断的改进与优化。它们以两种形式进行。一种是逐渐地提升现存过程,另一种是对技术与方法的创新。虽然在其他的能力成熟度等级之中,这些活动也可能发生,但是在优化级,技术与过程的改进是作为常规的工作一样,有计划地在管理之下实行的。

软件管理

同样,在项目开发过程中,还有一个非常重要的方面,就是软件管理 同其他任何工程项目一样,软件项目同样存在一个非常重要的问题,这就是软件管理的问题,而这一问题通常容易被一般的软件开发人员所忽视。在一般的软件工程资料中所讨论的重点也只是软件开发方法,对软件管理问题大多一笔带过。在一个小的软件开发项目中也许还无所谓,但一个大型的软件开发项目如果没有优秀的软件管理人员来领导和协调整个项目,其失败的可能性就很大了。因此有必要引起大家对此问题的重视,这也是本文的目的所在。

作为软件管理人员,应该站在高处来俯瞰整个项目,如果有不识庐山真面目的感觉就不太好了。有了俯瞰全局的意识这一前提,采用适当的管理技术,项目开展就会容易。软件项目的管理工作可以分位四个方面:软件项目的计划、软件项目的组织、软件项目的领导和软件项目的控制,下面对这四个方面进行详细的介绍。

软件开发项目的计划包括定义项目的目标,以及达到目标的方法。他涉及到项目实施的各个环节,带有全局的性质,是战略性的。计划应力求完备,要考虑到一些未知因素和不确定因素,考虑到可能的修改。计划应力求准确,尽可能提高所依据的数据的可靠程度。主要工作集中在软件项目的估算、软件开发成本的估算和软件项目进度安排。软件项目计划的目标是提供一个能使项目管理人员对资源、成本和进度做出合理估算的框架。这些估算应在软件项目开始时的一段有限时间内作出,并随着项目的进展进行更新。

软件项目管理过程开始于项目的计划,在做项目计划时,第一项活动是估算。已经使用的使用技术是时间和工作量的估算。因为估算是其他项目计划活动的基石,而且项目计划又未软件工程过程提供了工作方向,所以我们不能没有计划就着手开发,否则就会陷入盲目性。

估算本身带有风险,估算资源、成本和项目进度时需要经验、有用的历史信息、足够的定量数据和作定量度量的勇气。估算的精确程度受到多方面的影响。首先,项目的复杂性对于增加软件计划的不确定性影响很大,复杂性越高,估算的风险就越高。复杂性是相对度量的,他与项目参加人员的经验有关,比如如果让搞MIS的项目组去搞操作系统设计显然增加了复杂性。其次,项目的规模对于估算的精确性和功效的影响也比较大,因为随着软件规模的扩大,软件相同元素之间的相互依赖、相互影响也迅速增加,因而估算时进行问题分解也会变得更加困难。还有项目的结构化程度也影响项目估算的风险,这里的结构性是指功能分解的简便性和处理信息的层次性,结构化程度提高,进行精确估算的能力就提高,相应风险将减少。此外,历史信息的有效性也影响估算的风险,在对过去的项目进行这综合的软件度量之后,就可以借用来比较准确地进行估算。影响估算的因素远不止这些,比如用户需求的频繁变更给估算带来非常大的影响。

估算的依据是软件的范围,包括功能,性能、限制、接口和可靠性。在估算开始之前,应对软件的功能进行评价,并对其进行适当的细化以便提供更详细的细节。由于成本和进度的估算都与功能有关,因此常常采用功能分解的办法。性能的考虑主要包括处理和响应时间的需求。约束条件则标识外部硬件、可用存储和其他现有系统对软件的限制。

另外软件项目计划还要完成资源估算,包括人力资源、硬件资源和软件资源。在考虑各种软件开发资源时最重要的是人,必须考虑人员的技术水平、专业、人数以及在开发过程各阶段对各种人员的需要。硬件资源作为一种工具投入。软件资源包括各种帮助开发的软件工具,比如数据库等。

工作两估算是最普遍使用的技术。经过功能分解之后,可以估计出每一个项目任务的分解都需要花费若干人年,总计之后就知道软件项目总体工作量。下面就是一个示意性工作量估算表。

软件开发成本主要是指软件开发过程所花费的工作量及其相应的代价。它不同于其他物理产品的成本,它主要包括人的劳动的消耗,人的劳动的消耗所需的代价就是软件产品的开发成本。

开发成本的估算方法有很多种,象简单的代码行技术,任务分解技术,自动估计成本技术,专家判定技术,还有参数方程法,标准值法,以及COCOMO模型法。其中COCOMO (Constructive Cost Model)模型法是一种精确、易于使用的成本估算方法,该模型按其详细程度分为三级:基本COCOMO模型、中间COCOMO模型和详细COCOMO模型。

软件项目的进度安排主要是考虑软件交付用户使用的这一段开发时间的安排。进度安排的准确程度可能比成本估计的准确程度更重要。软件产品可以靠重新定价或者靠大量的销售来弥补成本的增加,但进度安排的落空会导致市场机会的丧失或者用户不满意,而且也会导致成本的增加。因此在考虑进度安排时要把人员的工作量与花费的时间联系起来,合理分配工作量,利用进度安排的有效分析方法严密监视软件开发的进展情况,以使得软件开发的进度不致被拖延。

在进行进度安排时要考虑的一个主要问题是任务的并行性问题。当参加项目的人数不止一人是软件开发工作就会出现并行情况。因为并行任务是同时发生的所以进度计划表必须决定任务之间的从属关系,确定各个任务的先后次序和衔接,确定各个任务完成的持续时间。另外还应注意关键路径的任务,这样可以确定在进度安排中应保证的重点。常用的进度安排方法有两种,即甘特图法和工程网络法。

一个软件项目的组织方式主要有两种。软件项目可以是一个单独的开发项目,也可以与产品项目组成一个完整的软件产品项目。如果是订单开发,则成立软件项目组即可;如果是产品开发,需成立软件项目组和产品项目(负责市场调研和销售),组成软件产品项目组。公司实行项目管理时,首先要成立项目管理委员会,项目管理委员会下设项目管理小组、项目评审小组和软件产品项目组。

①项目管理委员会项目管理委员会是公司项目管理的最高决策机构,一般由公司总经理、副总经理组成。主要职责如下:(1)依照项目管理相关制度管理项目;(2)监督项目管理相关制度的执行;(3)对项目立项、项目撤消进行决策;(4)任命项目管理小组组长、项目评审委员会主任、项目组组长. ②项目管理小组项目管理小组对项目管理委员会负责,一般由公司管理人员组成。主要职责如下:(1)草拟项目管理的各项制度;(2)组织项目阶段评审;(3)保存项目过程中的相关文件和数据;(4)为优化项目管理提出建议。

③项目评审小组项目评审小组对项目管理委员会负责,可下设开发评审小组和产品评审小组,一般由公司技术专家和市场专家组成。主要职责如下:(1)对项目可行性报告进行评审;(2)对市场计划和阶段报告进行评审;(3)对开发计划和阶段报告进行评审;(4)项目结束时,对项目总结报告进行评审。

④软件产品项目组软件产品项目组对项目管理委员会负责,可下设软件项目组和产品项目组。软件项目组和产品项目组分别设开发经理和产品经理。成员一般由公司技术人员和市场人员构成。主要职责是:根据项目管理委员会的安排具体负责项目的软件开发和市场调研及销售工作。

同样,项目的组织结构同样重要。开发组织采用什么形式由软件项目的特点决定,同时也与参加人员的素质有关。通常有三种组织结构模式:

按课题组划分的模式:把开发人员按课题组成小组,小组成员自始至终承担课题的各项任务。该模式适用于规模不大的项目,并且要求小组成员在各方面有技术专长。

按职能划分的模式:把开发项目的软件人员按任务的工作阶段划分为若干工作小组。要开发的软件在每个专业小组完成阶段加工后沿工序流水线向下传递。这种流水作业的方式使用于多项目并行的情况。

矩阵形模型:这种模式是以上两种模式的复合。一方面按工作性质成立一些专门小组,另一方面每一个项目都有它的经理人员负责。每一个软件开发人员属于某一个专门小组,有参加某一个项目的工作。该模式的优点有一方面参加专门组的成员可以在组内交流在各个项目中取得的经验,这更有利于发挥专业人员的作用;另一方面,各个项目有专门的人员负责,有利于软件项目的完成。这种模式比较适合于规模比较大的项目。

组织结构的最后一层是程序设计小组的组织形式。通常认为程序设计工作是按独立的方式进行的,程序人员独立地完成任务。但这并不意味着相互之间没有联系。一般在人数比较少时组员之间的联系比较简单,但随着人数的增加,相互之间的联系变得负责起来。小组内部人员的组织形式对对生产率有着十分重要的影响。

在软件管理中的组织形式方面,常见的小组组织形式有三种,这三种形式可以灵活使用。 1. 主程序员制小组:相当于组长负责制,小组的核心由一位主程序员,另外配备两到三位技术员、一位后援工程师组成。这种组织结构突出主程序员的领导,强调主程序员与其他技术人员的联系。

2. 民主制小组:在民主制小组中,遇到问题可以在组员之间平等地交换换意见,工作组目标的制定以及决定的作出都由全体人员参加。这种组织形式强调发挥每个成员的积极性,并要求每个成员发挥主动精神和协作精神。

3. 层次式小组:在层次式小组中,组内人员分位三级:组长(项目负责人)一人负责全组工作,他直接领导两到三名高级程序员,每位高级程序员通过基层小组,管理若干位程序员。这种结构比较适合于项目本身就是层次结构的课题。

在另一个方面来说,合理地配备人员是成功地完成软件项目的切实保证。所谓合理地配备人员应包括按不同阶段适时运用人员,恰当掌握用人标准。一般来说,软件项目不同阶段不同层次技术人员的参与情况是不一样的。下图是典型的软件开发人员参与情况曲线。

在人力配备问题上,由于配置不当,很容易造成人力资源的浪费,并延误工期。特别是采用恒定人员配备方案时在项目的开始和最后都会出现人力过剩,而在中期又会出现人力不足的情况。

上一篇:人际关系心理辅导方案下一篇:软件项目管理沟通管理