《系统分析与设计方法及实践》一2.5 能力成熟度模型CMM

简介: 本节书摘来华章计算机《系统分析与设计方法及实践》一书中的第2章 ,第2.5节,窦万峰 主编 宋效东 史玉梅 李东振 赵菁 等参编更多章节内容可以访问云栖社区“华章计算机”公众号查看。

2.5 能力成熟度模型CMM

2.5.1 什么是能力成熟度模型

CMM(Capability Maturity Model)是指“能力成熟度模型”,是对软件组织在定义、实施、度量、控制和改善其软件过程的实践中各个发展阶段的描述。CMM是国际公认的对软件公司进行成熟度等级认证的重要标准。CMM的核心是把软件开发视为一个过程,并根据这一原则对软件开发和维护进行过程监控与研究,以使其更加科学化、标准化,使企业能够更好地实现商业目标。
CMM是由美国卡内基-梅隆大学的软件工程研究所(SEI)开发的软件成熟度模型,共分为5级(5级为最高级别)。CMM是一个动态的过程,企业可根据不同级别的要求,循序渐进,不断改进。同时,它是一种用于评价企业软件承包能力并帮助其改善软件质量的方法,侧重于软件开发过程的管理及工程能力的提高与评估。
管理软件过程的方法不当所引起的问题,导致新软件技术的运用并不会自动提高软件的生产率和质量。能力成熟度模型有助于软件开发机构建立一个有规律的、成熟的软件过程。采用改进后的软件过程,将开发出质量更好的软件,使更多的软件项目免受时间和费用超支之苦。CMM是目前国际上最流行、最实用的一种软件生产过程标准,已经得到了众多国家以及国际软件产业界的认可,成为当今企业从事规模软件生产不可缺少的一项内容。
CMM为软件企业的过程能力提供了一个阶梯式的改进框架,它基于过去所有软件工程过程改进的成果,吸取了以往软件工程的经验教训,提供了一个基于过程改进的框架;它指明了一个软件组织在软件开发方面需要管理哪些主要工作、这些工作之间的关系,以及以怎样的先后次序,一步一步地做好这些工作而使软件组织走向成熟。
能力成熟度模型集成(Capability Maturity Model Integration,CMMI)是CMM的最新版本。CMMI是美国国防部的一个设想,他们想把现在所有的以及将被发展出来的各种能力成熟度模型,集成到一个框架中去。这个框架有两个功能:第一,软件采购方法的改革;第二,建立一种从集成产品与过程发展的角度出发、包含健全的系统开发原则的过程改进。CMMI项目为工业界和政府部门提供了一个集成的产品集,主要目的是消除不同模型之间的不一致和重复,降低基于模型改善的成本。CMMI将以更加系统和一致的框架来指导组织改善软件过程,提高产品和服务的开发、获取和维护能力。

2.5.2 CMM的5级模型

CMM是全面质量管理中的过程管理概念在软件方面的应用。CMM提供了一个软件过程改进的框架,CMM认为保障软件质量的根本途径就是提升企业的软件生产能力,而企业的软件生产能力又取决于企业的软件过程能力,特别是在软件开发和生产中的成熟度。企业的软件过程能力越成熟,它的软件生产能力就越有保证。所谓软件过程能力,是指企业从事软件开发和生产的过程本身透明化、规范化和运行的强制化。CMM 以具体实践为基础,是一个软件工程实践的纲要,以逐步演进的框架形式不断地完善软件开发和维护过程,成为软件企业变革的内在原动力。CMM的5级模型如图2-7所示。

image

CMM的分级结构和其主要特征如下。
1.初始级
过程无序且不可见,如图2-8所示。软件过程的特点是无秩序的,有时甚至是混乱的。软件过程定义几乎处于无章可循和步骤不可重复的状态,软件产品所取得的成功往往依赖于个别人的努力和机遇。
2.可重复级
里程碑可见,按计划开发。已建立了基本的项目管理过程,可用于对成本、进度和功能特性进行跟踪。对类似的应用项目,过程有章可循并能重复以往所取得的成功。项目有里程碑,可分阶段检查,如图2-9所示。
可重复级侧重于管理,有6个关键过程域(Key Process Area,KPA):需求管理、软件项目计划、软件项目的跟踪和监控、软件子合同管理、软件质量保证和软件配置管理。
3.已定义级
每个阶段的内部活动可见,标准过程和项目定义过程裁剪,如图2-10所示。用于管理的和工程的软件过程均已文档化、标准化,并形成了整个软件组织的标准软件过程。全部项目均采用与实际情况相吻合的适当修改后的标准软件过程来进行操作。
已定义级注重工程过程和企业理念,在可重复级的基础上增加了7个KPA:机构过程关注、机构过程定义、培训计划、集成软件管理(过程裁剪和定义)、软件产品工程(过程执行)、组间协调和对等审查。
4.已管理级
过程可度量,预测值与结果之间的偏差可控,如图2-11所示。软件过程和产品质量有详细的度量标准,得到了定量的认识和控制。
image

已管理级注重预测和量化管理,在定义级的基础上增加了2个KPA:定量过程管理(过程度量)和软件质量管理(产品度量)。
5.优化级
过程动态调整、新技术的采用,如图2-12所示。通过对来自过程、新概念和新技术等方面的各种有用信息的定量分析,能够持续地对过程进行改进。
image

优化级注重动态优化,在已管理级的基础上增加了3个KPA:缺陷预防、技术改变管理和过程改变管理。
除第一级外,每个成熟度级别包含了若干个KPA;KPA由一组相互关联的活动组成,实现一组对建立过程能力至关重要的目标;一个KPA属于一个成熟度级别。
每个KPA设定了一个或多个目标,为了达到KPA的目标,就需要有一些最重要的基础设施和活动,这些基础设施和活动称为关键实践。为了便于描述,把关键实践归纳为5个共同特性:执行约定、执行能力、执行活动、度量与分析、实施验证。
CMM标准的使用主要包括下面3个方面:
1)用于软件过程的改进:帮助软件企业对其软件过程的改进进行计划、制定以及实施。
2)用于软件过程的评估:在评估中,一组经过培训的软件专业人员确定出一个企业软件过程的状况,找出该企业所面对的与软件过程有关的、迫切的所有问题,以及取得企业管理层对软件过程改进的支持。
3)用于软件能力的评价:在能力评价中,一组经过培训的专业人员鉴别出软件承包者的能力资格;或者是检查或监察软件制作的软件过程的状况。

相关文章
|
8月前
|
监控 数据可视化 数据挖掘
【软件设计师备考 专题 】软件过程评估与能力成熟度评估的基本方法
【软件设计师备考 专题 】软件过程评估与能力成熟度评估的基本方法
300 0
|
6月前
|
监控 算法 数据挖掘
系统工程是一种跨学科的方法论,它关注于如何设计、管理和优化复杂的系统。
系统工程是一种跨学科的方法论,它关注于如何设计、管理和优化复杂的系统。
|
7月前
|
机器学习/深度学习 人工智能 jenkins
从传统到自动化:软件测试的进化与实践
在数字化转型的浪潮中,软件测试经历了从手工测试到自动化测试的重大变革。本文将探讨这种转变的背景、具体方法和实践应用,并展望未来可能的发展方向。通过实际案例和技术分析,揭示为何自动化测试成为现代软件开发不可或缺的一部分。
【软考】能力成熟度模型CMM
【软考】能力成熟度模型CMM
85 0
|
机器学习/深度学习 人工智能 算法
当大模型开始规划合作,一个模型打造软件开发团队,代码生成性能狂升
当大模型开始规划合作,一个模型打造软件开发团队,代码生成性能狂升
129 0
当大模型开始规划合作,一个模型打造软件开发团队,代码生成性能狂升
|
XML 消息中间件 JSON
【架构设计 领域驱动开发 三】战略建模
【架构设计 领域驱动开发 三】战略建模
115 0
|
自然语言处理 测试技术 程序员
当大模型开始规划合作,一个模型打造软件开发团队,代码生成性能狂升(2)
当大模型开始规划合作,一个模型打造软件开发团队,代码生成性能狂升
199 0
|
敏捷开发 供应链 网络架构
「业务架构」商业中的成熟度模型是什么(CMM、AIMM)
「业务架构」商业中的成熟度模型是什么(CMM、AIMM)
|
运维 架构师 测试技术
软件设计的方法论:软件为什么要建模?
软件设计的方法论:软件为什么要建模?
380 0
软件设计的方法论:软件为什么要建模?
|
存储 测试技术
【软件工程】CMMI 能力成熟度模型集成 ( 简介 | 相关术语 | CMMI 等级评估次序 )
【软件工程】CMMI 能力成熟度模型集成 ( 简介 | 相关术语 | CMMI 等级评估次序 )
232 0