从CMM到CMMI
李华北 刘小茵
赛宝认证中心
1 概述
SEI于2001年12月正式发布了能力成熟度集成模型(CMMI)1.1版本,这次发布标志着CMMI的正式使用。SEI也正式宣布,将不再维护SW-CMM和CBA-IPI评估方法:在CMMI1.1发布后的两年内,SEI还提供有关SW-CMM和CBA-IPI主任评估员的培训,并接收评估数据,但这一切到2003年12月就正式停止。CMMI与CMM有什么区别? CMMI的优点是什么?CMMI对企业有什么重要意义?本文将就此作一阐述。
自1991年SW-CMM首次发布后,SEI又开发了其他成熟度模型,包括:系统工程、采购、人力资源管理和集成产品开发等。虽然各个模型针对的专业领域不同,但彼此之间也有一定的重叠,毕竟它们同出一辙;另外,这些模型在表现形式上又有不统一之处:系统工程模型是连续式的,而其他模型采用了分级式。当SEI开始开发新一代成熟度模型的时候,其发起人提出了新的要求:整合不同模型中的最佳实践,建立统一模型,覆盖不同领域,供企业进行整个组织的全面过程改进。
CMMI起源于三个模型(源模型),分别是:
(1) 软件能力成熟度模型( SW-CMM)2.0版,C稿
(2) 电子行业协会临时标准(EIA/IS731)
(3) 集成产品开发能力成熟度模型(IPD-CMM)v0.98
最近,模型中又集成了供应管理的内容。另外,在CMMI中除了沿用成熟度等级的方式(即CMMI的分阶段表示形式)外,还吸取TR 15504的特点,增加了与15504类似的CMMI的连续表示形式,以满足ISO15504国际标准对过程改进评估的要求。CMMI模型的组成和适用范围如表1所示。
表1 CMMI模型的组成和适用范围
CMMI模型组件 |
适用范围 |
SE/SW |
软件工程、系统工程 |
SE/SW /IPPD |
软件工程、系统工程、集成产品和过程开发 |
SE/SW /IPPD/SS |
软件工程、系统工程、集成产品和过程开发、供应采购 |
培训课程 |
评估师、过程改进人员等培训 |
SCMPI |
评估方法 |
在CMMI 模型组件中,SE/SW是核心,SE/SW /IPPD、SE/SW /IPPD/SS是在此基础上扩展而来的。
与原有的能力成熟度模型类似,CMMI也包括了在不同领域建立有效过程的必要元素,反映了业界普遍认可的最佳实践;专业领域覆盖软件工程、系统工程、集成产品开发和系统采购。在此前提下,CMMI为企业的过程构建和改进提供了指导和框架作用;同时为企业评估自己的过程提供了可参照的行业基准。CMMI融入了大部分最新的软件管理实践,同时弥补了CMM的缺陷,因此,对于企业而言,CMMI的先进性非常显著的。不过,就导入CMMI模型的时机、方式等方面的决策而言,企业应该慎重。
2. CMMI模型结构的变化
在CMMI的源模型中,有的是以成熟度为核心的分级式(如SW-CMM等),有的是以能力为核心的连续式(EIA/IS731等)。成熟度等级,主要是针对全组织而言,能力等级主要是针对某一过程域,应区分清楚“成熟度”和“能力”这两个术语。CMMI模型分别提供了连续式和分级式两种不同的表现形式,而不同的表现形式的实际内容(即目标、实践和子实践等)是基本相同的,只是连续式模型为了说明过程域能力的等级梯度,额外增加了一些实践。两种不同表现形式的最主要差别就是内容的组织方式不同。
2.1 分级式模型
在分级式模型中,每个过程域都是隶属于一个成熟度等级的。这种组织方式为过程改进的进程提供了一个依据。成熟度等级是刻画组织总体过程成熟度的基准,当企业成功地实施了某个成熟度等级及其以下的所有等级所要求的全部过程域后,这个企业就达到了该等级。成熟度等级与SW-CMM一样,分为5级。
2.2 连续式模型
在连续式模型中没有成熟度等级的概念,每一个过程域的能力都可以从“不完整”(能力等级0)到“优化中” (能力等级5),这就为实施在某个特定的过程域的过程改进提供了指导。在连续式模型中,实施各个过程域的先后顺序比较灵活。
2.3 两个模型之间的关系
可以通过“等同等级”的方法来将过程域的“能力等级”和组织的“成熟度等级”建立对应关系。如图1所示,各个过程域分布在不同的能力等级(1~5级),如要达到成熟度等级3,则其包含的所有过程域(成熟度2级和3级的过程域)都需达到能力等级3。
图1 分级式和连续式的对应关系
在两种表现形式中,过程域都是按4个类别划分的:项目管理类、工程类、支持类和过程管理类。这样的分类有利于分析不同过程域之间的相互关系。
在CMMI模型中,对目标和实践的运用更为妥当,主要体现在两个方面:第一是目标和实践的对应关系,在SW-CMM中一个实践可能对应多个目标;CMMI中一个实践只对应一个目标。第二个方面是针对过程的制度化,引入了通用目标,在SW-CMM中制度化的实践没有明确与目标对应,在CMMI中,制度化的实践叫通用实践,是和通用目标对应的。明确了目标和实践的对应关系,CMMI可以更好地运用到过程改进中去,评审数据的管理也简单了。
在使用CMMI的时候,企业必须要决定选用哪种表现形式的模型,对于熟悉或使用过SW-CMM模型的企业来说,一般选用分级式模型更为常见,因为“成熟度等级”已经被普遍接受并成为不同企业进行比较的行业基准。
3. CMMI与CMM的区别
两个模型的区别主要在五个方面:覆盖的专业领域,成熟度等级、过程域、模型的结构及评估方法。模型结构的变化在上节已经阐述,在这里主要讨论CMMI和CMM模型其他几个方面的区别。
3.1 覆盖领域
如果熟悉CMMI的任何一个源模型,就会了解CMMI的一个显著特点就是覆盖了多个领域;到目前为止包括以下4个专业领域。
3.1.1 软件工程(SW)
软件工程的对象是软件系统的开发活动,要求实现软件开发、运行、维护活动系统化、制度化、量化。
3.1.2 系统工程(SE)
系统工程的对象是全套系统的开发活动,可能包括也可能不包括软件。系统工程的核心是将客户的需求、期望和约束条件转化为产品解决方案,并对解决方案的实现提供全程的支持。
3.1.3 集成的产品和过程开发(IPPD)
集成的产品和过程开发是指在产品生命周期中,通过所有相关人员的通力合作,采用系统化的进程来更好地满足客户的需求、期望和要求。如果项目或企业选择IPPD进程,则需要选用模型中所有与IPPD相关的实践。
3.1.4 采购(SS)
采购的内容适用于那些供应商的行为对项目的成功与否起到关键作用的项目。主要内容包括:识别并评价产品的潜在来源、确定需要采购的产品的目标供应商、监控并分析供应商的实施过程、评价供应商提供的工作产品以及对供应协议和供应关系进行适当的调整。
在以上各模块中,企业可以选择软件工程,或系统工程,也可以都选择。IPPD和SS主要是配合软件工程和系统工程的内容使用。例如,纯软件企业可以选择CMMI中的SW的内容;设备制造企业可以选择SE和SS;集成企业可以选择SW、SE和IPPD。
CMMI中的大部分内容是适用各不同领域的,例如项目策划过程域的“定义生命周期”这个实践,对软件工程和系统工程都适用,但是实施中两者会有显著的差别,因此模型中提供了“不同领域的应用详解”(Discipline Amplifications)作为辅助内容。那么假如我们想要了解该实践在软件工程领域的应用详解,就要找标签”针对软件工程“(For Softare Engineering)。
3.2 成熟度、能力等级
CMMI中成熟度等级的概念与SW-CMM模型相同,只是某些等级的名称有些变化。1级、3级和5级的名称没有变化,名称还是初始级、已定义和优化中,但是2级和4级分别变为已管理级和定量管理级,这个变化更突出了2级定性管理和4级定量管理的特点。
能力等级的确定,建立了CMMI和ISO15504之间的有机联系,CMMI连续式模型的3、4级名称虽然与ISO15504有区别,但其含义是基本一样的。
表2列出了CMMI、CMM、ISO15504模型的等级名称的对应关系。
表2 各模型的等级对应
Level |
CMM |
CMMI(分级式) |
CMMI(连续式) |
ISO15504 |
5 |
优化中 |
优化中 |
优化中 |
优化中 |
4 |
已管理 |
定量管理 |
定量管理 |
可预测 |
3 |
已定义 |
已定义 |
已定义 |
已建立 |
2 |
可重复 |
已管理 |
已管理 |
已管理 |
1 |
初始级 |
初始级 |
已执行 |
已执行 |
0 |
|
|
未完成 |
未完成 |
3.3过程域
因为连续式描述和分级式描述的内容基本相同,所以在这里主要讨论CMMI分级式模型和CMM模型的区别。
CMMI共有分属于4个类别的25个过程域,覆盖了上面所介绍的4个不同的领域(相对应,SW-CMM共有18个过程域)。虽然CMMI中的很多过程域与SW-CMM中的基本相同,但有几个过程域的范围和内容发生了重要的变化,另外也有几个新增加的过程域。两个模型的过程域关系比较见表3。
表3 CMMI和CMM过程域关系比较
等级 |
CMM |
CMMI |
类别 |
||
过程域 |
缩写 |
过程域 |
缩写 |
||
5 |
技术更新管理 |
TCM |
组织革新与部署 |
OID |
过程管理 |
过程更改管理 |
PCM |
CAR |
|||
缺陷预防 |
DP |
原因分析与决策 |
|
支持 |
|
4 |
软件质量管理 |
SQM |
组织过程性能 |
OPP |
过程管理 |
定量过程管理 |
QPM |
定量项目管理 |
QPM |
项目管理 |
|
3 |
软件产品工程 同行评审 |
SPE PR |
需求制定 |
RD |
工程 |
技术方案 |
TS |
工程 |
|||
产品集成 |
PI |
工程 |
|||
验证 |
VER |
工程 |
|||
确认 |
VAL |
工程 |
|||
组织过程聚焦 |
OPF |
组织过程聚焦 |
OPF |
过程管理 |
|
组织过程定义 |
OPD |
组织过程定义 |
OPD |
过程管理 |
|
培训大纲 |
TP |
组织培训 |
OT |
过程管理 |
|
集成软件管理 |
ISM |
集成项目管理 |
IPM |
项目管理 |
|
组间协调 |
|||||
|
|
风险管理 |
RSKM |
项目管理 |
|
|
|
决策分析与决定 |
DAR |
支持 |
|
|
|
集成供应商管理 |
ISM |
项目管理 |
|
|
|
组织集成环境 |
OEI |
支持 |
|
|
IC |
集成组队 |
IT |
项目管理 |
|
2 |
需求管理 |
RM |
需求管理 |
RM |
|
软件项目策划 |
SPP |
项目策划 |
PP |
项目管理 |
|
软件项目监督与控制 |
SPTO |
项目监督与控制 |
PMC |
项目管理 |
|
软件分包管理 |
SAM |
供应协议管理 |
SAM |
项目管理 |
|
软件质量保证 |
SQA |
过程与产品质量保证 |
PPQA |
支持 |
|
软件配置管理 |
SCM |
配置管理 |
CM |
支持 |
|
|
|
度量与分析 |
MA |
支持 |
|
1 |
|
|
|
|
|
通过比较我们可以看出,2级的内容变化不大。“软件分包管理”重新命名为“供应协议管理”,所包括的范围也更广泛。“度量与分析”在SW-CMM中是一个公共特性,在CMMI中成为一个单独的过程域。
3级的变化是最大的。原来在SW-CMM中的覆盖了所有软件工程实践的“软件产品工程”被扩展为5个过程域:“需求制定”主要涉及的是各个层次的需求分析活动;“技术方案”包含设计和实施;“产品集成”主要是集成、组装产品部件并形成最终交付产品;“验证”是指要通过诸如测试、同行评审等活动展示产品与具体需求的符合性;“确认”则是通过客户的验收测试等活动确定产品满足了客户的真正需要。“集成项目管理”包括了SW-CMM的“集成软件管理”和“组间协调”两个过程域。“风险管理”和“决策分析与制定”都是新的过程域,后者主要用来管理解决某一个问题的时候,识别和评价不同的解决方案这方面的活动的。
IPPD模块在3级有两个过程域:“集成组队”强调建立通力合作、有整体性的产品开发队伍;“组织集成环境”主要包括基础设施和人员管理方面的实践,以便进行有效的一体化的组队工作。
SS模块在3级有一个过程域——“集成供应商管理”,这是建立在2级的“供应协议管理”过程域基础上的,加强了预先识别可以满足项目需求的潜在的产品供应商的要求,以及维持与供应商之间的协作关系的内容。
CMMI在4级非常清楚地说明了量化控制的要求。具体来说,就是要应用统计方法和其他定量化技术管理所选择的过程域(如对商业目标的实现有关键作用的过程域),从而实现对质量和过程执行情况的统计预测。SW-CMM中的“软件质量管理”和“定量产品管理”在CMMI中被两个新的过程域所取代——“组织过程性能”,包括建立并维护度量基准以及能够反映组织标准过程执行情况的模型;“定量项目管理”,主要指要使用基准和模型来建立项目计划和执行目标,并运用统计化、数量化的技术监控项目的执行情况。
5级的核心和宗旨与SW-CMM相比没有重大的变化,SW-CMM5级的“过程变更管理”、“技术变更管理”在CMMI中合并为“组织革新与部署”,这个过程域的基础是3级的“组织过程聚焦”,强调运用高成熟度的技术进行过程改进。原来的“缺陷防范”重新命名为“原因分析与决策”。
由于增加了很多新的实践,新的模型比原来的模型大了很多——CMMI-SE/SW 有80个目标、411个实践,而SW-CMM只有52个目标、316个实践。模型大小的变化对过程改进和评估活动的工作量都有非常大的影响。
3.4 评估方法
随着CMM过渡到CMMI,其CAF评估框架变成评估需求(ARC:Appraisal Requirements for CMMI);IPI-CBA评估方法被SCAMPI(Standard CMMI Appraisal Method for Process Improvement)方法代替。根据CMMI评估需求(ARC)规定三种评估类型,表4列出了SCAMPI评估方法的适用情况。
表4 可用的评估类型
评估类型 |
ISO15504兼容 |
SCAMPI使用 |
主任评估师需求 |
评估组规模 |
Class A |
× |
可能 |
× |
5-17 |
Class B |
|
部分 |
|
2-7 |
Class C |
|
部分 |
|
2-3 |
4. 向CMMI过渡
企业是否需要向CMMI过渡呢?答案是肯定的;因为CMMI已经被确定要取代那些源模型了。关键问题是“如何开始这个过渡”。与其他重大的管理决策一样,没有一个统一的答案。
如果企业刚刚开始向2级的过程改进,投入还不多(目前很多国内企业都处于这个状态),那么可以现在就开始使用CMMI,模型本身的优势明显的胜过SW-CMM;对于已在SW-CMM有了相当大投入的的企业,这个决策更是非同小可,就象要决定是否升级到最新版本的Windows一样,过渡到CMMI在短时间内可能不太适应,但从长期来说必然是物有所值的。如果面临这种选择,可以考虑如下建议:
如果您的企业快要达到2级或3级了,我们建议您先实现眼前的目标,然后再开始过渡;这样可以保持过程改进的原动力,避免因为引入CMMI打断过程改进活动引起目标缺失。
如果企业刚刚达到了2级或某一级,我们建议可以马上开始过渡。在这个时机开始实施CMMI的好处远远胜过任何现有的过程改进计划。
一旦决定采用CMMI,企业必须明确采用那种表现形式,是分级式,还是连续式。如果企业计划以商业目标、风险和预期收益为基础进行过程改进,连续式模型可能更为合适;如果企业愿意以成熟度等级为核心进行改进,分级式模型更为合适。您也可以采用第三种方式,按连续式模型进行过程改进,按分级式模型进行评估。
5. 结论
作为对源模型的升级,CMMI应该出现的更早,虽然CMMI在范围、结构、内容上有一些重大的变化,覆盖了很多专业领域,看起来不如SW-CMM那样适合软件工程,但可以相信,这个模型包含了大量的行业优秀实践,会为软件工程和系统工程提供非常重要的框架作用。与理解、使用SW-CMM和其相关知识一样, 要掌握和运用CMMI,还需经历重要的学习和实践过程。
参考文献
[1] SEI SW-CMMv1.1:http://www.sei.cmu.edu/cmm
[2] SEI CMMIv1.1:http://www.sei.cmu.edu/cmmi
[3] Aherm,D.;Clouse,A;Turner,R.:CMMI distilled,Addison-Wesley,2001
[4] Suzanne,G:AreYou Prepared for CMMI, http://www.stsc.hill.af.mil/crosstalk/2002/mar/garcia.asp
[5] The CMMI in 45 Minutes:AVOCA GmbH 2002
[6] SEI编著,刘孟仁译,能力成熟度模型(CMM):软件过程改进指南
[7] 信息产业部,《SJ/T11234 软件过程评估模型》,2001
[8] 信息产业部,《SJ/T11235 软件能力成熟度模型》,2001