Copyright@TsinghuaUniversityOct.13,2006Page1董渊(SystemSoftware&SoftwareEngineering)DepartmentofComputerScience&TechnologyTsinghuaUniversity软件过程改进Copyright@TsinghuaUniversityOct.13,2006Page2内容概要基本概念能力成熟度模型:CMM–发展历史和基本内容–CMM的级别和关键实践走向成熟——软件过程改进实践–软件配置管理Copyright@TsinghuaUniversityOct.13,2006Page3软件过程改进产品控制–事后–被动–个体过程控制–所有环节–主动–全体Copyright@TsinghuaUniversityOct.13,2006Page4软件过程改进过程模型及实例–一类软件项目的共性–软件机构的项目管理和技术管理手段过程改进的两种驱动方式–目标驱动根据预先给定的目标,自顶向下开展–缺陷驱动根据实施过程中过程缺陷的反馈,有针对性的改进Copyright@TsinghuaUniversityOct.13,2006Page5过程质量–静态质量:对建模方法的评价以某种特定的描述形式存在时,即描述本身的属性—功能度—易使用度—准确度—易维护性–动态质量:对过程能力的评价在过程执行运作过程中所表现出来的运作能力按照运作时与外界的交互方式的不同,可分为–封闭式的软件过程–非封闭式的软件过程Copyright@TsinghuaUniversityOct.13,2006Page6过程与技术两方面的权衡欧洲委员会(EC)资助的ESSI(EuropeSoftwareandSystemInitiative),在SBP(SoftwareBestPractice)计划中对软件企业(或开发单位)进行了调查–问题:为提高质量和效率,最愿意投资于技术还是过程改善?–结果:大公司(大于500人)绝大部分愿意投资于过程改善中等公司(50-500人)技术和过程改善投资基本对半小公司(50人以下)绝大部分愿意投资于技术(购买工具)–原因:过程改善投资力度大,周期长Copyright@TsinghuaUniversityOct.13,2006Page7能力成熟度模型(CMM)CMM–CapabilityMaturityModel,软件过程成熟度模型–定义、实施、度量、控制和改进软件过程的指南(MarkPaulk,WattsHumphrey等),主要流行于美国及印度SEI–SoftwareEngineeringInstitute,软件工程研究所–位于美国Pennsylvania州PittsburghCarnegieMellon大学,成立于1984年–任务是在软件工程领域中努力提高依赖软件的系统质量,促进软件开发和维护的工程化管理,为军方服务–开始主要用于大型软件项目的招投标活动的评审依据;后应用于软件机构的内部过程改进Copyright@TsinghuaUniversityOct.13,2006Page8CMM发展过程1986年11月应美国政府要求,SEI和Mitre公司合作,共同开发一种模型,用以评估软件承包商能力,给出软件组织改进软件过程的过程能力成熟度框架。1987年6月SEI提出初始模型框架,9月给出包含有101个问题的初步成熟度提问单(Questionnaire)。1991年推出CMMVersion1.0,这是SEI对软件过程成熟度框架和初始成熟度提问单经过四年实践的基础上提出的。1992年4月召开了有400位软件专业人员参加的CMM研讨会,针对CMMV1.0开展了深入的讨论,提出了改进意见。Copyright@TsinghuaUniversityOct.13,2006Page9CMM发展过程1993年SEI提出了CMMVersion1.1技术报告文本,有70页之多,对关键实践的描述文本有450页。1997年经过对V1.1大量使用,吸收多方面的实践经验,再次修改,形成CMMVersion2.0。SEI与Mitre公司承担项目1986过程成熟度框架成熟度提问单1987CMMV1.01991CMMV1.11993CMMV2.01997Copyright@TsinghuaUniversityOct.13,2006Page10CMM普及1999,全球共1330次评测,总计评测项目5452项–7.2%美国外,国别34–商业机构56.1%,美国国防供应商29.8%,军方和政府机构10.5%–1级43.2%;2级34.2%;3级17.3%;4级4%;5级1.4%–2级比例最高的为25-100人的机构,3级为100-1000人,4级为1000-2000人,5级2000人以上2003:全球范围CMUSEI注册的CMM5级42家,CMM4级组织87家中国:–华为印度研究所,1999–摩托罗拉(中国)软件中心和摩托罗拉系统方案部–东软股份,2002Copyright@TsinghuaUniversityOct.13,2006Page11基本概念软件过程软件过程能力–企业实施软件过程所能实现预期目标的程度,可用于预测企业的软件过程水平。软件过程行为–企业在项目开发中遵循其软件过程所能得到的实际结果。软件过程成熟度–软件过程行为可被定义,预测和控制并被持续性提高的程度。主要用来表明不同项目所遵循的软件过程的一致性。软件能力成熟度等级–企业的软件开发在由低到高成熟化演进过程中所普遍面临的具有一定成熟度标志特征的平台。Copyright@TsinghuaUniversityOct.13,2006Page12基本概念成熟:–项目开发是依据企业早已明确的过程准则来实施;开发结果较少以来个人能力和自然因素;项目有过程控制并可对整个生产作出预测;产品质量得到有效监控(借助与客观定量化的数据);历史经验得以积累并可系统地用于现行和未来的项目之中。不成熟–没有明确的软件过程体系可以依据;无法对生产进行预测;不严格执行生产过程;质量无法保证;无健全的过程控制及质量控制体系;项目开发没有准则可遵循;开发结果主要依据项目小组及个人的带有主观因素的能力发挥。Copyright@TsinghuaUniversityOct.13,2006Page13CMM族Konrad.M于1996描述了SEI开发的5种CMM-based模型,初始的CMM是针对软件过程的,后发展到其它相关领域。–SW-CMM软件(Software)–SA-CMM软件获取(SoftwareAcquisition)–SE-CMM系统工程(SystemEngineering)–IPM-CMM集成产品管理(IntegratedProductManagement)–P-CMM人员(People)–TSP小组软件过程(TeamSoftwareProcess)–PSP人员软件过程(PersonnelSoftwareProcess)–CMMI把分散的各个CMM集成在一起–……Copyright@TsinghuaUniversityOct.13,2006Page14CMM定位CMM是一个模型,“事实上的标准”CMM描述了软件项目希望成功应做的事(What)CMM並未描述这些事应怎么做(How),这应由组织在规程(Procedure)中回答。CMM较少,甚至没有说明为什么这样做(Why)CMM针对的是大型、复杂软件项目Copyright@TsinghuaUniversityOct.13,2006Page15CMM结构5个等级,18个核心过程域,52个目标,316个核心实践ProcessCapabilityGoalsImplementationorInstitutionalizationInfrastructureorActivitiesMaturityLevelsKeyProcessAreasCommonFeaturesKeyPracticesindicatecontainorganizedbycontainachieveaddressdescribeCopyright@TsinghuaUniversityOct.13,2006Page16CMM5个成熟度等级经反馈得以改进的过程结果生产率和质量风险已管理级保持优化的组织,但仍为人员密集的过程技术变更、问题分析、问题预防过程度量、过程分析、量化质量计划培训、测试、技术常规和评审、过程关注、标准和过程项目管理、项目策划、配置管理、软件质量保证(量化的)已度量的过程(量化的)已定义且制度化的过程(直觉的)过程依赖于个人个别的、混乱的过程优化级已定义级可重复级初始级四五三二一主要需解决的问题特征等级Copyright@TsinghuaUniversityOct.13,2006Page17CMM5个成熟度等级初始级(Initial)–无序、混乱的软件过程,项目成功依赖于杰出的项目负责人和有经验、有能力的软件开发队伍。现象往往表现为过程无一定之规,项目进度、预算、功能及产品质量无法保证,项目的实施不可预测。组织缺乏明文的管理办法,软件工作没有稳定的环境,制定了计划又不执行,反应式驱动工作开展。紧急情况下已定的规程丢在一边,急于编码和测试。个别项目的成功依赖于某个有经验的管理人员;个别管理人员能顶住削减过程的压力,但他们离职则全然不同。规定的过程无法克服由于缺乏有效管理带来的不稳定性。–能力:不可预测Copyright@TsinghuaUniversityOct.13,2006Page18CMM5个成熟度等级可重复级(Repeatable)–建立了基本的软件过程,可跟踪成本、进度、功能和质量。–基于以往项目经验,制定了过程实施规范,项目管理过程稳定,软件机构可重复以前成功项目中所进行的软件项目工程实践。–如有分包,其质量也能得到控制。–能力:稳定的策划和跟踪Copyright@TsinghuaUniversityOct.13,2006Page19CMM5个成熟度等级已定义级(Defined)–完整的软件过程,实现了标准化和文档化–针对特定项目,可将标准软件过程(OSSP)进行剪裁。–固定的过程工作小组(SEPG)–制定和实施了人员培训大纲,保证人员能够胜任岗位知识和技能要求–管理活动和过程活动稳定,成本、进度、功能和质量可控,软件产品质量具有可追溯性。–能力:稳定的管理和技术活动Copyright@TsinghuaUniversityOct.13,2006Page20CMM5个成熟度等级已管理级(Managed)–对软件过程(过程模型及过程实例)和生产率和软件产品质量建立了定量的目标,所有重要的过程活动都是可度量的。–新应用领域的风险可知可控,可在定量的范围内预测过程和产品的质量趋势,并在偏离时即使予以纠正。–能力:过程可度量Copyright@TsinghuaUniversityOct.13,2006Page21CMM5个成熟度等级优化级(Optimized)–不断的过程改进。可得到软件过程有效性的统计数字,并用于对新技术的成本/效率分析,优化出最佳实践方法。自知过程的薄弱环节,可预防缺陷的出现。可通过对当前过程的分析,评价对新技术或将出现的变更作出评价。重视探索创新活动,并将成功的创新推广。出现的缺陷得到分析,找出原因,防止再次发生,教训为其它项目吸取。–能力:过程可优化Copyright@TsinghuaUniversityOct.13,2006Page22初始级有制度的过程标准、一致的过程可预测的过程不断改进的过程可重复级已确定级已管理级优化级Copyright@TsinghuaUniversityOct.13,2006Page23关键过程域KeyProcessArea软件机构为改进其软件过程所应集中关注的区域,即对改进过程能力最为有效的实践为达到成熟度所必须着手解决的问题和必须满足的要求共1