软件工程中的 CMM

2025年5月19日 | 阅读11分钟

引言

能力成熟度模型 (CMM) 是用于软件开发改进和完善的工具。它为企业提供了一种系统化的方法来评估其当前流程,并找出需要改进的领域。CMM 有 5 个成熟度级别:初始、可重复、已定义、已管理和已优化。遵循 CMM 可以帮助组织系统地改进其软件开发流程,生产出更好的产品,并更有效地管理项目。

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

软件工程研究所 (SEI) 于 1987 年在卡内基梅隆大学创建了能力成熟度模型 (CMM)。许多用户将 CMM 与软件过程模型混淆,但这并不正确。CMM 是一个框架,用于检查任何组织如何开发软件产品以及它采用的方法。此外,它还提供了建议,以进一步提高创建这些软件产品的流程成熟度。

它基于世界上最成功公司的有见地的反馈和开发策略。该模型中的五个级别概述了一个应遵循的软件过程改进方法。每个成熟度级别都表示流程能力级别。关键过程域 (KPA) 提供了除级别 1 之外每个级别的更多详细信息。

为什么使用 CMM?

CMM 是软件行业的认可标志。它在许多方面提高了软件质量。

  1. 通过指导人们遵循可重复的标准程序,节省了学习如何完成任务的时间
  2. 通过遵循开发或CMM的标准协议,团队可以节省时间,并清楚地了解需要做什么以及可以期待什么。
  3. 质量活动能够很好地融入项目中,而不是被视为独立事件。
  4. 它在团队与项目之间进行沟通
  5. CMM 的努力始终专注于流程改进

能力成熟度模型的重要性

  1. 资源优化: CMM 帮助公司最大化地利用所有可用资源,如现金、劳动力和时间。通过识别和消除无效的做法,企业可以提高资源分配的效率。
  2. 比较和评估: CMM 为自我评估和基准测试提供了一个结构化的框架。公司能够确定其成熟度级别,识别其优势和劣势,并根据行业最佳实践评估其绩效。
  3. 质量管理: CMM 的主要重点是质量管理。在框架的协助下,企业可以通过实施质量保证和控制的最佳实践来提高其产品和服务的质量。
  4. 流程改进: CMM 为公司提供了一种系统化的方法来评估和改进其运营。为了提高生产力和有效性,它提供了一个逐步改进流程的路线图。
  5. 提高产出: 通过简化和改进流程,CMM 旨在提高生产力。随着组织通过 CMM 级别,它们可以提高生产力和效率,而不会牺牲质量。

能力成熟度模型 (CMM) 原则

  • 当多家公司在同一个项目上工作时,例如软件开发,竞争就会产生结果。在这种情况下,组织的人员是战略和专业知识的来源,这提高了组织的效率。
  • 组织应根据其业务目标来确定其劳动力的能力。
  • 组织应投资以提高其劳动力的能力和技能,因为它们对其成功至关重要。
  • 提高组织劳动力的能力应由管理层负责。
  • 提高人员的能力应是一个过程。应将适当的做法和程序纳入此过程。
  • 组织应负责提供改进的机会,以便人们能够抓住这些机会。
  • 组织应持续改进其流程并培养人力资源,因为新技术和组织实践正在快速发展。

能力成熟度模型 (CMM) 的缺点

  • 在某些情况下,它会优先考虑达到更高的成熟度级别,而忽略了实际目标,即改进流程和整体软件质量。
  • 只有在软件开发的早期阶段实施时才有用。
  • 它没有正式的理论基础,而是基于经验丰富人士的经验。
  • 它缺乏扎实的经验支持,而相同的经验支持可以用于支持其他模型。
  • 流程改进度量挑战: SEI/CMM 模型可能过度关注文档和流程遵循,而忽略了实际成果,如软件质量和客户满意度。
  • 优先考虑文档而非结果: SEI/CMM 模型可能过分强调跟进和文档,而忽略了实际成果,如软件质量和客户满意度。
  • SEI/CMM 模型可能不适用于所有类型的组织。特别是对于开发团队较小或开发流程不太规范的组织。
  • 快速变化的技术: SEI/CMM 模型可能无法跟上开发方法和快速变化的技术,这可能会限制其在某些情况下的适用性。
  • 缺乏敏捷性: SEI/CMM 模型在动态且快速变化的环境中的适用性可能受到限制。其原因是无法迅速响应不断变化的客户或业务需求。

KPA (关键过程域)

这些 KPA(关键过程域)概述了软件过程为满足 KPA 和达到该成熟度级别所需满足的基本要求。

概念上,关键过程域是软件项目管理控制的基础,并为技术技术和工作产品(如文档、报告、数据模型等)的应用创建了一个框架。会生成里程碑,保证质量,并妥善处理变更。

能力成熟度模型 (CMM) 的级别

能力成熟度模型有五个级别。我们将详细介绍每一个。

CMM in Software Engineering

级别 1:初始

  • 没有指定 KPI。
  • 所使用的流程未明确定义且不成熟。
  • 软件开发的 unstable 设置。
  • 没有估算产品质量、完成时间或其他变量的基础。
  • 项目管理能力有限,包括无法系统地监控预算、时间表或进展。
  • 团队成员和利益相关者之间缺乏协调或沟通
  • 新团队成员未获得任何官方培训或入职指导。
  • 自动化和软件开发工具的使用很少或不存在。
  • 严重依赖个人专业知识和能力,而非标准化流程。
  • 由于流程不稳定和失控,项目有很大的失败或延迟的风险

级别 2:可重复

  • 它侧重于开发基本项目管理策略
  • 利用以往项目的经验来管理类似的新项目。
  • 项目规划包括确定项目所需的资源,以及项目将面临的目标和限制。它概述了一个必须系统地遵循的精确计划,以便成功完成高质量的软件项目。
  • 配置管理侧重于确保软件产品(包括所有组件)在其生命周期内性能良好。
  • 需求管理包括管理客户评审和反馈,这可能导致需求列表的修订。它还包括满足这些已修改的需求。
  • 分包管理侧重于成功管理合格的软件分包商,这意味着它控制由第三方开发的软件组件。
  • 软件质量保证通过在开发过程中遵循特定的规则和质量标准来确保高质量的软件产品。

级别 3:已定义

  • 在此级别进行标准操作程序和指南的文档记录
  • 这是一个清晰定义的集成的软件工程和管理流程集合,针对特定项目进行了定制。
  • 同行评审: 该方法通过多种评审技术(如伙伴检查、走查和检查)来消除缺陷。
  • 组间协调是组织不同开发团队之间交互的过程,以确保有效和恰当地满足客户需求。
  • 组织过程定义: 其主要目标是创建和维护标准开发流程。
  • 组织过程焦点: 这包括为提高组织的流程能力而应执行的活动和程序。
  • 培训计划: 这些计划侧重于提高团队成员(包括开发人员)的知识和能力,并确保生产力的提高。

级别 4:已管理

  • 此时,公司为软件流程和软件产品设定了量化质量目标。
  • 所测量的结果有助于组织在量化定义的界限内预测流程和产品的质量。
  • 规划和策略开发,以对产品质量进行量化分析和理解,是软件质量管理的一部分。
  • 定量管理的目标是对项目性能进行量化控制。

级别 5:已优化

  • 此 CMM 流程成熟度级别(最高级别)的目标是利用量化反馈持续改进组织流程
  • 评估软件流程并利用新技术以防止已知缺陷再次发生的目的是阻止已知缺陷再次发生。
  • 流程变更管理侧重于持续改进公司的软件流程,以提高软件产品周期时间、质量和生产力。
  • 识别和利用新技术以提高产品质量和缩短产品开发时间被称为技术变更管理。
  • 通过加强项目定义的流程,缺陷预防旨在识别缺陷的根本原因,并在后续项目中防止其再次发生。

能力成熟度模型 (CMM) 的案例研究

1. TCS 或 Tata Consultancy Services

TCS 是一家著名的印度 IT 服务和咨询供应商,长期以来一直使用 CMMI 来改进其软件开发和交付流程。此次部署帮助TCS 满足客户期望并交付高质量的解决方案。

2. Infosys

总部位于印度的跨国 IT 服务和咨询供应商 Infosys 通过使用 CMMI 提升了其软件开发和交付能力。该组织已采用 CMMI 技术以提高流程效率并为其客户提供更好的解决方案。

3. Lockheed Martin

Lockheed Martin 是一家全球航空航天和国防公司,长期以来一直以其高 CMM 成熟度级别而闻名。CMM 的成功部署带来了组织软件开发和项目管理实践的改进。

CMMI 级别

CMMI 和 CMM 都具有五个流程成熟度阶段。但它们与 CMM 级别不同。

CMMI 模型有五个绩效级别。

级别 1:初始: 过程是即兴的且不可预测的。正式流程几乎不存在或非常有限。

级别 2:已管理: 已建立基本项目管理流程。项目得到计划、监督和控制。

级别 3:已定义: 组织流程被明确陈述和记录。整个组织使用标准化流程。

级别 4:定量管理: 使用统计和定量方法来衡量和控制流程。流程的性能被量化地理解和控制。

级别 5:优化: 主要目标是持续的流程改进。持续的流程改进基于量化输入。

CMM in Software Engineering

CMM 和 CMMI 之间的区别

方面能力成熟度模型 (CMM)能力成熟度模型集成 (CMMI)
范围主要关注软件工程流程。扩展到包括系统工程和硬件开发在内的各种领域。
成熟度级别曾有一个五级成熟度模型(级别 1-5)。它首先采用阶段性表示法,然后过渡到持续性表示法。
灵活性更强大的框架,具有既定流程。允许您根据组织的需要修改流程区域。
采用和普及在软件开发行业中受欢迎程度日益提高。由于其广泛的适用性,它在各行业中的采用率不断提高。

在软件开发中使用 CMM 的优势

1. 最大化资源利用

CMM 提供了一个更有效管理和利用时间、人员和财务资源的框架。通过使用清晰定义的业务流程,团队可以有效地分配资源并避免时间和精力的浪费。由于这种效率,团队能够专注于高优先级任务,按时完成工作而不会超出预算。通过优化资源利用,还可以确保技术团队成员的有效部署,从而提高绩效和员工满意度。

2. 提高质量控制

CMM 的主要重点是质量保证,该框架概述了确保每个项目阶段都满足特定质量标准的流程。通过这种有条理的质量控制方法,可以确保交付成果满足客户期望,同时降低错误的风险。当检查和标准融入日常运营时,使用 CMM 的组织可以建立一种质量文化,从而生产出更好的产品和服务,并提高客户的整体信心。

3. 增强项目管理

随着组织在 CMM 成熟度级别上的提升,它们获得了越来越复杂的项目管理能力。这些能力包括改进的执行监控、风险评估和规划技术,所有这些都有助于项目取得成功。在 CMM 的帮助下,项目经理可以制定全面的项目计划,主动管理风险,并定期评估进展,从而提高项目按时并在预算内完成的可能性。

4. 促进团队成员之间的合作

CMM 通过建立清晰的流程以及定义角色和职责来改善团队沟通和协作。这种有条理的团队合作方法鼓励透明度,确保团队成员了解彼此的贡献并能更有效地协同工作。随着团队成员在实现项目目标的同时感到受到鼓励和团结,改进的协作也提高了士气,营造了快乐而高效的工作氛围。

5. 提高客户满意度

CMM 在质量和可靠性方面的改进直接影响客户满意度。当客户收到始终如一的高质量交付成果和可预测的时间表时,他们对组织的信心会增强。通过实施透明、可重复的流程,组织可以更好地满足客户期望,建立信任和持久的合作关系,这对于客户保留和业务扩展至关重要。

6. 促进文化变革

通过使用 CMM,可以促进一种学习、合作和持续改进的文化。CMM 通过将组织围绕标准化流程以及效率和卓越目标聚集在一起,培养了一种达到高标准的心态。这种文化转变鼓励团队拥抱创新,适应变化,并支持重视流程卓越和持续改进的进步工作场所。

CMM 模型缺点

  • 与决定流程应如何实现相比,CMM 决定了它应该解决什么问题。
  • 它并不涵盖所有可能改进软件流程的方法。
  • 它侧重于软件问题,而忽略了人力资源管理、产品线建立、技术采用和战略业务规划。
  • 它没有指明组织应该从事哪种业务。
  • 由于当前的项目危机,CMM 将无济于事。

常见问题解答

问题 1:能力成熟度模型对组织有哪些好处?

答案:能力成熟度模型通过以下几种方式使组织受益

  1. 提高产品质量和可靠性是其好处之一。
  2. 它有助于缩短开发周期的时间和成本。
  3. 它促进了更好的项目管理。

问题 2:列出一些用于改进流程的能力成熟度模型替代方案?

答案:以下是一些能力成熟度模型的替代方案

  1. 六西格玛方法论。
  2. ISO 9000。
  3. 敏捷技术。
  4. 精益软件开发。

结论

能力成熟度模型 (CMM) 是一个旨在帮助组织改进其软件开发流程的框架。它描述了五个成熟度级别,每个级别都代表朝着更结构化和有效的流程迈进的一步。通过帮助企业识别其当前的流程能力,找出薄弱环节,并提供改进的结构化路径,CMM 随着时间的推移确保了更好的项目管理和更高的质量结果。