CMM 是 英文 Capability Maturity Model for Software -- “ 软件能力成熟度模型 ” 缩写 SW-CMM 的 简称。
CMM 的定义是:有关软件企业 / 组织的软件过程进程中各个发展阶段的定义、实现、质量控制和改善的模型化描述。这个模型用于确定软件企业 / 组织的软件过程能力和找出软件质量及过程改进方面的最关键问题,为企业 / 组织的过程改进提供指南。
CMM 的核心思想是将软件开发视为一组过程,并根据统计质量管理的理论对软件开发进行过程管理,以使其满足工程化、标准化的要求,使企业能够更好地实现商业目标。它侧重于软件开发的管理及软件工程能力的提高,因此 CMM 可以作为企业软件过程改进的指南,帮助软件开发机构建立严格的、规范的软件开发过程,最有效地提高软件工程能力。
1.2 CMM的成熟度等级CMM 提供了一个软件能力成熟度模型的框架,它将软件过程改进的进化步骤组织成五个成熟度等级,为软件过程不断改进奠定了一个循序渐进的基础。每一个成熟度等级为继续改进过程提供一个台基。第一级实际上是一个起点,任何准备按 CMM 体系进化的企业都自然处于这个起点上,并通过这个起点向第二级迈进。除第一级外,每一等级包含一组过程目标,通过实施相应的一组关键过程域来达到这一组过程目标。当这一组目标达到时,就能使软件过程的一个相应的重要成分得以稳定。每达到成熟度框架的一个等级,就建立起软件过程的一个相应的稳定成分,从而导致软件开发组织过程能力一定程度的增长。
CMM 的五个成熟度等级的主要特征如下:
( 1 )初始级 — 未加定义的随意过程
软件过程的特点是无秩序的,有时甚至是混乱的。软件过程定义几乎处于无章法和步骤可循的状态,软件产品所取得的成功往往依赖极个别人的努力和机遇。
( 2 )可重复级 — 规则化的过程
已建立了基本的项目管理过程,可用于对成本、进度和功能特性进行跟踪。对类似的应用项目,有章可循并能重复以往所取得的成功。
( 3 )定义级 — 标准的、一致的过程
用于管理的和工程的软件过程均已文档化、标准化,并形成了整个软件组织的标准软件过程。全部项目均采用与实际情况相吻合的、适当修改后的标准软件过程来进行操作。
( 4 )管理级 — 可预测的过程
软件过程和产品质量有详细的度量标准。软件过程和产品质量得到了定量的认识和控制。
( 5 )优化级 — 持续改进的过程
通过对来自过程、新概念和新技术等方面的各种有用信息的定量分析,能够不断地、持续性地对过程进行改进。
1.3 CMM 的关键过程域在 CMM 中每个成熟度等级(第 1 级除外)规定了不同的关键过程域,一个软件组织如果希望达到某一个成熟度等级,就必须完全满足关键过程域所规定的不同要求,即满足每个关键过程域的目标。所谓关键过程域是指一系列相互关联的操作活动,这些活动反映了一个软件组织改进过程时必须集中精力改进的几个方面。换句话说,关键过程域标识了达到某个成熟度等级时所必须满足的条件。在 CMM 中一共有 18 个关键过程域,分布在 2~5 级中。
• 第 2 级(可重复级)有 6 个关键过程域,主要涉及建立软件项目管理控制方面的内容。
• 需求管理( Requirements Management , RM )
• 软件项目计划( Software Project Planning , SPP )
• 软件项目跟踪与监控( Software Project Tracking and Oversight , SPTO )
• 软件子合同管理( Software Subcontract Management , SSM )
• 软件质量保证( Software Quality Assurance , SQA )
• 软件配置管理( Software Configuration Management , SCM )
• 第 3 级(定义级)有 7 个关键过程域,主要涉及项目和组织的策略。 使软件组织建立起对项目中的有效计划和管理过程的内部细节。
• 组织过程焦点( Organization Process Focus , OPF )
• 组织过程定义( Organization Process Definition , OPD )
• 培训程序( Training Program , TP )
• 集成软件管理( Integrated Software Management , ISM )
• 软件产品工程( Software Product Engineering , SPE )
• 组间协调( Intergroup Coordination , IC )
• 同级评审( Peer Reviews , PR )
• 第 4 级(管理级)有 2 个关键过程域,主要的任务是为软件过程和软件产品建立一种可以理解的定量的方式。
• 定量过程管理( Quantitative Process Management , QPM )
• 软件质量管理( Software Quality Management , SQM )
• 第 5 级(优化级)有 3 个关键过程域,主要涉及的内容是软件组织和项目中如何实现持续不断的过程改进问题。
• 缺陷预防( Defect Prevention , DP )
• 技术变更管理( Technology Change Management , TCM )
• 过程变更管理( Process Change Management , PCM )
1.4 CMM 的家族CMM 家族 除了我们最熟悉的 SW-CMM ( 软件能力成熟度模型 ) 以外 , 还包括 CMMI ( 能力成熟度集成模型 ) 、 SA-CMM ( 软件获取能力成熟度模型 ) 、 SE-CMM ( 系统工程能力成熟度模型 ) 、 P-CMM ( 人力能力成熟度模型 ) 、 IDEAL 模型等等。
CMMI 把现存所有的以及将被发展出来的各种能力成熟度模型,集成在一个框架中。
SA-CMM 用于组织获取和采购基于软件的应用系统的软件过程,美国的国防部、陆军、海军和一些商用组织都已采用 SA-CMM 对他们的获取能力进行评估。
SE-CMM 是描述一个组织为保证实现一个好的系统工程的主要元素。
P-CMM 是有关组织的人力资源管理的模型。
IDEAL 模型是一个组织用于启动、规划和实现过程改善措施蓝图的模型,概括了建立一个成功过程改善项目的必要步骤,其中:
I 代表 Initiating (启动);
D 代表 Diagnosing (诊断);
E 代表 Establishing (建造);
A 代表 Acting (措施);
L 代表 Learing (学习)。
2 CMM 的产生及发展20 世纪 80 年代中期,国际软件产业界对软件过程的研究十分重视,因为在采用软件工程方法克服软件危机的过程中,人们已认识到,软件过程是否完善是软件风险大小的决定因素。
1986 年 11 月,美国卡内基梅隆大学的软件工程研究所( Software Engineering Institute , SEI )应美国联邦政府的要求,针对美国国防部对软件承包商的能力评价问题,研究 “ 过程成熟度框架 ” 。
1987 年 9 月, SEI 开发了一套软件能力成熟度框架和软件成熟度问卷,用来评估软件供应商的能力。
1991 年, SEI 自己总结了成熟度框架和初版成熟度问卷的实践经验,并以此为基础推出了 “ 软件能力成熟度模型( Capability Maturity Model For Software , CMM ) 1.0 版 ” 。
1993 年, SEI 在广泛听取美国政府和各界软件专家的意见后,推出了目前世界上比较流行的通用的 CMM1.1 版。
目前, CMM 是国际上最流行、最实用的一种软件生产过程标准,已经得到国际软件产业界的认可,成为当今企业从事规模软件生产不可缺少的一项内容。
199 8 年 SW-CMM2.0 的草案 C 发布并征求意见期间,美国国防部主管 CMM 的部门决定不再修订单独的 SW-CMM ,而着手制定集成的能力成熟度模型 CMMI ,其中包括软件方面的 SW-CMM 。 2002 年 1 月发布了 CMMI1.1 版。
3 CMM 的作用 3.1 CMM 的基本用途SW-CMM 的基本用途有三个方面:
• 软件过程评估
借助 SW-CMM 分析软件组织当前软件过程的状态,找出其强处和弱处,这点无论软件采购单位,还是软件产品开发单位都可使用。
• 软件过程改进
根据评估结果,确定当前软件过程的弱点,按照 SW-CMM 能力等级的顺序,原则上从低级( 2 级)逐级向更高级( 3 、 4 、 5 级)发展,制定软件过程改进的策略。这一点已成为当前 CMM 的最主要用途,任何软件开发单位都可使用。需要特别注意的是 CMM 的每一个等级都是其更高等级的基础,基础条件不具备,就不可能达到更高等级。
• 软件能力评价
这种用途主要是软件采购单位为了减少软件采购的风险(包括资金、周期、特别是产品质量方面的风险),需要在招标时对投标者的软件过程能力进行评价。当然投标者也可进行自我评价,以便做到 “ 知己知彼 ” ,不过自我评价的结果一般并不被软件采购者用作可靠的依据。
3.2 软件企业实施 CMM 的意义• 规范软件开发过程及管理
目前我国很多软件企业在软件开发过程方面还处于比较混乱,比较自由化的阶段。有的企业即使有一些规定,实际上也没有或没有完全执行,这主要与市场规范的问题有关。
• 规范市场竞争
对中国软件企业来说, CMM 不仅是一张国际市场的通行证,它的重要意义更在于,在达到 CMM 各级标准的过程中,通过软件工程方法的运用达到提高软件质量的目的。从而规范市场竞争,提高软件企业市场竞争能力。
• 帮助企业进行内部软件过程改进
这是 CMM 最具特色的地方。软件过程的改进和软件过程能力的提高可以提高产品质量,控制成本,提高劳动生产率。
• 增加企业的国际竞争能力
这对我国已加入 WTO 更为重要, CMM 与 ISO9000 不同,它能明确指出软件企业在软件过程和软件能力方面所达到的水平,软件企业所处的位置,企业应努力的方向及其改进的途径,这样企业的市场竞争能力就可增强。印度就是一个最好的例子。
CMM 是国际公认的 “ 事实 ” 标准,是中国软件业走向国际市场的通行证。
• 可以降低软件开发风险
这一点是 CMM 模型设计的初衷,对软件企业来说,也是极为有益的。
4 ISO9000 与 CMM 4.1 概述我国软件技术人员在数十年来的研究与开发工作中,一直在寻找适合我国特点的发展软件产业的途径,积累了一些经验,也有不少教训。今天大家的共识是: 21 世纪的软件产业必须走工业化生产的道路,实行软件开发生产组织的变革,实现软件开发的标准化,规范化和国际化。落实到具体,一方面我们需要营造软件工程文化,培养大量既懂信息技术又懂企业管理的高级人才,建立必要的信息产业通用基础设施;另一方面还需要建立过程工程、系统工程、面向对象技术、软件过程以及软件质量工程等五个以支持环境为主要特征的软件产业基础设施,以全面支持和促进软件产业国际化、标准化的建立与发展。
随着软件质量管理和认证工作在中国 IT 业的开展,其支撑技术的研究、支撑工具的开发也日益引起人们的重视,如何帮助软件企业的管理者和工程师理解 ISO9000 或 CMM ,引导企业建立标准化的生产过程和管理过程,进行工作流和文档流的控制和管理,以及软件过程和软件质量的度量技术等等,都是目前急待解决的问题。
CMM 和 ISO 9001 并不是孤立、或彼此矛盾的 [5] 。 ISO 9001 的每一个质量要素都可以对应到 CMM2 - 3 级中关键过程区域 [6] 的特征上。而 CMM 在生产过程中的管理重点,又弥补了 ISO9001 在微观管理上的不足。另外 ISO9000 : 2000 版中增加的度量正好是 CMM 第四级强调的重点。所以,可以综合考虑 ISO9000 和 CMM 的质量管理要求,在建立企业的标准过程时,根据企业的商业目标,建立符合 ISO 9001 或 CMM 的质量目标和管理体系,为企业通过 ISO 9000 认证或 CMM 认证提供技术支持。
4.2 CMM与 ISO9000 的主要区别:4.2.1 ? CMM 是专门针对软件产品开发和服务的,而 ISO9000 涉及的范围则相当宽。
4.2.2 ? CMM 强调软件开发过程的成熟度,即过程的不断改进和提高。而 ISO9000 则强调可接收的质量体系的最低标准。
5 CMM 在国内的应用 5.1 CMM 在中国自从 IBM 与清华大学合资的北京鼎新信息技术有限公司于 1999 年首先通过 CMM2 级评估以来, CMM 在我国软件企业中越来越得到重视和应用。
到 2002 年 3 月底,我国通过 CMM 评估的企业已有 19 家,其中 5 级两家(摩托罗拉中国软件中心以及摩托罗拉电信运营方案部亚太区应用研发中心), 4 级一家( 华为公司印度所), 3 级三家(东软股份、联想软件事业部以及托普软件), 2 级十几家。
5.2 国内 CMM 认证鼓励政策国务院关于 “ 鼓励软件产业和集成电路产业发展的若干政策 ” 18 号文件出台后,各地根据文件精神,陆续制定了 CMM 认证方面的鼓励政策,依据各地的不同情况,具体补贴金额有所不同。
• 北京市软件产业基地 2001 年对基地确定的重点企业通过二级认证的,由科技经费给予 20 万元左右的补贴,对通过三级认证的企业给予 30 万元左右的补贴。北京中关村科技园区海 淀园管委会对在海淀园登记注册的新技术企业通过 CMM 认证的,给予 10 万元的奖励。
• 珠海 : 对通过 CMM2 级的企业一次性补贴 50 万元。
• 广州:通过 CMM 的企业一次性奖励 30 万元
上海:对通过 CMM-3 补助 40 万; CMM-4 补助 60 万; CMM-5 补助 80 万元。
6 CMM 的投入及产出分析这个问题很难一概而论,需要了解企业的软件过程实施状况、企业规模等情况后,根据企业的实际情况而定。
6.1 CMM 投入6.1.1 资金投入
软件组织在实施 CMM 中的资金投入(即合同报价)包括以下费用:
a. 主任评估师劳务费;
b. 主任评估师国际差旅、食宿费用;
c. 国内专家咨询费用;
d. 向 SEI 购买评估包的费用;
e. 工作成本(外联、印刷、交通等)
f. 合同金额的国内应纳税金等
6.1.2 人力投入
同样,软件组织在实施 CMM 的人力投入同样取决于多种因素,如:公司项目压力、相关人员的资历、已有的项目管理规范的执行情况、 CMM 实施范围等等。
根据 CMU/SEI 的统计 , 软件组织在引用实施 CMM 的投入产出比为 1 : 4 - 1: 8.8 平均为 1 : 5 。仅从这一点上看, CMM 本身就是一种高费效比的投资。
美国宇航局的一份资料表明,随着某机构软件过程的改进,软件开发周期缩短 38% ;典型任务成本从 490 人 / 月降为 210 人 / 月,即降低 55% ;产品可靠性明显提高,平均每千行代码所含差错数从 4.5 个降为 1 个。
国外著名企业如路透集团在调查其实施 CMM 的软件组织后认为: 组织的失误率大幅降低,且管理费用就下降了 20 %。路透集团全球范围内总共有三千多个软件开发人员,在过去的四年当中花了三亿个人时用于软件过程改进,总体说来总共节约了百分之十左右的成本。摩托罗拉总裁在总结自身企业实施 CMM 的受益时说: “ 对 CMM 每一个美金的投入都获得了十倍的回报。 ”
6.2 联想软件获得 CMM3 级的投入及产出分析 联想软件 2001 年全年开发总成本 = 3033 万 RMB
节约成本= 3033 ÷ ( 1-0.09 )- 3033 = 300 万, 0.09 为成本降低率。
CMM 投入: 2001 年 CMM 总投入为 188 万 .
CMM 效益: 300-188=112 万
CMM 投入 / 产出: 188/300 = 0.63
CMM 对质量和生产效率的影响:
2001 年 12 月比 1 月,生产效率提高 10% ,质量提高 22% 。
• 软件项目的成本控制
• 软件生产周期
• 实现企业软件生产体系的建设
• 企业市场竞争力的增强
• 接受国外定单的能力
• 企业形象
• 长期收益