软件能力成熟度模型是一种对软件组织在定义、实施、度量、控制和改善其
软件过程的实践中各个
发展阶段的描述形成的标准。
简介
CMM:其英文全称为Capability Maturity Model ,英文缩写为SW-CMM,简称CMM。它是对于软件组织在定义、实施、度量、控制和改善其软件过程的实践中各个
发展阶段的描述。CMM的核心是把
软件开发视为一个过程,并根据这一原则对软件开发和维护进行过程监控和研究,以使其更加科学化、标准化、使企业能够更好地实现商业目标。
分级
CMM是一种用于评价软件承包能力并帮助其改善
软件质量的方法,侧重于
软件开发过程的管理及工程能力的提高与评估。CMM分为五个等级:一级为初始级,二级为可重复级,三级为已定义级,四级为已
管理级,五级为优化级。
CMM/CMMI将软件过程的
成熟度分为5个等级,以下是5个等级的基本特征:
(1)初始级(initial)。工作无序,项目进行过程中常放弃当初的计划。管理无章法,缺乏健全的
管理制度。开发项目成效不稳定,项目成功主要依靠项目负责人的经验和能力,他一旦离去,工作秩序面目全非。
(2)可重复级(Repeatable)。管理制度化,建立了基本的管理制度和规程,管理工作有章可循。 初步实现标准化,开发工作比较好地按标准实施。 变更依法进行,做到基线化,稳定可跟踪,新项目的计划和管理基于过去的实践经验,具有复现以前成功项目的环境和条件。
(3)已定义级(Defined)。开发过程,包括技术工作和管理工作,
均已实现标准化、文档化。建立了完善的
培训制度和专家评审制度,全部技术活动和管理活动均可控制,对项目进行中的过程、岗位和职责均有共同的理解 。
(4)已管理级(Managed)。产品和过程已建立了定量的
质量目标。开发活动中的
生产率和质量是可量度的。已建立过程数据库。已实现项目产品和过程的控制。
可预测过程和产品质量趋势,如预测偏差,及时纠正。
(5)优化级(Optimizing)。可通过采用新技术、新方法,集中精力改进过程。具备防缺陷、识别薄弱环节以及改进的手段。可取得过程有效性的统计数据,并可据此进行分析,从而得出最佳方法。
历史来源
CMM是由
美国卡内基梅隆大学软件工程研究所1987年开发成功的,是国际上最流行最实用的
软件生产过程标准和软件企业
成熟度等级认证标准。我国已有软件企业通过了CMM标准认证 。
SW-CMM(Capability Maturity Model For Software 软件
生产能力CMU SEI)研究出的一种用于评价软件
承包商能力并帮助改善软件质量的方法,其目的是帮助软件企业对
软件工程过程进行管理和改进,增强开发与改进能力,从而能按时地、不
超预算地开发出高质量的软件。
其所依据的想法是:只要集中精力持续努力去建立有效的软件工程过程的
基础结构,不断进行管理的实践和过程的改进,就可以克服软件生产中的困难。CMM它是国际上最流行、最实用的一种软件生产过程标准,已经得到了众多国家以及国际软件产业界的认可,成为当今企业从事规模软件生产不可缺少的一项内容。
CMM通用流行的版本是1.1(Version1.1)。按照软件工程研究所(SEI)的原来计划,CMM的改进版版本2.0(V2.0)是要在1997年的11月完成的。但是,美国国防部办公室要求软件工程研究所(SEI)延迟发放公布CMM版本2.0,直至他们完成另一个更为紧迫的项目-CMMI。
CMMI(Capability Maturity Model Integration
能力成熟度模型集成),是
美国国防部的一个设想。他们希望把所有现存的与将被发展出来的各种
能力成熟度模型,集成到一个框架中去。这个框架用于解决两个问题:第一,
软件获取办法的改革;第二,从集成产品与过程发展的角度出发,建立一种包含健全的
系统开发原则的
过程改进。
CMM为软件企业的
过程能力提供了一个阶梯式的改进框架,它基于过去所有软件工程过程改进的成果,吸取了以往软件工程的经验教训,提供了一个基于过程改进的框架;它指明了一个软件组织在软件开发方面需要管理哪些主要工作、这些工作之间的关系、以及以怎样的先后次序,一步一步的做好这些工作而使软件组织走向成熟。
CMM的诞生
信息时代,软件质量的重要性越来越为人们所认识。软件是产品、是装备、是工具,其质量使得
顾客满意,是
产品市场开拓、事业得以发展的关键。而软件工程领域在1992年至1997年取得了前所未有的进展,其成果超过软件工程领域过去15年来的成就总和。
软件管理工程引起广泛注意源于20世纪70年代中期。当时美国国防部曾立题专门研究软件项目做不好的原因,发现70%的项目是因为管理不善而引起,而并不是因为技术实力不够,进而得出一个结论,即管理是影响软件
研发项目全局的因素,而技术只影响局部。到了20世纪90年代中期,软件
管理工程不善的问题仍然存在,大约只有10%的项目能够在预定的费用和进度下交付。软件项目失败的主要原因有:需求定义不明确;缺乏一个好的软件开发过程;没有一个统一领导的产品研发小组;子
合同管理不严格;没有经常注意改善软件过程;对
软件构架很不重视;
软件界面定义不善且缺乏合适的控制;
软件升级暴露了硬件的缺点;关心创新而不关心费用和风险;
军用标准太少且不够完善等等。在关系到软件项目成功与否的众多因素中,软件度量、工作量估计、
项目规划、进展控制、需求变化和
风险管理等都是与工程管理直接相关的因素。由此可见,软件管理工程的意义至关重要。
软件管理工程和其它工程管理相比有其特殊性。首先,软件是
知识产品,进度和质量都难以度量,
生产效率也难以保证。其次,
软件系统复杂程度也是超乎想象的。因为软件复杂和难以度量,软件管理工程的发展还很不成熟。
软件管理工程的发展,在经历了从70年代开始以
结构化分析与设计、结构化评审、
结构化程序设计以及结构化测试为特征的结构化生产时代,到90年代中期,以
CMM模型的成熟模型和日益为市场接受为标志,已经进入以过程成熟模型CMM、
个体软件过程PSP和群组软件过程
TSP为标志的以过程为中心的时代,而软件发展第三个时代,及软件工业化生产时代,从90年代中期软件过程技术的成熟和
面向对象技术、
构件技术的发展为基础,已经渐露端倪,估计到2005年,可以实现真正的软件工业化生产,这个趋势应该引起软件企业界和有关部门的高度重视,及早采取措施,跟上世界软件发展的脚步。软件生产转向以改善软件过程为中心,是
世界各国软件产业或迟或早都要走的道路。
软件过程改善是当前软件管理工程的核心问题。50多年来计算事业的发展使人们认识到要高效率、高质量和低成本地开发软件,必须改善软件
生产过程必要条件。
软件过程研究的是如何将人员、技术和工具等组织起来,通过有效的
管理手段,提高软件生产的效率,保证
软件产品的质量。由此诞生了软件过程的三个流派:CMU-SEI的CMM/PSP/TSP;ISO 9000质量标准体系;ISO/IEC 15504(SPICE)。
ISO9001、ISO9000-3、ISO9004-2、ISO9004-4、ISO9002;ISO/IEC 15504(SPICE)是1991年
国际标准化组织采纳了一项动议,开展
调查研究,按照CMU-SEI的基本思路,产生的
技术报告ISO/IEC 15504--信息技术软件
过程评估。
学术界和工业界公认美国 Carnegie Mellon 大学软件工程研究所(CMU/SEI) 以W.S.Humphrey为首主持
研究与开发的软件能力成熟度模型CMM是当前最好的软件过程,已成为业界事实上的软件过程的工业标准。
CMM的发展
1987年美国 Carnegie Mellon 大学软件工程研究所(CMU/SEI)以W.S.Humphrey为首的研究组发表了CMM/PSP/TSP 技术,为软件管理工程开辟了一条新的途经。
CMM框架用5个不断进化的层次来评定软件生产的历史与现状:其中初始层是混沌的过程,可重复层是经过训练的软件过程,定义层是标准一致的软件过程,
管理层是可预测的软件过程,
优化层是能
持续改善的软件过程。任何单位所实施的软件过程,都可能在某一方面比较成熟,在另一方面不够成熟,但总体上必然属于这5个层次中的某一个层次。而在某个层次内部,也有成熟程度的区别。在CMM框架的不同层次中,需要解决带有不同层次特征的软件过程问题。因此,一个软件开发单位首先需要了解自己正处于哪一个层次,然后才能够对症下药地针对该层次的特殊要求解决相关问题,这样才能收到事半功倍的软件过程改善效果。任何软件开发单位在致力于软件过程改善时,只能由所处的层次向紧邻的上一层次进化。而且在由某一成熟层次向上一更成熟层次进化时,在原有层次中的那些已经具备的能力还必须得到保持与发扬。
软件产品质量在很大程度上取决于构筑软件时所使用的软件开发和
维护过程的质量。软件过程是人员密集和设计密集的作业过程:若缺乏有素训练,就难以建立起支持实现成功是软件过程的基础,改进工作亦将难以取得成效。CMM描述的这个框架正是勾列出从无定规的混沌过程向训练有素的成熟过程演进的途径。
上面提到了CMM把软件开发组织的能力成熟度分为5个的等级。除了第1级外,其他每一级由几个关键过程方面组成。每一个关键过程方面都由上述5种公共特性予以表征。CMM给每个关键过程了一些具体目标。每个公共特性归类的关键惯例是按该关键过程的具体目标选择和确定的。如果恰当地处理了某个关键过程涉及的全部关键惯例,这个关键过程的各项目标就达到了,也就表明该关键过程实现了。这种成熟度分级的优点在于,这些级别明确而清楚地反映了过程改进活动的轻重缓急和先后顺序。