项目管理与质量保证CMM我国软件产业存在的问题(1/5)1.观念有待创新a)观念创新i.软件企业对软件技术的了解大于对应用的了解ii.技术与市场脱离iii.软件服务将企业运营的重心由产品转向服务b)技术创新i.过于追求技术先进性ii.培养软件关键技术iii.加强核心产品在国际上的竞争力我国软件产业存在的问题(2/5)1.观念有待创新c)管理创新i.多数企业缺乏软件工程的管理ii.缺乏对软件过程的控制iii.所有行为基本是反应式的iv.软件过程是临时拼凑的v.对进度、经费的估计无实际根据vi.难于控制质量vii.进度滞后时,多数通过减少质量保证活动来赶工viii.人员安排不合理,忙的太忙、闲的太闲我国软件产业存在的问题(3/5)2.软件人才短缺a)缺乏软件设计和技术管理人才b)软件人才总量低c)软件人才结构不合理d)人才培训困难i.办学资格难于申请ii.师资匮乏iii.政府不扶持我国软件产业存在的问题(4/5)3.没有软件的监理机制a)软件开发采用自营制b)用户无法了解项目进度c)缺乏对开发过程有效的监督和控制我国软件产业存在的问题(5/5)4.应重视网络化、服务化、国际化的发展趋势a)网络化趋势•分布计算、移动计算、智能网络、网络通信等b)服务化趋势•开发周期缩短•软件自动升级•提供多种服务,由用户定购c)国际化趋势如何按时、按预算、按客户需求生产出符合质量要求的软件?–请使用软件能力成熟度模型(SoftwareCapabilityMaturityModel,SW-CMM)CMM产生的理论基础(1/2)1.20世纪30年代,谢华特(WalterShewart)在贝尔实验室工作时,提出了一套运用统计学进行质量管理的控制原则。2.统计学家丹明(W.EwardsDeming)和佐兰(JosephJuran)将其理论加以完善并付诸于实践。3.后来丹明又提出了一种称为丹明链式反应的现象。4.这些学者的做法,被人们称为全面质量管理(TotalQualityManagement,TQM)CMM产生的理论基础(2/2)5.1979年,一个质量管理学家克罗斯比(PhilipCrosby),成立了一家名为质量管理顾问的公司。专门从事质量问题的研究。6.IBM公司的拉德斯(RonRadice)和汉弗莱(WattsHumphrey)将全面质量管理思想应用于软件工程。7.1986年,汉弗莱从IBM退休后,加入了卡耐基.梅隆大学的软件工程研究所CMM的发展过程(1/2)1.1986年11月,卡耐基.梅隆大学的软件工程研究所(CMU/SEI)应美国联邦政府的要求,在Mitre公司的协助下,于1987年9月开发了一套软件能力成熟度框架和一套软件成熟度问卷,用于评估软件供应商的能力2.1991年,SEI自己总结了成熟度框架和初版成熟度问卷的实践经验,并以此为基础,推出了CMM1.0版CMM的发展过程(2/2)3.1992年4月,SEI举行了一个CMM的研讨会,与会的大约有200名富有经验的软件专家。SEI在广泛听取他们的意见之后,于1993年推出了CMM1.1版。4.按原计划SEI将于1999年推出CMM2.0版,但美国国防部办公室要求SEI推迟发布……5.2001年12月,SEI完成了一个替代项目——能力成熟度模型集成(CapabilityMaturityModelIntegration,CMMI)CMM的概况(1/4)1.CMM提供了一个软件过程改进的框架该框架与软件生命周期无关,也与所采用的开发技术无关根据该框架开发企业内部具体的软件过程,可以极大程度地提高按计划的时间和成本提交有质量保证的软件产品的能力CMM的概况(2/4)2.CMM重视企业的软件过程能力CMM认为保障软件质量的根本途径就是提升企业的软件生产能力企业的软件生产能力取决于企业的软件过程能力,特别是在软件开发和生产中的成熟度项目的执行不再是一个黑箱CMM的概况(3/4)3.CMM是在软件工程基础上提出来的CMM认识到在开发的过程中,某些关键过程域(KPA)才是软件开发的重点CMM描述了一个有效的软件过程的各个关键元素,指出了一个软件企业如何摆脱杂乱无章的、不成熟的软件过程,形成一个成熟的、有纪律的软件过程所必经的进化、提高的途径——判断企业当前的过程成熟状况,找出在改进过程中急需解决的若干问题,然后依据CMM选择过程改进策略,提升企业的软件过程能力CMM的概况(4/4)4.CMM是动态的质量管理系统标准与ISO9000有所不同5.CMM是一个指南CMM列举的实践几乎覆盖了软件企业计划、软件开发和维护工作管理的所有活动规划出了5个成熟度级别企业按部就班,就可以保证平稳提高自身的软件过程和产品质量什么是CMM的评估?1.CMM评估包括5个等级,共计18个关键过程域,52个目标,300多个关键实践。2.每一级的评估由SEI授权的主任评估师领导一个评审小组进行,该小组成员大部分来自企业内部。3.评估过程包括员工培训、问卷填写和统计、文档审查、数据分析、与企业的高层领导讨论和撰写评估报告。4.评估结果由主任评估师签字生效。评估周期有多长?–12~30个月如何取得主任评估师资格?1.需要有10年以上的软件开发经验2.两年以上的软件项目管理经验3.计算机相关专业硕士以上学位4.要在SEI接受培训5.要经过两次以上的CMM评估全程实习这样可以拿到预备评估师资格1.要得到已有主任评估师资格的人推荐2.再次经过SEI的培训,并通过SEI认证有关主任评估师……该资格非终身制,要继续保持,每年至少要参加两次CMM评估SEI有权取消你的主任评估师资格主任评估师收入如何?每天1500美元还可以考评估咨询师有关主任评估师……截止至2001年,全世界共有313个主任评估师2002年,上升至400多位我国于2002年5月有了中国的首批主任评估师北京航空航天大学软件所的周伯生和吴超英老师世界的CMM评估情况截至2000年6月底,全世界有1269家软件公司和机构通过了不同级别的认证5级38家,4级50家,3级210家澳大利亚和以色列各有1家4级,中国1家5级,其余均为印度和美国企业印度Infosys,从1991到1999通过了5级我国的CMM评估情况截至2003年底,我国有104家软件公司和机构通过了不同级别的认证5级7家,4级4家,3级26家,2级67家5级中只有东软和用友为民族企业截至2003年9月,世界上从4到5的组织最快用了6个月时间国内某家从3到5,用了6个月,同时拿下了CMMI从SW-CMM到CMMI的过渡,某公司花了8000个人时Next1.CMM的具体介绍CMM的专业术语(1/4)1.过程(Process):为实现给定目标所执行的一系列操作步骤。2.软件过程(SoftwareProcess):软件开发人员开发和维护软件及相关产品的一套行为、方法、实践和革新。其中,相关产品是指项目计划、设计文档、编程、测试和用户手册等。软件过程的定义完善与否标志着该企业的成熟程度CMM的专业术语(2/4)3.软件过程能力(SoftwareProcessCapablity):描述了在遵循软件过程后能够达到的预期结果的界限范围。该指标是对能力的一种衡量,用它可以预测一个组织(企业)在承接下一个软件项目时,所能期望得到的最可能的结果。CMM的专业术语(3/4)4.软件过程性能(SoftwareProcessPerformance):表示遵循一个软件过程后所得到的实际结果。软件过程性能关注的是实际得到的结果。软件过程能力关注的是期望得到的结果。软件过程能力受限于它的环境,软件过程性能也不可能充分反映软件过程的整体能力。CMM的专业术语(4/4)5.软件过程成熟度(SoftwareProcessMaturity):指一个具体的软件过程被明确地定义、管理、评价、控制及产生实效的程度。软件过程成熟度包含着能力的一种增长潜力,同时也表明了组织(企业)实施软件过程的实际水平。不成熟的软件组织特征(1/3)1.在不成熟的软件组织中,软件过程实施前一般没有计划,往往是在项目开发的过程中由实际工作人员和管理员临时计划。甚至有的时候,即时建立了一个软件过程计划,在开发的过程中也不按计划进行。不成熟的软件组织特征(2/3)2.不成熟的软件组织没有一个客观的基准来判断产品质量、及解决产品和过程中的问题,因此产品质量很难得到保证。一些为提高质量的环节经常会因为赶项目进度而减少或取消。在产品交付前,对用户来说,一切都是不可见的。不成熟的软件组织特征(3/3)3.不成熟的软件组织工作性质是反应式的,通常项目管理者要集中精力去解决各种临时出现的各种疑难问题。4.不成熟的软件组织由于没有一套实事求是的估算进度、预算的方法,导致经常发生经费超支和项目超时等危机。当最后期限即将来临时,为了按照原定时间完成任务,往往在产品的功能和质量上大打折扣。成熟的软件组织特征(1/3)1.成熟的软件组织自身应该具备组织和管理软件开发维护的过程能力。2.成熟的软件组织能够及时准确地向工作人员通报实际软件过程,有条不紊地按计划好的软件过程开展工作。必要时,及时地对软件过程定义加以更新,使其与实际工作方法相吻合。通过测试和成本、收益分析等方式来改进过程,使软件过程不断提高。成熟的软件组织特征(2/3)3.成熟的软件组织对各项目的软件过程,有非常明确的规则。它要求每个人的职责清晰和明确(各负其责、协同工作和最大限度发挥个人潜力),它要求全体人员能普遍地、积极地参与改进软件过程的活动。4.成熟的软件组织中管理者可以方便地监督软件产品的质量以及生产这些产品的开发维护过程。成熟的软件组织特征(3/3)5.成熟的软件组织具有一个评价产品质量,分析软件产品和过程问题的客观的、量化的基础。对进度和预算的制定是基于以往积累的经验,结果是合理和可行的。对产品的成本、进度、功能、性能和质量的期望值通常是能够实现的。6.成熟的软件过程中所有参与者都明白按要求工作的意义,并自觉遵循软件过程的有关规则,在一种有序的状态下开展软件工程活动。CMM的体系结构——分级标准(1/2)1.初始级(Initiallevel)软件过程的特点是无秩序的,甚至是混乱的。2.可重复级(Repeatablelevel)建立了基本的项目管理过程来跟踪成本、进度和功能特性。3.已定义级(Definedlevel)已将管理和工程活动的软件过程文档化、标准化,并形成了整个软件组织的标准软件过程。CMM的体系结构——分级标准(2/2)4.已管理级(Managedlevel)收集对软件过程和产品质量的详细度量值,对软件过程和产品都有定量的理解和控制。5.优化级(Optimizinglevel)通过对来自过程方面、来自新概念方面和来自新技术方面的各种有用信息进行定量分析,能够不断地、持续性促使过程不断改进。初始级可重复级已定义级已管理级优化级纪律化的过程标准、一致的过程可预测的过程不断改进的过程CMM的体系结构——可视性(1/1)级别1:软件过程是一个不定形的实体(一个黑盒),项目过程的可视性有局限性。级别2,生成软件的过程看成是一系列黑盒相连,在传输节点上具有管理可视性。级别3,盒子的内部结构,项目定义的软件过程中的任务,具有可视性。级别4,定义的软件过程得到定量使用和控制。管理人员可以测量项目的进度和存在的问题。级别5,不断尝试新的和改进的软件开发方法,以受控方式提高生产率和软件质量。成熟度级别过程能力CMM结构关键过程域公共特性关键实践目标实施及规范基础设施及活动CMM的体系结构——内部结构(1/2)CMM由5个成熟度等级组成,每个成熟度等级有着各自的功能。除第1级外,CMM的每一级都是按照完全相同的内部结构构成的。成熟度等级为顶层,不同的成熟度等级反映了软件组织的软件过程能力和该组织可能实现预期结果的程度。CMM的体系结构——内部结构(2/2)每一个成熟度级别中,包含了实现这一级目标的若干关键过程。每一级的