# CMMI基础

CMMI的全称是**Capability Maturity Model Integration**，即能力成熟度模型集成。

CMMI最初是由美国国防部创建，旨在评估软件承包商的质量和能力。随着时间的推移，CMMI的应用范围从软件工程扩展到其他行业，帮助组织建立、改进和衡量其能力，提高性能。CMMI模型包括多个视图，其中开发视图应用最为广泛。它为项目管理过程提供了标准化的方法，以提升软件质量。CMMI认证包括五个级别，每个级别代表不同的能力成熟度水平。

***

CMMI存在3个互补的部分，存在16个共同的核心过程域（Process Area, PA）

![](https://1780240882-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FiUkJxV19BIulXoLHTeDI%2Fuploads%2Fgit-blob-b87e4424dc01c7fa2fbdbd22e1ce4a63a10de699%2Ftp.png?alt=media)

* CMMI for Development：涵盖适用于产品和服务的开发和维护活动。
* CMMI for Acquisition（ACQ）：专注于启动和管理满足客户需求的产品和服务的活动。
* CMMI for Services：涵盖建立，交付和管理服务所需的活动。

***

CMMI提供了两种表示：

* 连续式（Continuous）表述。注重单一过程域重点改进。
* 阶段式（Staged）表述。整体改善。

![](https://1780240882-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FiUkJxV19BIulXoLHTeDI%2Fuploads%2Fgit-blob-7e8717b6ba955b32e016a84dbe14af8ca5e76e58%2Fsc.png?alt=media)

***

一个过程域是一个领域中相关实践的集群，包括如下部分：

![](https://1780240882-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FiUkJxV19BIulXoLHTeDI%2Fuploads%2Fgit-blob-f491bb07d06499cf2913719112e2205defce4f3d%2Fpa.png?alt=media)

因果分析、解决、验证（Verification）、集成项目管理例子：

> 在软件质量管理过程中，V\&V 指的是：验证和确认。验证（Verification）是指确认产品是否符合规格和需求，即是否正确**地**构建了产品。确认（Validation）是指确认产品是否符合最终用户的期望和需求，即是否构建了正确**的**产品。

![](https://1780240882-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FiUkJxV19BIulXoLHTeDI%2Fuploads%2Fgit-blob-aa83c3ae60f48a762c37f719ad9c0792839e0f99%2Fpa1.png?alt=media)

![](https://1780240882-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FiUkJxV19BIulXoLHTeDI%2Fuploads%2Fgit-blob-8333c4b94c437199d74311eea69c41b5bd4c5b9e%2Fpa2.png?alt=media)

![](https://1780240882-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FiUkJxV19BIulXoLHTeDI%2Fuploads%2Fgit-blob-78f57d25ac02891a837bf6bc7da77844d18f2222%2Fpa3.png?alt=media)

## Maturity Level

成熟度等级是一个定义明确的进化平台， 是成为成熟组织的路径。是阶段式（Staged）表述。

![](https://1780240882-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FiUkJxV19BIulXoLHTeDI%2Fuploads%2Fgit-blob-7190060e592289670b17d321d7435c8f848bab57%2Fml.png?alt=media)

### Initial Level

* 软件过程是黑匣子，在该过程中，对项目过程的可见性有限。
* 由于活动的定义很少，因此很难确定项目的进度和活动状况。
* 问题导致危机情况和赶工。
* 成功取决于人们从事这项工作的能力。
* 其特征是没有合理的管理实践。

![](https://1780240882-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FiUkJxV19BIulXoLHTeDI%2Fuploads%2Fgit-blob-1d879790620990d896601f48c8b83febdba36165%2Flv1.png?alt=media)

### Managed Level

* 利用以前成功项目的经验计划和管理新项目。
* 已经建立了组织政策，用于管理一个软件项目和实施这些政策的程序。
* 构建软件的过程是一系列黑匣子，在预定义的检查点（例如，里程碑）可以提供可见性。
* 管理层以受控的方式对问题发生反应。

![](https://1780240882-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FiUkJxV19BIulXoLHTeDI%2Fuploads%2Fgit-blob-5417873ac617e2f5c8ba38f8672bd73b2101c757%2Flv2.png?alt=media)

### Defined Level

* 构建用于开发和/或维护软件的标准过程或一组流程，然后在整个组织中使用。
* 在组织中创建一个负责软件流程活动的组，有时称为软件工程过程组（Software Engineering Process Group, SEPG）。
* 每个黑匣子（即任务）的内部结构可见。
* 管理层主动为可能出现的风险做准备。

![](https://1780240882-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FiUkJxV19BIulXoLHTeDI%2Fuploads%2Fgit-blob-b618ddd6f6561f52a87844ce405bfdb66956b206%2Flv3.png?alt=media)

### Quantitatively Managed Level

* 为软件流程和产品设定定量质量目标。
* 建立一个整个组织的软件流程数据库，以收集，分析和存储项目中的数据。
* 使用测量来建立定量基础，以评估软件流程和产品。
* 黑匣子中的软件过程现在被定量进行仪器和控制。

![](https://1780240882-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FiUkJxV19BIulXoLHTeDI%2Fuploads%2Fgit-blob-313404241120e38932c42c59545f505cf09f22ec%2Flv4.png?alt=media)

### Optimizing Level

* 可以识别弱点并积极应对。
* 拥有将缺陷预防能力的软件团队。
* 现在可以删除黑匣子，并可以引入新的和改进的黑匣子。
* 管理人员能够有效估计，然后跟踪变化的影响和有效性。

![](https://1780240882-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FiUkJxV19BIulXoLHTeDI%2Fuploads%2Fgit-blob-69fc5661cedf2352e5635297c52106bbea64efcb%2Flv5.png?alt=media)

![](https://1780240882-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FiUkJxV19BIulXoLHTeDI%2Fuploads%2Fgit-blob-44b4f1f039da471a0ca1fc2551b73b93938c774e%2Fmlt.png?alt=media)

## Capability Level

Capability Level对应于CMMI的连续式（Continuous）表述。注重单一过程域重点改进，描述了某个过程域的能力。有六个级别。每个级别都是连续式过程改进的基础中的一层。

* 5 Optimizing
* 4 Quantitatively Managed
* 3 Defined
* 2 Managed
* 1 Performed
* 0 Incomplete

例子：

![](https://1780240882-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FiUkJxV19BIulXoLHTeDI%2Fuploads%2Fgit-blob-0eb5b36bfbc73a6eaf499378334ef8e1a93e0348%2Fcl.png?alt=media)

> * http://www.sei.cmu.edu/cmmi/ (main CMMI site)
> * http://seir.sei.cmu.edu/seir/ (Software Engineering Information Repository)
> * http://dtic.mil/ndia (annual CMMI Technology Conferences)
> * http://seir.sei.cmu.edu/pars (publicly released SCAMPI appraisal summaries)
