||
CMMI全称是Capability Maturity Model Integration, 即能力成熟度模型集成,是由美国国防部与卡内基-梅隆大学和美国国防工业协会共同开发和研制的。SW-CMM(Capability Maturity Model for Software)即通常所说的CMM,是CMMI模型的前身 。CMMI是一套融合多学科的、可扩充的产品集合,是一个可以改进系统工程和软件工程的整合模式,其研制的初步动机是为了利用两个或多个单一学科的模型实现一个组织的集成化过程改进。SEI于2000年8月11日颁布了CMMI-SE/SW 1.0版本,2001年12月颁布了1.1版本,这次发布标志着CMMI的正式启用。2010年11月1日SEI已经发布了CMMI的1.3版本,为当前的最新版本。
为了使大家更好的理解和应用CMMI模型,CMMI提供两种表述方式:连续式和阶段式。目前我国业内评估大多采用阶段式表述方式。
连续式表述:主要是衡量一个企业的项目能力达到的能力等级。企业在接受评估时可以选择自己希望评估的项目或希望评估的过程来进行评估,因为是企业自己挑选项目和过程,所以评估通过的可能性就较大一点。但是,此评估结果反映的内容就比较窄一点。它仅仅表示企业在该项目或类似项目的某些过程域达到了某一能力等级。
阶段式表述:主要是衡量一个企业的成熟度等级,也即企业在项目实施上的综合实力。此种方式要求企业在进行评估时,一定要由评估师来挑选企业内部的任何项目,甚至于任何项目的任何部分来进行评估。一般来讲,一个企业要想在阶段性评估中达到某一等级,其企业内部的大部分项目实施都要达到同一等级。阶段性表述的难度要大一些。
CMMI模型将过程域分为四类,分别是过程管理、项目管理、工程和支持。其中过程管理过程域涵盖一些涉及定义、计划、配置、实施、监督、控制、评估、量化以及过程改进相关的交叉项目活动;项目管理过程域涵盖一些涉及项目策划、监督和控制的项目管理活动;工程过程域涵盖一些开发和维护活动;支持过程域涵盖支持产品开发和维护的活动。
CMMI模型共有5个等级,22个过程域,各个等级特点及过程域如下表所示:
等级 |
过程域 |
要点 |
各等级特点 |
1初始级 |
|
|
软件过程是无序的,对过程几乎没有定义,成功取决于个人努力。 |
2可重复级 |
需求管理REQM |
如何解决需求的变更问题 |
项目级建立基本的管理过程,且过程和经验可重复 |
项目策划PP |
如何编制一个合理可行的项目计划 | ||
项目监督与控制PMC |
对照计划,跟踪项目的进展情况 | ||
供应商协议管理SAM |
采购及外包合同的管理 | ||
度量与分析MA |
采集数据,分析数据,通过数据管理项目 | ||
过程与产品质量保证 PPQA |
强调应以制度化为主导,检查是否落实了制度 | ||
配置管理CM |
管理开发过程中文档与代码的变更,确保一致性 | ||
3已定义级 |
需求开发RD |
如何获取客户的需求,如何分析需求,如何描述需求,如何评审需求 |
软件过程标准化、文档化,所有项目均使用经批准、剪裁的标准软件过程来开发和维护软件。 |
技术解决方案TS |
探讨出解决需求的方法,实现需求 | ||
产品集成PI |
联调、集成、集成测试 | ||
验证Ver |
通过同行评审、代码走查等发现问题 | ||
确认Val |
通过系统测试、验收测试、原型确认等发现不满足需求的问题 | ||
组织过程焦点OPF |
如何识别改进点,如何进行改进 | ||
组织过程定义OPD |
如何定义过程体系,定义哪些过程体系 | ||
组织培训OT |
如何做好公司级的培训 | ||
集成化项目管理IPM |
管理项目的人与人之间、小组与小组之间、过程与过程之间的合作 | ||
风险管理RM |
如何识别风险,分析风险,评价风险,跟踪和控制风险 | ||
决策分析与决议DAR |
如何做技术决策与管理决策 | ||
4已管理级 |
组织过程性能OPP |
在组织级建立目标、性能基线与性能模型,将历史的经验量化、模型化 |
收集对软件过程和产品质量的详细度量值,对软件过程和产品有定量的理解和控制。 |
量化项目管理QPM |
基于统计技术管理过程能力以满足符合SMART原则的项目目标 | ||
5优化级 |
组织性能管理 OPM |
通过识别与实施组织改进,以满足组织商业目标 |
过程的量化反馈和先进的新思想、新技术促使过程持续不断改进,防止缺陷及问题的发生。 |
原因分析与决策CAR |
针对问题实施根因分析,发现改进点 |
说明: |
|
项目管理 |
|
过程管理 |
|
工程 |
|
支持 |
成熟度等级是循序渐进的,如果想达到某个成熟度等级,例如CMMI 3级,除了满足CMMI 3级本身11个过程域之外,还要满足CMMI 2级的7个过程域,依此类推。
正确理解CMMI,还应理解,1)CMMI是一个过程参考模型/过程框架,而不是过程方法。它主要告诉我们:好的开发过程具有怎样的特点/特征,具有哪些要素,即告诉我们“应该做什么?”,而采用哪种具体的过程方法,CMMI不做限制;2)CMMI是适用于整个开发组织的、全范围的参考模型,不仅仅包含开发过程,其他过程如采购,培训和过程改进等也都是适用的;3)实施CMMI是需要编写文档的,但不仅仅是要产出文档,更重要的是产生文档的过程,以及文档所起到的作用和价值。