软件能力成熟度模型CMM(CapacityMaturityModel)计算机学院软件工程系张庆生zhangqs@xupt.edu.cn摘要•绪论•CMM体系结构•软件过程评估的国际标准•可重复级(第2级)•已定义级(第3级)•已管理级(第4级)•优化级(第5级)•提问单软件能力成熟度的结构软件能力成熟度模型的分层结构4CMM模型的可重复级•CMM2级的过程基本特征、关键过程域、需求管理•CMM2级的软件项目计划、项目跟踪和监控•CMM2级的软件转包合同管理、软件质量保证•CMM2级的软件配置管理4CMM模型的可重复级•CMM2级的过程基本特征–CMM2级是在同类项目成功经验上,建立必要过程准则来确保同类项目再一次的成功。•CMM2级的基本特征如下–可重复、有纪律、项目稳定和过程有效•在可重复级(等级2)上,建立了项目软件管理的方针和规程,有助于将类似项目的经验用于对新项目进行规划和管理,使项目软件的管理过程有效且制度化。这样,尽管项目软件所实施的具体过程可能不同,但可运用以前项目开发的成功实践。4CMM模型的可重复级•CMM2级的过程基本特征•在可重复级(等级2)上,各软件项目所建立和实施的方针、规程和软件过程,已进化为整个软件开发组织的行为。这使得组织的各个项目都能准确、一致地执行由组织规定的软件过程管理要求,组织的这种过程能力称为有纪律的。4CMM模型的可重复级•CMM2级的过程基本特征•在可重复级(等级2)上,对新项目的策划和管理是根据以往类似的成功项目的经验作出的;对软件项目的管理方针明确、标准确定;如果有分承制方的话,也与他们建立了一种强有力的用户/供应商关系,且能将本组织成功的经验应用于分承制方。这些将使项目的进展稳定。4CMM模型的可重复级•CMM2级的过程基本特征•在可重复级(等级2)上,有效过程可归纳为“实用的”、“已文档化的”、“已实施的”、“已培训的”、“已度量的”和“能改进的”。当有转包商时,通过转包合同建立有效的供求关系。4CMM模型的可重复级•在可重复级(等级2)上,已建立了项目软件管理的方针和规程。•有助于将类似项目的经验用于对新项目进行规划和管理,使对项目软件的管理过程有效且制度化。•这样,为管理、跟踪其软件项目的成本、进度和功能提供了规范;在项目的策划和跟踪过程中规定并设置了监控点,尽管项目软件所实施的具体过程可能不同,但可运用以前项目开发的成功实践,从而保证了软件项目的基本可控性。4CMM模型的可重复级•在CMM,可重复级要达到以下目标:•软件质量保证活动独立于软件开发的项目管理,及时发现偏差并跟踪到底。•按照严格的步骤估计软件模型、成本、进度和进行软件开发管理评审。•有一种机制控制需求和代码的变更,以及更高层管理机构对软件开发项目状态进行正规的评审。4CMM模型的可重复级•CMM2级的关键过程域CMM2级的关键过程域的侧重点就是为软件项目建立项目管理控制•它包括以下六个关键过程域:–需求管理(RM:RequirementsManagement)–软件项目计划(SPP:SoftwareProjectPlanning),也称为软件开发计划(SDP:SoftwareDevelopmentPlan)–软件项目跟踪和监督(SPTO:SoftwareProjectTrackingandOversight)4CMM模型的可重复级•CMM2级的关键过程域–CMM2级的关键过程域的侧重点就是为软件项目建立项目管理控制•它包括以下六个关键过程域:–软件转包合同管理(SSM:SoftwareSubcontractManagement)–软件质量保证(SQA:SoftwareQualityAssurance)–软件配置管理(SCM:SoftwareConfigurationManagement)4CMM模型的可重复级•CMM2级的关键过程域•上述这些关键过程域标识了一系列相关的实践活动,当这些活动全部完成时,软件过程能力就可达到CMM2级所规定的目标。•这些可操作的、目标明确的实践活动,指明了组织为改进其软件过程所应关注的方面以及要解决的问题。•CMM2级上的关键过程域工作流程图如下述表4CMM模型的可重复级•CMM2级的关键过程域•CMM2级需求管理和软件项目计划的关键过程域工作流程图4CMM模型的可重复级•CMM2级的关键过程域活动需求管理软件项目策划(SPP/SDP)目标在软件需求上建立、维护用户的协议建立一个为开展和管理软件工程的合理设计制定组织策略记录管理分配给软件的系统需求的策略(执行约定)记录设计软件项目策略(执行约定)制定规程发展步骤:审核约定,制定软件项目计划,估计大小、工作量、资源,估计日期组织建立分析责任和分配系统需求(执行能力)委派项目管理员、分配SDP发展责任(执行约定)获得需求文档分配需求(执行能力)批准的工作陈述(执行能力)提供资源提供资源和资金(执行能力)提供资源和资金(执行能力)4CMM模型的可重复级•CMM2级的关键过程域培训为开展需求管理培训软件工程组(执行能力)培训管理员,软件工程师和其他进入软件估计和计划的人员(执行能力)指导关键过程域的实施在分配前审核分配的需求将分配的需求作为软件计划、工作产品和活动,合并并改变分配给软件的需求(活动)在计划组中包含软件工程小组,软件设计和项目整体设计并进行,软件工程小组参与整体项目设计,定义软件生存期,制定SDP并文档化,定义软件工作产品,估计软件产品大小,估计工作和费用,估计重要计算资源,编制软件项目日程,确定和估计风险、计划设备和支持工具,记录软件计划数据(活动)度量并报告结果度量需求管理活动状态(度量),协同上级管理部门进行审查,协同项目管理员进行审查(验证)度量计划活动状态(度量),协同上级管理部门进行审查,协同项目管理员进行审查(验证)审查活动SQA小组审查管理分配需求活动(验证)SQA小组审查软件计划活动(验证)4CMM模型的可重复级•CMM2级的关键过程域•CMM2级软件项目跟踪和监督和转件转包合同管理的关键过程域工作流程图4CMM模型的可重复级•CMM2级的关键过程域活动软件项目跟踪和监督(SPTO)软件转包合同管理(SSM)目标提供对实际进程的可见监督,以便及时采取纠正措施选择合格的转包商并有效地管理制定组织策略记录管理软件项目策略(执行约定)记录管理软件转包策略(执行约定)制定规程发展步骤:审核SDP,复查约定,正式项目审核(活动)发展步骤:确定转包工作,选择转包商,更改工作陈述,在所选择的阶段处进行审查,通过SQA管理转包商,通过SCM管理转包商,验收测试(活动)组织委派项目管理员(执行约定),分配软件工作和活动(执行能力)指派转包商管理员(执行约定)获得需求文档批准的SDP(执行能力)提供资源提供资源和资金(执行能力)提供资源和资金(执行能力)培训为管理技术和软件项目培训管理员(执行能力)对管理转包商的相关人员进行培训对管理转包合同的相关人员进行培训(执行能力)4CMM模型的可重复级•CMM2级的关键过程域指导关键过程域的实施利用SDP跟踪活动,并修改SDP同上级管理部门审核组织外部的约定,将更改的约定传达给相关组,跟踪软件产品大小,跟踪工作量和费用,跟踪项目的软件日程,跟踪软件风险,记录实际度量数据,内部审核,正式审核(活动)定义和计划将被转包的工作在能力评估的基础上选择转包商并签定转包合同,审查和批准转包商的SDP,使用转包商的SDP跟踪其活动,判定对转包商的工作陈述和合同等的更改,进行定期的状态或协调审查,进行定期的技术审查和交流,在阶段处进行正式审查,通过SQA管理转包商,通过SCM管理转包商,验收测试,定期评估转包商的成绩(活动)度量并报告结果度量跟踪和监督活动状态(度量),协同上级管理部门进行审查,协同项目管理员进行审查(验证)度量转包管理活动状态(度量),协同上级管理部门进行审查,协同项目管理员进行审查(验证)审查活动SQA小组审查软件跟踪和监督活动(验证)SQA小组审查转包管理活动(验证)4CMM模型的可重复级•CMM2级的关键过程域•CMM2级软件质量保证和软件配置管理的关键过程域工作流程图4CMM模型的可重复级•CMM2级的关键过程域活动软件质量保证(SQA)软件配置管理(SCM)目标使管理部门能够客观地了解软件过程和正在创建的产品在项目的整个生命周期中,建立和维护产品的完整性制定组织策略记录产品质量保证策略(执行约定)记录软件配置管理策略(执行约定)制定规程发展步骤:SQA计划,处理偏差(活动)发展步骤:制定SCM计划,标识置于SCM下的软件产品,控制基线的更改,制造产品并控制其发行,记录配置项的状态,审核软件基线(活动)组织建立SQA小组(执行能力)建立软件配置控制委员会SCCB,建立SCM小组(执行约定)提供资源提供资源和资金(执行能力)提供资源和资金(执行能力)4CMM模型的可重复级•CMM2级的关键过程域指导KPA的实施制定SQA计划,遵循SQA计划开展活动,SQA组参与项目SDP、标准和规程的制定及审查,SQA组审查软件工程活动,SQA组审查软件产品,SQA组定期向软件工程组报告结果,找出偏差并建立文档,进行审查(活动)制定SCM计划,遵循SCM计划,建立SCM系统库,标识置于SCM下的软件产品,关注配置项的更改要求和问题报告,控制基线的更改,制造产品并控制其发行,记录配置项的状态,编制、使用标准报告,审核软件基线(活动)度量并报告结果度量SQA活动状态(度量)、协同上级管理部门进行审查、协同项目管理员进行审查(验证)度量SCM活动状态(度量)、协同上级管理部门进行审查、协同项目管理员进行审查(验证)审查活动外部专家审核SQA小组的活动和产品(验证)SQA小组审核SCM活动(验证)SCM小组审核基线一致性(验证)4CMM模型的可重复级•CMM2级的需求管理•需求管理简称RM(RequirementsManagement),它是软件开发过程中最难把握的一个环节,又是项目成败的关键因素。•在整个软件生命周期中,需求阶段是基础。•做好需求管理,既可以减少软件开发中的错误,保证项目能满足用户需求,还可以减少修改错误的费用,从而大大缩短软件开发时间,提高软件开发效率,降低软件开发成本。4CMM模型的可重复级•CMM2级的需求管理•需求管理的目标–通常,系统工程组需要将软件项目与客户之间达成的共识、系统需求分配给软件、硬件和其他系统组成部分。其中分配给软件的系统需求称为分配需求,它是系统需求的子集,是要在系统中实现的软件需求部分。–需求管理要达到以下目标:1)软件需求规格说明已文档化,并经评审后存档。2)文档化的软件需求规格说明受管理和控制。4CMM模型的可重复级•CMM2级的需求管理•需求管理的目标–需求管理要达到以下目标:“受管理和控制”就是在给定时间使用的工作产品的版本均是可查知并受控的(版本控制),而且以受控的方式进行更动。如果需有比此更高程度的控制,则产品可置于软件配置管理的严格控制之下,如在CMM2级的软件配置管理关键过程域中所述。4CMM模型的可重复级•CMM2级的需求管理•需求管理的目标–需求管理要达到以下目标:3)供软件工程和管理使用的分配基线已建立,使软件产品满足分配需求的接收标准;分配需求是制定软件开发计划的根据,是整个软件生命周期中估算、计划、执行和跟踪软件项目活动的基础。4)软件开发计划、软件工作产品和软件过程活动与软件需求保持一致。4CMM模型的可重复级•CMM2级的需求管理•需求管理的目标–需求管理就是对分配需求进行管理。–在客户和实现客户需求的软件项目之间达成共识;控制系统软件需求,为软件工程和管理建立基准线;保持软件计划、产品和活动与系统软件的一致性。–归纳起来,需求管理就是要确定便于所有人理解的需求,稳定软件需求并说明需求的更改对项目的成本和日程的影响。4CMM模型的可重复级•CMM2级的需求管理•需求管理的执行约定和执行能力–需求管理实施的基础是管理的执行约定和执行能力。•执行约定–软件项目开发过程应该遵循一个书面的约定不定期管理软件需