Hansky与软件能力成熟度模型
1. CMM的概念
我国目前谈及的CMM是指“软件能力成熟度模型”,其英文全称为Capability Maturity Model for Software(英文缩写名是SM-CMM),更确切地说,是指“软件能力成熟度模型1.1版”和"“能力成熟度模型的关键惯例1.1版”(Capability Maturity Model for software,Version 1.1和Key Practices of the Capability Maturity Model, Version 1.1简称CMM 1.1版)。CMM是美国卡内基-梅隆大学软件工程研究所(以下简称SEI)的研究成果;CMM 1.1版发表于1993年。SEI是美国国防部出资于1984年设立。从1986年开始,SEI针对软件组织改善其软件过程,特别是美国国防部对软件承包商的能力评价问题,研究过程成熟度框架。1987年9月,SEI发表了关于过程成熟度框架的简要说明和成熟度调查问卷。以这一过程成熟度框架为蓝本,在美国联邦政府促进下,从1987年到1991年在美国的一些大公司的软件组织进行了软件过程能力成熟度模型的评估实践。根据这4年的实践经验,特别是从美国政府和工业界反馈的关于软件过程评估的信息,SEI在原过程成熟度框架的基础上开发出了“软件能力成熟度模型(CMM) 0.0版”。在CMM 0.0版发表后的两年里,先后产生了30多稿草案,于1993年2月发表了“软件能力成熟度模型1.1版”和“能力成熟度模型的关键惯例1.1版”(统称SM-CMM 1.1版,有时干脆简称为CMM)。
软件产品的质量在很大程度上取决于构筑软件时所使用的软件开发和维护过程的质量。软件过程是人员密集和设计密集的作业过程;若缺乏有素的训练,就难以建立起支持实现成功改进软件过程的基础,改进工作亦将难以取得成效。CMM描述的这个框架正是勾列出从无定量及过程改进方面的最关键的问题,从而为选择过程改进战略提供指南。如前所述CMM 1.1版包括两部分:“软件能力成熟度模型”和“能力成熟度模型的关键惯例”。“软件能力成熟度模型”主要是描述这种模型的结构,并且给出该模型的基本构件的定义。“能力成熟度模型的关键惯例”除了重复叙述能力成熟度模型结构及其构件外,以大量篇幅详细描述了每个“关键过程方面”涉及的“关键惯例”。“关键过程方面”是指:一组相关联的活动和通过执行这些活动可以实现既定的过程能力。所谓“关键惯例”是指:使关键过程方面得以有效实现和制度化的作用最大的基础设施和活动。各个关键惯例按每个关键过程方面的5个“公共特性”(对执行该过程的承诺,执行该过程的能力,该过程中要执行的活动,对该过程执行情况的度量和分析,及证实所执行的活动符合该过程)归类,逐一详细描述。按CMM的规定,作到了某个关键过程的全部关键惯例就认为实现了该关键过程,实现了某成熟度级及其以低各级所含的全部关键过程就认为达到了该级。
CMM把软件开发组织的能力成熟度分为5个可能的等级。除了第1级外,其他每一级由几个关键过程方面组成。每一个关键过程方面都由上述5种公共特性予以表征。CMM给每个关键过程规定了一些具体目标。按每个公共特性归类的关键惯例是按该关键过程的具体目标选择和确定的。如果恰当地处理了某个关键过程涉及的全部关键惯例,这个关键过程的各项目标就达到了,也就表明该关键过程实现了。这种分级的思路在于把一个组织执行软件过程的成熟程度分成循序渐进的几个阶段,这与软件组织提高自身能力的实际推进过程相吻合。这种成熟度分级的优点在于,这些级别明确而清楚地反映了过程改进活动的轻重缓急和先后顺序。这一点很重要,因为大多数软件组织只能在某一段时间里集中开展少数几项过程改进活动。
CMM总体结构图示说明参见图1。

图1 能力成熟度模型的结构
CMM的开发者们结合他们的软件产业环境和软件产品质量保证的需要,在CMM 1.1版中把具有最高能力成熟度的组织设定为处于这样一种情况下的组织:整个组织都持续致力于过程改进;这个组织具备足够的手段用于事先发现过程的长处及短处和防止发生缺陷;它拥有丰富的软件过程成功经验的数据并且可用于对新技术进行“费/效”分析和提出对本组织软件过程的更改建议;它能发现那些可能发掘出最佳软件工程惯例的合理化建议并使之在整个组织里实现转化。这种能力成熟度被定义为CMM的第5级,称之为“(持续)优化级”。
另一方面,现实的软件业里尚有不少组织还不具备稳定的环境用于软件开发和维护,它们缺乏健全的管理惯例,其软件过程能力无法预计;它们的软件过程是一片混沌;并且它们的软件过程总是随着软件开发工作的推进而处于变更和调整之中。这种情况被CMM定义为第1级能力成熟度,称之为“初始级”。
第2级为可重复级。在处于可重复级的组织里,顾客的需求和本组织的工作产物是受控的,并且建立起了基本的项目管理惯例。藉以产生软件产品的一系列过程有如一连串“黑盒子”;尽管管理者可能不知道在“黑盒子”里具体发生了什么,但是,他能掌握过程的产物和那些确认过程是否正常的校验点,从而在发生问题时作出反应。这一级有6个关键过程方面,共含121个关键惯例:
- 需求管理(12,这是关键惯例数,以下同)
- 软件项目策划(25)
- 软件项目追踪和监督(24)
- 软件分包方管理(22)
- 软件质量保证(17)
- 软件配置管理(21)
第3级是(明确)定义级。在这一级,对于在整个组织里用于软件开发和维护的标准过程以文件形式被固定下来。针对各个基本过程建立起文件化的“标准软件过程”,这是第3级能力成熟度的突出特点。这些标准软件过程(包括工程过程和管理过程)被集成为一个相关的整体;这些标准软件过程有助于软件经理和技术人员更有效地履行他们的职责。实践表明,对软件过程加以标准化的过程,也就是发掘高效软件工程惯例的过程。而标准软件过程的建立和实施则为本组织软件项目的实施提供了公共的工程环境。较普遍的看法是,只有当达到了第3级能力成熟度时,才表明这个组织的软件能力“成熟”了。因为,在到达这一级后,表明上述的“黑盒子”被打开了。在第2级的基础上,第3级包括7个关键过程方面,共含108个关键惯例:
- 组织过程定焦(16)
- 组织过程定义(11)
- 培训(16)
- 集成式软件管理(19)
- 软件产品工程(20)
- 组间协调(17)
- 对等审查(9)
第4级是定量管理级。处于这一级的组织已经能够为软件产品和软件过程设定定量的质量目标,并且能对跨项目的重要软件过程活动的效率和质量予以度量;可以利用本组织的软件过程数据库汇集各项目软件过程产生的数据并加以分析。达到第4级标准后,该组织的各个软件过程是用各种确切定义并且一致地尺度来说明的;这些尺度是用以评价项目的软件过程和产物的定量基础。在第2、3级的基础上,第4级包括两个关键过程方面,共含32个关键惯例:
如前所述,第5级叫持续优化级。在前几级的基础上,第5级包括3个关键过程方面,共含59个关键惯例:
- 缺陷预防(18)
- 技术变更管理(22)
- 过程变更管理(19)
[1] [2] [3] [4] 下一页