您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > 软件项目管理与案例分析第3章
华中科技大学软件学院THESCHOOLOFSOFTWAREENGINEERINGOFHUST第3章软件开发过程管理2THESCHOOLOFSOFTWAREENGINEERINGOFHUST本章内容提要CMM和ISO9000传统软件开发生命周期模型扩展软件开发生命周期模型3.1质量计划3.4案例分析3.5本章小结3.6复习思考题3.73.23.33THESCHOOLOFSOFTWAREENGINEERINGOFHUST软件过程是指人们用于开发和维护软件及其相关产品的一系列活动、方法、实践和革新。软件开发过程管理是指在软件开发过程中,除了先进技术和开发方法外,还有一整套的管理技术。软件过程改进是针对软件生产过程中会对产品质量产生影响的问题而进行的,它的直接结果是软件过程能力的提高。现在常见的软件过程改进方法:ISO9000,SW-CMM和由多种能力模型演变而来的CMMI。3.1CMM和ISO90004THESCHOOLOFSOFTWAREENGINEERINGOFHUST3.1.1SW-CMM和CMMISW-CMM简介为了保证软件产品的质量,1991年美国卡内基·梅隆大学软件工程研究所(CMU/SEI)将软件过程成熟度框架进化为软件能力成熟度模型(CapabilityMaturityModelForSoftware,简称SW-CMM),并发布了最早的SW-CMM1.0版。SW-CMM为软件企业的过程能力提供了一个阶梯式的进化框架,阶梯共有五级。5THESCHOOLOFSOFTWAREENGINEERINGOFHUST3.1.1SW-CMM和CMMI1初始级2可重复级3已定义级4已管理级5优化级无序、混乱的软件过程。依赖个别人的努力和机遇。建立基本的项目管理过程。相似项目,重复以往成果。文档化、标准化和标准的软件软件过程。软件过程和产品质量有详细的度量标准。持续的对过程进行改进。图CMM分级标准6THESCHOOLOFSOFTWAREENGINEERINGOFHUST3.1.1SW-CMM和CMMIKPA及KP除第一级外,SW-CMM的每一级都是按完全相同的结构组成的。每一级包含了实现这一级目标的若干关键过程域(KPA),每个KPA进一步包含若干关键实施活动(KP),无论哪个KPA,它们的实施活动都统一按六个公共属性进行组织,即每一个KPA都包含六类KP:1.目标2.实施保证3.实施能力4.执行活动5.度量分析6.实施验证7THESCHOOLOFSOFTWAREENGINEERINGOFHUST3.1.1SW-CMM和CMMICMMI简介由于不同领域能力成熟度模型存在不同的过程改进,重复的培训、评估和改进活动以及活动不协调等一些问题。于是由美国国防部出面,美国卡内基·梅隆大学软件工程研究所(CMU/SEI)于2001年12月发布的CMMI1.1版本包括四个领域:软件工程(SW)、系统工程(SE)、集成的产品和过程开发(IPPD)、采购(SS)。8THESCHOOLOFSOFTWAREENGINEERINGOFHUST3.1.1SW-CMM和CMMICMMI有两种不同的实施方法连续式--主要是衡量一个企业的项目能力阶段式--主要是衡量一个企业的成熟度连续式与阶段式所包含的过程域是完全一致的。两者的区别主要在于过程域的组织方式不同,阶段式是用来描述组织整体上的成熟度,而连续式关注的是组织单个过程域的能力。如果组织注意力主要集中在某几个过程域上时,则采用连续式比较合适9THESCHOOLOFSOFTWAREENGINEERINGOFHUSTCMMI的五个台阶完成级管理级定义级量化管理级优化级每一个台阶都是上面一阶台阶的基石。要上高层台阶必须首先踏上较低一层台阶。10THESCHOOLOFSOFTWAREENGINEERINGOFHUST与SW-CMM的结构相比,CMMI的模型结构显得更加复杂与精细。CMMI从过程域所有的实践提炼出了多个过程域所共有的实践,称为一般实践,将其目标称为一般目标,其余特定于某个过程域的实践与目标称为特定实践与特定目标。这样模型取得了相对SW-CMM更高的抽象度与适应范围。目标(一般目标与特定目标)首次作为模型构成成分出现,这表明CMMI对过程活动的结果投入了更多的关注。11THESCHOOLOFSOFTWAREENGINEERINGOFHUST3.1.2ISO9000质量标准ISO9000所谓“ISO9000”不是指一般意义上的一个质量保证标准,而是一族系列标准的统称。作用─强化品质管理,提高企业效益;增强客户信心,扩大市场份额;─获得了国际贸易“通行证”,消除了国际贸易壁垒;─节省了第二方审核的精力和费用;─在产品品质竞争中永远立于不败之地;─有效地避免产品责任;─有利于国际间的经济合作和技术交流。12THESCHOOLOFSOFTWAREENGINEERINGOFHUST3.1.3三者之间的比较选择SW-CMM还是CMMI的考虑─实施企业的业务特点。实施企业的业务特点:如果企业的规模不是很大,业务又集中在软件开发为主,那么还是软件CMM比较适用。如果企业的规模比较大(开发人员100人以上),并且业务不仅仅集中在软件开发,还包括硬件开发哪怕是硬件代理(采购)都可以考虑实施CMMI。13THESCHOOLOFSOFTWAREENGINEERINGOFHUST实施企业对过程改进的熟悉程度:如果企业已经实施过ISO9000,并且取得了较好的效果,那么可以考虑实施CMMI。如果企业虽然没有实施过CMM,但是对于过程改进一直比较关注,接受过不少相关培训,甚至能够自发的进行一些过程改进,那么也可以考虑实施CMMI。如果过去没有接触过类似的工作,那么最好先从软件CMM2级开始,首先建立持续过程改进的思路。另外,软件CMM的要求也比CMMI要稍低一些。可以适当降低实施的难度14THESCHOOLOFSOFTWAREENGINEERINGOFHUST─实施企业对过程改进的熟悉程度。实施企业对过程改进的熟悉程度:如果企业已经实施过ISO9000,并且取得了较好的效果,那么可以考虑实施CMMI。如果企业虽然没有实施过CMM,但是对于过程改进一直比较关注,接受过不少相关培训,甚至能够自发的进行一些过程改进,那么也可以考虑实施CMMI。如果过去没有接触过类似的工作,那么最好先从软件CMM2级开始,首先建立持续过程改进的思路。另外,软件CMM的要求也比CMMI要稍低一些。可以适当降低实施的难度15THESCHOOLOFSOFTWAREENGINEERINGOFHUST─实施企业对过程改进项目的预算。实施企业对过程改进项目的预算:不论怎样,几乎可以肯定地说,实施CMMI的费用肯定要比实施CMM高出一些。而就模型本身来看,CMMI的2级7个过程区域在内容上并不比软件CMM的2级6个关键过程区域多多少。这样的话,我们完全可以“少花钱、多办事”,也就是说可以采用CMM的实施和评估方法,但可以在过程改进的时候参考CMMI的要求,这样就经济很多。16THESCHOOLOFSOFTWAREENGINEERINGOFHUST----实施企业是否可以使用阶段式的演进路线:如果企业只希望单方面的提高自己在项目管理、工程活动、支持活动或者过程管理四个方面中的某些方面的能力,那么就只能应用CMMI的连续表示方法。如果实施企业可以接受成熟度级别的思路(目前看国内大多数企业还是比较习惯于成熟度级别的),那么就不一定必须选择CMMI了。17THESCHOOLOFSOFTWAREENGINEERINGOFHUST----------实施CMM与CMMI可以平滑的转换。CMMI并不要求一家企业必须先做CMMI的2级然后再向更高的成熟级别演进,评估的时候也没有这样的要求。另外,CMMI的评估都会根据被评估的成熟度级别,检查所有不高于该级别的过程区域。换句话说,一个企业在CMM正式评估中达到了2级的成熟度,将来改为基于CMMI进行过程改进。在CMMI3级的正式评估时,CMMI2级的内容同样要进行检查。如果我们能够在做CMM2级的时候就按照CMMI的要求实施,效果没有任何的折扣,但对于实施企业来说,会节省很多在培训和评估方面的“额外”费用。(此处的“额外”费用是指CMMI收费比CMM高出的部分)18THESCHOOLOFSOFTWAREENGINEERINGOFHUSTISO9001与CMM的关系─ISO9001和CMM既有区别又相互联系,两者不可简单地互相替代。─取得ISO9001认证并不意味着完全满足CMM某个等级的要求。─取得CMM第2级(或第3级)不能笼统地认为可以满足ISO9001的要求。19THESCHOOLOFSOFTWAREENGINEERINGOFHUST案例1W公司为了推行CMM,组建了独立的QA部门。尽管在W公司的内部宣传材料上对QA的作用进行了大肆的宣传,认为其对于CMM的推行和项目管理都具有重要作用,但是实际上QA人员的资历都相对较浅,对开发过程,技术和工具都缺乏必要的了解。只能够照搬一些条文来要求开发人员,开发人员对此并不认账,认为QA人员是没事找事。另外,QA这个岗位在薪酬和升迁方面毫不吸引人20THESCHOOLOFSOFTWAREENGINEERINGOFHUST为了避免QA部门成为新手和项目组淘汰人员的集中地,QA部门经理设法推行项目经理锻炼制度,让项目经理到QA部门锻炼一段时间,然后继续担任项目经理或者升迁。但是因为此项制度没有得到有效的支持,项目经理在QA部门工作一段时间以后竟然没有开发部门愿意接收,就更谈不上升迁了。QA部门在W公司的威望江河日下。21THESCHOOLOFSOFTWAREENGINEERINGOFHUSTQA人员对于质量保证和CMM的实施至关重要,如果我们认可QA人员对于公司的价值,那就必须在人才和待遇上向QA部门倾斜22THESCHOOLOFSOFTWAREENGINEERINGOFHUSTH公司和Z公司都在研发相同类型的C产品。H公司在推广CMM,采用了相对严格的过程规范,并且把相对重要的部分外包给了印度的CMM5级公司。这些手段Z公司都没有采用,但是Z公司却抢在了前面。Z公司的“秘密武器”是一种形式化语言—SDL,Z公司采用SDL作为设计工具,这样C产品的相当一部分代码可以由SDL工具自动生成,而且在设计阶段就可以进行仿真运行,这样就大大地提高了效率并减少了缺陷。H公司虽然采用了相对严格的过程规范,但是因为全部代码为手工编制,所以,无论是效率还是质量,H公司都落后了23THESCHOOLOFSOFTWAREENGINEERINGOFHUSTH公司显然忽视了先进技术可能为生产率带来的进步,通过了CMM高级别的评估,只能说明被评估的组织机构在过程控制上做得更加细致,但是并不能够保证你的开发过程是高效的。某些沉迷于CMM的组织机构忘记了先进的软件工程技术的重要性24THESCHOOLOFSOFTWAREENGINEERINGOFHUST本章内容提要CMM和ISO9000传统软件开发生命周期模型扩展软件开发生命周期模型3.1质量计划3.4案例分析3.5本章小结3.6复习思考题3.73.23.325THESCHOOLOFSOFTWAREENGINEERINGOFHUST软件生命周期软件从需求确定、设计、开发、测试直至投入使用,并在使用中不断地修改、增补和完善,直至被新的系统所替代而停止该软件的使用的全过程。可划分为以下子阶段1.可行性研究2.需求分析和定义3.总体设计4.详细设计5.编码(实现)6.软件测试、运行/维护据此相继产生了瀑布模型、螺旋模型、进化模型、原型模型、增量模型等。本节分别对这几种传统的软件开发生命周期模型予以介绍。3.2传统软件开发生命周期模型26THESCHOOLOFSOFTWAREENGINEERINGOFHUST3.2.1瀑布模型系统需求软件需求分析设计编码测试运行瀑布模型总结文档驱动的模型阶段间具有
本文标题:软件项目管理与案例分析第3章
链接地址:https://www.777doc.com/doc-794649 .html