软件过程管理

CMM:软件过程能力成熟度模型 

CMM基本概念

1、过程:为实现既定目标的一系列操作步骤

2、软件过程:指人们用于开发和维护软件及其相关产品的一系列活动、方法、实践和革新。

3、软件过程能力:描述了在遵循一个软件过程后能够先到的预期结果的界限范围,是对能力的一种衡量,用它可以预测一个组织在承接下一个软件项目时,能期望得到的最可能的结果

4、软件过程性能:表示遵循一个软件过程后所得到的实际结果,软件过程性能关注的是实际得到的结果,软件过程能力关注的是期望得到的结果。由于项目要求和客观环境的差异,软件过程性能不可能充分反映软件过程整体能力,即软件过程性能受限于它的环境。

5、软件过程成熟度:指一个具体的软件过程被明确地定义、管理、评价、控制和产生实效的程度。表明了组织实施软件过程的实际水平

6、关键过程域:指一系列相互关联的操作活动。这些活动反映了一个软件组织改进软件过程时所必须满足的条件。KPA标志了达到某个成熟程度级别时所必须满足的条件

7、关键实践:指关键过程域中的一些主要实践活动。每个KPA由关键实践组成,通过实现关键实践达到关键过程域的目标,关键实践描述了该做什么,但没有规定如何去做

8、软件过程评估:用来判断一个组织当前所涉及的软件过程的状态,以确定组织该如何对其进行有效的改进

9、软件能力评价:用来判断有意承担某个软件项目的软件组织的软件过程能力,或判断已进行的软件过程所处的状态是否正确或是否正常。

10、      软件工程组:负责一个项目的软件开发和维护活动的团队,如分析、设计、编码测试等

11、      软件相关组:支持但不直接负责软件开发和维护工作的团队,如质量保证组,软件工程过程组等

12、      软件工程过程组:由专家组成的组,推进组织采用的软件过程的定义、维护和改进工作。

13、      系统工程组:包括分析系统需求,将系统需求分配给硬件、软件和其他成分,规定硬件、软件和其他成分的界面。

14、      系统测试组

15、      软件质量保证组

16、      软件配置管理组

17、      培训组

 

CMM分级标准

1、初始级:软件过程定义无章法和无步骤可循的状态,成功往往依赖个别人或机遇

2、可重复级:建立了基本的项目管理过程,对类似的项目,能重复以往所取得的成功

3、已定义级:定义了组织级的标准软件过程

4、已管理级:是量化的管理,所有过程都建立了相应的度量方式

5、优化级:通过各种定量分析,能够不断地、持续地进行过程改进。

除第一级外,每一级都设定了一组目标,如果达到这组目标,则表明达到了这个成熟级别,每个低级别的实现均是高级别实现的基础,上升一组需12~30个月之间。

CMM分级标准有两个用途:

1、软件组织利用它可以评估自己当前的过程成熟度,并以此提出严格改进策略

2、作为客户选择软件开发商的一种评价标准。

 

CMM的内部结构

除第一级外,每一级按完全相同的内部结构构成。

1、最顶层为成熟度等级,反映了软件组织的软件过程能力

2、成熟度等级包含关键过程域:要达到某个成熟度等级,必须完全满足关键过程域所规定的的要求。单个项目管理在可重复级,集成、同组评审,过程、培训在已定义级,定量管理和软件质量管理在已管理级,改进和缺陷预防在优化级
1、可重复级:需求管理、软件项目计划、软件项目跟踪与监控、软件子合同管理、软件质量保证、软件配置管理
2、已定义级:集成软件管理、组间协调、组织过程焦点、组织过程定义、培训程序、软件产品工程、同级评审
3、已管理级:定量管理过程、软件质量管理
4、优化级:技术改进管理、过程改进管理、缺陷预防

3、KPA用5个公共属性对关键实践分组,
1、执行约定:也称实施保证,是组织为了建立和实施KPA必须采取的行动,与政策和管理方式有关
2、执行能力:也称实施能力,是企业实施KPA的前提条件,满足了这些条件后,可有可能执行KPA的实践活动,关注项目计划的实践,资源的配置,责任的分配,培训等
3、实施活动:执行KPA所需的必要行动、任务和步骤。包括计划、执行的任务,任务的跟踪等。是惟一与项目执行相关的的属性,其他属性涉及CMM能力基础设施的建立。
4、度量和分析:确定执行活动的状态和执行活动的有效性
5、实施验证:验证执行活动是否与建立的过程一致。如管理评审和审计,质量保证等

 

软件过程评估(SPE)和软件能力评价(SCE)

软件过程评估(SPE)针对的是软件组织自身内部软件过程的改进问题,目的在于发现缺陷,提出改进方向。

软件能力评价(SCE)是对接受评价者在一定条件下、规定时间内能否完成特定项目的能力的考核。

SPE和SCE的过程:

1、成立评估小组

2、问卷调查和取样

3、结果分析

4、现场访问

5、与CMM模型对照分析

6、依据KPA的基本情况列出评估提纲

 

SPE和SCE不同:

1、SPE和SCE在出发点和目标上的不同,使会谈、调查、收集的信息和输出的表示方式有本质的不同

2、SPE和SCE结果和结果所起的作用不同

3、SPE和SCE对被评价单位的影响不同,进而也影响到单位对SPE和SCE的态度,一般对SPE的态度比较开放,对SCE的态度比较慎重

 

软件企业如何实施CMM

1、提高思想认识

2、进行CMM培训和咨询工作

3、确定合理的目标

4、成立工作组

5、制定和完善软件过程

6、内部评审:组织内部成员,对自己的软件过程进行评审,找出其中的不足并进行改进

7、正式评估:由美国卡内基梅隆大学的软件工程研究所(CMU/SEI)授权的主任评估师领导一个评审小组进行。

8、根据评估结果改进软件过程

 

CMMI综述

能力成熟度模型集成是CMM模型的最新版本,专业领域覆盖软件工程、系统工程、集成产品开发和系统采购。

 

CMMI模型的表示

CMMI模型两种表示法:阶段式和连续式连续式表示法强调的是单个过程域的能力,从过程域的角度考察基线和度量结果的改善,其关键术语是“能力”。而阶段式表示法强调的是组织的成熟度,从过程域集合的角度考察整个组织的过程成熟度阶段,其关键术语是“成熟度”。

 

阶段式模型分为5个级别

1、级别1(初始级):代表了以不可预测结果为特征的过程成熟度,过程处于无序状态,成功主要取决于团队的技能

2、级别2(已管理级):代表了可以重复项目执行为特征的过程成熟度,主要的过程焦点在于项目级的活动和实践。

3、级别3(严格定义级)代表了以组织内改进项目执行为特征的过程成熟度。建立组织级的活动和实践。

4、级别4(定量管理级)代表了以改进组织性能为特征的过程成熟度。在业务表现的竞争尺度方面的结果是可预测的。

5、级别5(优化级)代表了以可快速进行重新配置的组织性能,以及定量的、持续的过程改进为特征的过程成熟度。

 

CMMI评估分为三类

1、A类评估:全面综合的评估方法,要求在评估中全面覆盖评估中所使用的模型,并且在评估结果中提供对组织的成熟度等级的评定结果

2、B类评估:较少综合,花费也较少。在开始时做部分自我评估,并集中于需要关注的过程域不评定组织的成熟度等级

3、C类评估:也称为快估。主要是检查特定的风险域,找出过程中的问题所在。

 

CMMI阶段式的基本结构从CMM演变而来,但是CMMI的结构更加形式化和精致,也更加复杂,尤其为了保证连续式和阶段式的统一性,增加了结构的理解难度

CMMI与CMM相比,强调对需求、工程过程、度量、风险的管理。

CMM是作为评估标准出现的,所以是必要的才能保证评估的标准,CMMI是作为改进模型出现的,罗列了较多的最佳实践,以利于过程的改进。

 

个体软件过程(PSP)

个体软件过程是一种可用于控制、管理和改进个人工作方式的自我持续改进过程。是一个包括软件开发表格、指南和规程的结构化框架。PSP与具体的技术相对独立,其原则能够应用到几乎软件工程任务之中。

CMM侧重于软件企业中有关软件过程的宏观管理,面向软件开发单位,PSP则侧重于有关软件过程的微观优化,面向软件开发人员。

PSP分为四个级别:

1、个体度量过程PSP0和PSP0.1:建立个体过程基线,学会使用PSP的各种表格采集过程的有关数据,记录过程中存在的问题、解决问题的措施,以提高软件开发人员的质量意识和过程意识。

2、个体规划过程PSP1和PSP1.1:重点是个体计划,学会编制项目开发计划。

3、个体质量管理过程PSP2和PSP2.1:重点是个体质量管理,根据程序的缺陷建立检测表,按照检测表进行设计复查和代码复查,以便及早发现缺陷,使修复缺陷的代价最小。

4、个体循环过程PSP3:把个体开发小程序所能达到的生产效率和生产质量,延伸到大型程序。其方法是采用迭代增量式开发方法。

 

群组软件过程(TSP)

TSP对群组软件过程的定义、度量和改革提出了一套原则、策略和方法,描述了如何创建高效且具有自我管理能力的工程小组。

实施TSP的五个先决条件:

1、高层主管和各级管理人员的支持

2、全体有关人员的积极参与

3、循环往复、持续改善,不能一蹴而就

4、项目组的开发人员需要经过PSP培训

5、整个开发单位的能力成熟度在应处于CMM二级以上

TSP一般将一个软件项目的开发工作分为四个阶段。

CMM/TSP/PSP三者的结合

CMM/TSP/PSP为软件产业提供了一个集成化的、三维的软件过程改进框架。CMM是过程改善的第一步,它提供了评价组织能力的方式,并为TSP提供了指导原则。PSP为TSP的实施提供了软件工程师的个人技能。TSP结合了CMM的管理方法和PSP的工程技能。