能力成熟度模型(CMM)及其在软件工程中的级别
什么是 CMM?
能力成熟度模型(Capability Maturity Model)用作衡量组织软件过程成熟度的基准。
CMM 是在 80 年代末由软件工程研究所开发的。它是美国空军资助的一项研究的成果,用于评估分包商的工作。后来,基于 1991 年创建的 CMM-SW 模型来评估软件开发成熟度,多个其他模型已集成到 CMM-I 中,它们是:
什么是能力成熟度模型(CMM)的级别?
- 初始
- 可重复/已管理
- 已定义
- 量化管理
- 优化
CMM 不同级别会发生什么?
级别 | 活动 | 优点 |
---|---|---|
级别 1 初始 |
|
无。项目是完全混乱的。 |
级别 2 已管理 |
|
|
级别 3 已定义 |
|
|
级别 4 量化管理 |
|
|
级别 5 优化 |
|
|
下图以图示方式展示了 CMM 不同级别发生的情况。
实施 CMM 需要多长时间?
对于任何软件开发公司来说,CMM 都是维持产品质量最理想的流程,但其实施所需时间比预期要长一些。
- CMM 的实施并非一蹴而就。
- 这不仅仅是“纸面工作”。
- 典型的实施时间为:
- 3-6 个月 -> 准备阶段
- 6-12 个月 -> 实施阶段
- 3 个月 -> 评估准备
- 12 个月 -> 每个新级别
CMM 的内部结构
CMM 中的每个级别(级别 1 除外)都定义为**关键过程域(KPA)**。每个 KPA 定义了一组相关的活动,这些活动共同完成一套对改进软件能力至关重要的目标。
对于不同的 CMM 级别,都有对应的 KPA 集合,例如,对于 CMM 模型 2,KPA 包括:
- REQM- 需求管理
- PP- 项目规划
- PMC- 项目监控和控制
- SAM- 供应商协议管理
- PPQA- 过程和质量保证
- CM- 配置管理
同样,对于其他 CMM 模型,也有特定的 KPA。要确定 KPA 的实施是否有效、持久且可重复,它需要基于以下基础进行映射:
- 执行承诺
- 执行能力
- 执行的活动
- 测量和分析
- 验证实施
CMM 模型的局限性
- CMM 确定了流程应该解决什么问题,而不是如何解决。
- 它并没有解释软件过程改进的所有可能性。
- 它侧重于软件问题,但不考虑战略业务规划、采用技术、建立产品线和管理人力资源。
- 它没有说明组织应该从事哪种类型的业务。
- CMM 对于目前处于危机中的项目没有用。
为什么要使用 CMM?
如今,CMM 在软件行业被视为一种“批准印章”。它在改进软件质量方面发挥着多种作用。
- 它指导可重复的标准流程,从而缩短了学习如何完成工作的学习时间。
- 实践 CMM 意味着实践标准的开发协议,这意味着它不仅可以帮助团队节省时间,还可以清晰地了解要做什么以及预期会发生什么。
- 质量活动能很好地融入项目,而不是被视为单独的事件。
- 它充当项目和团队之间的沟通者。
- CMM 的努力始终致力于流程改进。
摘要
CMM 最早于 80 年代末在美国空军推出,用于评估分包商的工作。后来,随着改进版本的推出,它被用于跟踪软件开发系统的质量。
整个 CMM 级别分为五个级别。
- 级别 1(初始):系统中通常存在不确定、误解和不受控制的需求。流程通常是混乱且临时的。
- 级别 2(已管理):估算项目成本、进度和功能。已定义软件标准。
- 级别 3(已定义):确保产品满足需求和预期用途。
- 级别 4(量化管理):通过统计方法管理项目的流程和子流程。
- 级别 5(成熟):识别和部署新工具及流程改进,以满足需求和业务目标。