CMM 知多少

首先介绍一下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 版
一、CMM 的定义
CMM 是 英文 Capability Maturity Model for Software -- “ 软件能力成熟度模型 ” 缩写 SW-CMM 的 简称。
CMM 的定义是:有关软件企业 / 组织的软件过程进程中各个发展阶段的定义、实现、质量控制和改善的模型化描述。这个模型用于确定软件企业 / 组织的软件过程能力和找出软件质量及过程改进方面的最关键问题,为企业 / 组织的过程改进提供指南。
CMM 的核心思想是将软件开发视为一组过程,并根据统计质量管理的理论对软件开发进行过程管理,以使其满足工程化、标准化的要求,使企业能够更好地实现商业目标。它侧重于软件开发的管理及软件工程能力的提高,因此 CMM 可以作为企业软件过程改进的指南,帮助软件开发机构建立严格的、规范的软件开发过程,最有效地提高软件工程能力。
二、CMM的成熟度等级
CMM 提供了一个软件能力成熟度模型的框架,它将软件过程改进的进化步骤组织成五个成熟度等级,为软件过程不断改进奠定了一个循序渐进的基础。每一个成熟度等级为继续改进过程提供一个台基。第一级实际上是一个起点,任何准备按 CMM 体系进化的企业都自然处于这个起点上,并通过这个起点向第二级迈进。除第一级外,每一等级包含一组过程目标,通过实施相应的一组关键过程域来达到这一组过程目标。当这一组目标达到时,就能使软件过程的一个相应的重要成分得以稳定。每达到成熟度框架的一个等级,就建立起软件过程的一个相应的稳定成分,从而导致软件开发组织过程能力一定程度的增长。
CMM 的五个成熟度等级的主要特征如下:
( 1 )初始级 — 未加定义的随意过程
软件过程的特点是无秩序的,有时甚至是混乱的。软件过程定义几乎处于无章法和步骤可循的状态,软件产品所取得的成功往往依赖极个别人的努力和机遇。
( 2 )可重复级 — 规则化的过程
已建立了基本的项目管理过程,可用于对成本、进度和功能特性进行跟踪。对类似的应用项目,有章可循并能重复以往所取得的成功。
( 3 )定义级 — 标准的、一致的过程
用于管理的和工程的软件过程均已文档化、标准化,并形成了整个软件组织的标准软件过程。全部项目均采用与实际情况相吻合的、适当修改后的标准软件过程来进行操作。
( 4 )管理级 — 可预测的过程
软件过程和产品质量有详细的度量标准。软件过程和产品质量得到了定量的认识和控制。
( 5 )优化级 — 持续改进的过程
通过对来自过程、新概念和新技术等方面的各种有用信息的定量分析,能够不断地、持续性地对过程进行改进。
四、CMM 的关键过程域
在 CMM 中每个成熟度等级(第 1 级除外)规定了不同的关键过程域,一个软件组织如果希望达到某一个成熟度等级,就必须完全满足关键过程域所规定的不同要求,即满足每个关键过程域的目标。所谓关键过程域是指一系列相互关联的操作活动,这些活动反映了一个软件组织改进过程时必须集中精力改进的几个方面。换句话说,关键过程域标识了达到某个成熟度等级时所必须满足的条件。在 CMM 中一共有 18 个关键过程域,分布在 2~5 级中。
第 2 级(可重复级)有 6 个关键过程域,主要涉及建立软件项目管理控制方面的内容。
A 需求管理( Requirements Management , RM )
B 软件项目计划( Software Project Planning , SPP )
C 软件项目跟踪与监控( Software Project Tracking and Oversight , SPTO )
D 软件子合同管理( Software Subcontract Management , SSM )
E 软件质量保证( Software Quality Assurance , SQA )
F 软件配置管理( 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 )
 
五、介绍一下CMM 的作用
1 CMM 的基本用途
SW-CMM 的基本用途有三个方面:
? 软件过程评估
借助 SW-CMM 分析软件组织当前软件过程的状态,找出其强处和弱处,这点无论软件采购单位,还是软件产品开发单位都可使用。
? 软件过程改进
根据评估结果,确定当前软件过程的弱点,按照 SW-CMM 能力等级的顺序,原则上从低级( 2 级)逐级向更高级( 3 、 4 、 5 级)发展,制定软件过程改进的策略。这一点已成为当前 CMM 的最主要用途,任何软件开发单位都可使用。需要特别注意的是 CMM 的每一个等级都是其更高等级的基础,基础条件不具备,就不可能达到更高等级。
? 软件能力评价
这种用途主要是软件采购单位为了减少软件采购的风险(包括资金、周期、特别是产品质量方面的风险),需要在招标时对投标者的软件过程能力进行评价。当然投标者也可进行自我评价,以便做到 “ 知己知彼 ” ,不过自我评价的结果一般并不被软件采购者用作可靠的依据。
2 软件企业实施 CMM 的意义
? 规范软件开发过程及管理
目前我国很多软件企业在软件开发过程方面还处于比较混乱,比较自由化的阶段。有的企业即使有一些规定,实际上也没有或没有完全执行,这主要与市场规范的问题有关。
? 规范市场竞争
对中国软件企业来说, CMM 不仅是一张国际市场的通行证,它的重要意义更在于,在达到 CMM 各级标准的过程中,通过软件工程方法的运用达到提高软件质量的目的。从而规范市场竞争,提高软件企业市场竞争能力。
? 帮助企业进行内部软件过程改进
这是 CMM 最具特色的地方。软件过程的改进和软件过程能力的提高可以提高产品质量,控制成本,提高劳动生产率。
? 增加企业的国际竞争能力
这对我国已加入 WTO 更为重要, CMM 与 ISO9000 不同,它能明确指出软件企业在软件过程和软件能力方面所达到的水平,软件企业所处的位置,企业应努力的方向及其改进的途径,这样企业的市场竞争能力就可增强。印度就是一个最好的例子。
CMM 是国际公认的 “ 事实 ” 标准,是中国软件业走向国际市场的通行证。
? 可以降低软件开发风险
这一点是 CMM 模型设计的初衷,对软件企业来说,也是极为有益的。
4 ISO9000 与 CMM

你可能感兴趣的:(CMM)