能力成熟度模型(CMM)及其在软件工程中的级别

什么是 CMM?

能力成熟度模型(Capability Maturity Model)用作衡量组织软件过程成熟度的基准。

CMM 是在 80 年代末由软件工程研究所开发的。它是美国空军资助的一项研究的成果,用于评估分包商的工作。后来,基于 1991 年创建的 CMM-SW 模型来评估软件开发成熟度,多个其他模型已集成到 CMM-I 中,它们是:

Capability Maturity Model

什么是能力成熟度模型(CMM)的级别?

  1. 初始
  2. 可重复/已管理
  3. 已定义
  4. 量化管理
  5. 优化

Capability Maturity Model (CMM) Levels

CMM 不同级别会发生什么?

级别 活动 优点
级别 1 初始
  • 在级别 1,过程通常是混乱且临时的。
  • 能力是基于个人而非组织的。
  • 未衡量进度
  • 开发的产品常常超出计划和预算。
  • 进度、成本、功能和质量目标存在很大差异。
无。项目是完全混乱的。
级别 2 已管理
  • 需求管理
  • 估算项目参数,如成本、进度和功能。
  • 衡量实际进度。
  • 制定计划和流程。
  • 定义了软件项目标准。
  • 识别和控制产品、问题报告、变更等。
  • 项目间的流程可能不同。
  • 流程更容易理解。
  • 管理人员和团队成员花费更少的时间来解释如何完成工作,而将更多时间用于执行。
  • 项目估算更准确,计划更周详,也更灵活。
  • 质量已集成到项目中。
  • 初期成本可能较高,但会随着时间推移而下降。
  • 需要更多的文书工作和文档。
级别 3 已定义
  • 明确客户需求。
  • 解决设计需求,制定实施流程。
  • 确保产品满足需求和预期用途。
  • 系统地分析决策。
  • 纠正和控制潜在问题。
  • 流程改进成为标准。
  • 解决方案从“编码”发展为“工程化”。
  • 项目过程中会出现质量门,整个团队都参与到流程中。
  • 风险得到缓解,不会让团队措手不及。
级别 4 量化管理
  • 通过统计方法管理项目的流程和子流程。
  • 量化地理解流程绩效,管理组织的各个项目。
  • 在整个组织中优化流程绩效。
  • 推动组织量化项目管理。
级别 5 优化
  • 及早检测并消除缺陷原因。
  • 识别和部署新工具及流程改进,以满足需求和业务目标。
  • 促进组织创新和部署。
  • 推动因果分析和解决。

下图以图示方式展示了 CMM 不同级别发生的情况。

Different Levels of 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 的实施是否有效、持久且可重复,它需要基于以下基础进行映射:

  1. 执行承诺
  2. 执行能力
  3. 执行的活动
  4. 测量和分析
  5. 验证实施

CMM 模型的局限性

  • CMM 确定了流程应该解决什么问题,而不是如何解决。
  • 它并没有解释软件过程改进的所有可能性。
  • 它侧重于软件问题,但不考虑战略业务规划、采用技术、建立产品线和管理人力资源。
  • 它没有说明组织应该从事哪种类型的业务。
  • CMM 对于目前处于危机中的项目没有用。

为什么要使用 CMM?

如今,CMM 在软件行业被视为一种“批准印章”。它在改进软件质量方面发挥着多种作用。

  • 它指导可重复的标准流程,从而缩短了学习如何完成工作的学习时间。
  • 实践 CMM 意味着实践标准的开发协议,这意味着它不仅可以帮助团队节省时间,还可以清晰地了解要做什么以及预期会发生什么。
  • 质量活动能很好地融入项目,而不是被视为单独的事件。
  • 它充当项目和团队之间的沟通者。
  • CMM 的努力始终致力于流程改进。

摘要

CMM 最早于 80 年代末在美国空军推出,用于评估分包商的工作。后来,随着改进版本的推出,它被用于跟踪软件开发系统的质量。

整个 CMM 级别分为五个级别。

  • 级别 1(初始):系统中通常存在不确定、误解和不受控制的需求。流程通常是混乱且临时的。
  • 级别 2(已管理):估算项目成本、进度和功能。已定义软件标准。
  • 级别 3(已定义):确保产品满足需求和预期用途。
  • 级别 4(量化管理):通过统计方法管理项目的流程和子流程。
  • 级别 5(成熟):识别和部署新工具及流程改进,以满足需求和业务目标。