CMM(Capability Maturity Model)
软件过程能力成熟度模型
一、第一性原理:CMM 在解决什么根本问题
1. 软件工程的核心不确定性
软件工程的根本难题并不在于“是否能写出代码”,而在于:
组织是否具备稳定、可预测、可持续地产出软件产品的能力。
当组织缺乏这种能力时,常见现象包括:
- 成功高度依赖个别“英雄人物”
- 项目结果不可复现
- 质量、成本、周期严重波动
这是一种组织层面的不确定性,而非技术问题。
2. CMM 的本质定义(第一性原理)
CMM 是一个用于衡量和提升组织“软件过程能力”的成熟度模型。
其中:
- **过程能力**:组织通过既定过程,稳定地产生预期结果的能力
- **成熟度**:这种能力在组织层面被制度化、系统化的程度
CMM 并不关注:
- 使用了哪些工具
- 写了多少文档
它真正关注的是:
- 结果是否可以复现
- 过程是否可控、可预测、可持续改进
二、成熟度演进的核心主轴(抽象模型)
CMM 的五个等级并不是经验枚举,而是沿着稳定的能力演进主轴展开。
1. 组织能力演进的四条主轴
| 演进维度 | 低成熟度 | 高成熟度 |
|---|---|---|
| 控制方式 | 经验驱动 | 数据 / 模型驱动 |
| 组织依赖 | 个人能力 | 系统能力 |
| 管理形态 | 事后救火 | 过程内控制 |
| 改进机制 | 被动纠错 | 主动学习与优化 |
成熟度提升的本质,是组织从“人治”走向“系统治理”。
2. 成熟度中的关键质变节点
成熟度不是线性堆叠,而存在关键跃迁:
- **1 → 2:从混乱到可控**
- **3 → 4:从规范到可预测(核心质变)**
- **4 → 5:从控制到学习**
三、五级成熟度模型(结构化解析)
Level 1:初始级(Initial)
组织特征
- 无稳定过程,高度依赖个人能力
- 计划经常失效,项目不可预测
- 成功是偶然事件
本质判断
组织尚未具备“过程能力”,只有“个体能力”。
Level 2:可重复级(Repeatable)
组织特征
- 建立基本项目管理制度
- 计划、跟踪、变更开始制度化
- 成功经验可以在相似项目中复现
能力本质
组织具备了“项目级稳定性”。
Level 3:已定义级(Defined)
组织特征
- 过程在组织层面标准化
- 角色、职责、活动有统一理解
- 建立培训和评审制度
能力本质
组织具备“组织级过程一致性”。
注意:此阶段仍以定性管理为主。
Level 4:已管理级(Managed)
组织特征
- 关键过程和质量目标实现定量化
- 生产率、缺陷率可测量、可分析
- 建立过程数据库和统计控制
能力本质(关键跃迁)
组织首次具备可预测的软件生产能力。
这是从“规范执行”到“科学管理”的质变。
Level 5:优化级(Optimizing)
组织特征
- 以数据驱动持续过程改进
- 系统性预防缺陷,而非事后修复
- 主动引入新技术、新方法
能力本质
组织成为一个持续学习和自我进化的系统。
四、关键认知澄清与常见误区
1. CMM 不是“流程越多越高级”
- 成熟度不等于文档数量
- 成熟度等于**结果稳定性与可预测性**
2. CMM 是组织模型,而不是项目模型
- 单个项目成功 ≠ 组织成熟
- 评估对象是组织的长期能力
3. 并非所有组织都需要追求五级
- 成熟度应与组织规模、风险、领域匹配
- 过度成熟可能导致官僚化
五、时代背景与现代工程方法的关系
1. CMM 的历史定位
- 诞生于大型、复杂、强监管的软件工程环境
- 主要解决规模化开发失控问题
2. 与敏捷 / DevOps 的关系
| CMM 关注 | 敏捷 / DevOps 关注 |
|---|---|
| 过程稳定性 | 反馈速度 |
| 可预测性 | 快速适应 |
| 组织治理 | 团队自治 |
冲突的不是模型本身,而是教条化执行方式。
六、抽象总结:CMM 的长期价值
CMM 的真正价值不在于“五个等级”,而在于它揭示了一条普适规律:
任何复杂组织,只有将成功从“人”中抽离,沉淀为“系统能力”,才能获得长期稳定性。
这一规律同样适用于:
- 软件工程
- 产品研发
- 组织管理
- 知识生产系统
关联内容(自动生成)
- [/软件工程/理论/敏捷软件开发.html](/软件工程/理论/敏捷软件开发.html) CMM与敏捷开发都是软件过程改进方法,CMM关注过程成熟度的阶段性提升,而敏捷强调迭代和响应变化
- [/软件工程/理论/项目管理.html](/软件工程/理论/项目管理.html) CMM模型与项目管理密切相关,CMM的成熟度等级影响项目管理的规范性和可预测性
- [/软件工程/DevOps.html](/软件工程/DevOps.html) DevOps文化和实践是软件工程成熟度的体现,与CMM的过程改进目标相辅相成
- [/软件工程/研发效能.html](/软件工程/研发效能.html) 研发效能的提升需要过程改进支撑,CMM提供了一种系统性的过程改进框架
- [/软件工程/架构/架构治理.html](/软件工程/架构/架构治理.html) 架构治理是组织能力的体现,与CMM关注的组织过程能力成熟度密切相关