CMM概观
一、 什么是CMM?
CMM(Capability Maturity Model),英文直译的意思是“能力成熟度模型”。由卡内基.梅隆大学的软件工程协会(Software Engineering Institute, 简称SEI) 提出并完善,目的是通过一个合理的体系模型来对软件组织开发能力进行合理有效的评估,帮助软件组织在模型实施的过程中提高软件过程管理能力,降低软件系统开发风险,在预定的项目周期和预算内开发出高质量的软件产品。
可根据CMM的三个组成字母对其含义进行分解并分析:
C (Capability) – 能力,指过程能力(Process Capability),使用一个过程执行项目时能够从中期望得到的结果范围称为项目的过程能力。能力是考核一个软件组织实力的重要基准点,比如,这个组织的技术储备、管理手段、人员构成等等,是该组织“可”能力的组成因素,一个组织究竟能不能承担一个项目,承担一个项目后有什么可以预见的后果,都可以从这些组成因素中进行可靠的判断。所以这里指的“能力”是一种“期望得到的结果范围”。比如参加赛跑的运动选手,各个选手的能力都是可以用“期望得到的结果范围”――跑完赛程所需花费的时间来进行衡量,于是就有了赛前的“夺冠热门”的分析和预测。因而,CMM是一种带有评估和预测的模型。
M (Maturity) – 成熟,指成熟度等级 (maturity levels),意指在通往高成熟度的过程中所处在的一些稳定的良好状态。所谓“稳定的良好状态”,为便于理解,以人的生长发育作比,可以划分为不同的阶段,如婴儿、幼儿、少儿、青少年、青年、壮年等阶段。CMM共分为五个成熟度等级,并为每个等级定义了成熟度标准,依据这些标准,评估方对软件组织的成熟度做出评估;对于被评估的软件组织而言,遵照这些等级模型定义,通过一个循序渐进的过程,由低到高的提升自身的成熟度能力。所以,CMM是一个起到指导和评估作用的分等级的模型。
M (Model) -模型,模型本身的含义就是抽象的,同样,CMM本身只规定了过程所必需的特征,但是不规定专门的过程。所以,CMM是一个软件管理过程的框架 (Framework),其本身是抽象的,具体的实施由各软件组织进行符合自身情况的相应定制和运用。
综合以上分析,CMM是一个评估和预测软件组织能力的、分级的、抽象的软件过程管理框架。
二、 CMM与项目管理
60年代出现了软件危机,出现危机的原因在于当时落后的软件生产方式满足不了越来越大型的软件系统的开发需要,软件质量得不到有效的确保,于是软件工程学出现。软件工程学是利用工程学角度来研究并指导软件开发,利用严格的工程技术理论来使软件开发形成科学的生产体系。但是,软件工程是否能够完全解决所说的软件危机?在现实的世界中,事物往往总是以两面的形式出现,如果说软件工程是解决软件危机的一个途径,那么另外一个途径又是什么?软件开发通常要在一定的时间周期内完成,而且越大的系统开发周期一般来说就越长,这个过程就是通常所说的软件过程 (Software Process)。正因为过程经历了一段不短时间,所以过程充满了不可预见性,不知道下一步会出现什么情况,而且,一旦意外的情况出现,将如何进行处理?对于过程,如果仅仅利用软件工程这种技术手段来应付,无疑是不够充分的,对付过程,最有效的就是管理,因为管理比技术更富有弹性,所以,解决软件危机的另一途径就是有效的项目管理。项目管理是基于过程的,CMM作为软件过程管理的改进框架,在每一个成熟度等级上都对软件过程的各阶段做了特征描述,以是否满足这些特征来对软件组织做出能力成熟度评估。这些特征描述,在CMM中称为关键过程域 (Key Process Area,KPA),每个KPA规定了软件组织为满足该KPA必须实现的目标,目标则面向组织管理和过程管理,所以,组织实现了一个等级所有的KPA目标,则在项目管理的能力上达到了相应的成熟度级别。
三、 CMM等级模型
CMM模型分为五个等级,初始级、可重复级、已定义级、已管理级和优化级,具体内容如下表:
等级名
特征
关键过程域 (KPA)
初始级
以个人主观认为合适的方式来开发
可重复级
不存在组织范围的过程,利用已存在的项目管理实践和经验来开发
需求管理
软件项目规划
软件项目跟踪和监督
软件转包管理
软件质量控制
软件配置管理
已定义级
有定义好的属于组织范围的过程,按照过程有效的进行开发
组织过程焦点
组织过程定义
培训方案
集成软件管理
软件生产工程
组间协调
互相评审
已管理级
可以对过程能力进行量化,根据量化来预测和控制一个项目的过程绩效
软件质量管理
定量过程管理
优化级
过程能力可控、可改进,并且可以以量化方式来评估改进
过程变更管理
技术变更管理
故障预防
从这个表可以看出,CMM基于过程,由软件组织自身体系提供支持,达到过程量化、可控的目标,以应付变化的软件开发过程。能力成熟度越高的组织,其项目开发和项目成果越能够依赖于可控制、可靠的软件过程,而不是依赖在不稳定不可预见的个人能力之上,比如某个项目领导,或者是某个核心技术人员。
四、 CMM在组织中的实施
从CMM各个等级的KPA可以看出,CMM的构成有多个方面和不同层次,具体实施需要依靠于各种工具、技术、方法、手段,并形成开发规范和管理传统,更重要的一点是,CMM本身需要融合在一个软件组织的体系当中,也就是说软件组织的各级、各层、各个组织部分,甚至个人需要在软件过程、软件过程的不同阶段能够以成熟规范的方式来协调和运作,由此获得最佳的项目成果。对成熟度融合得好的软件组织,CMM不再是外来物,而是好比内部的一股与生俱来力量,它就蕴藏在组织的肌体当中,在软件产品生产中发挥着巨大的作用。
注:本文小部分资料引用自《软件项目管理实践》(Software Project Management in Practice).[清华大学出版社].Pankaj Jalote(印度)著。