能力成熟度模型(CMM)是在研究从与美国国防部签约的组织收集的数据之后创建的开发模型,该组织为研究提供资金。 “成熟度”一词涉及流程的形式和优化程度,从临时实践到正式定义的步骤,到管理结果指标,再到流程的主动优化。
概观
能力成熟度模型最初是作为客观评估政府承包商流程实施合同软件项目能力的工具而开发的。 该模型基于IEEE软件中首次描述的流程成熟度框架,后来在1989年出版的Watts Humphrey的“管理软件过程”一书中进行了描述。 它后来在1993年的一份报告中发表并于1995年作为同一作者的一本书出版。
虽然该模型来自软件开发领域,但它也被用作一般模式来辅助业务流程,并且在全球范围内广泛用于政府办公室,商业和工业。
历史
软件过程先驱
在20世纪60年代,计算机的使用变得更加广泛,更灵活,成本更低。组织开始采用计算机化信息系统,对软件开发的需求显着增长。许多软件开发过程都处于起步阶段,很少有标准或“最佳实践”方法。
结果,增长伴随着成长的痛苦:项目失败很常见,计算机科学领域仍处于早期阶段,项目规模和复杂性的雄心超出了在计划预算内提供足够产品的市场能力。Edward Yourdon,Larry Constantine,Gerald Weinberg,Tom DeMarco,和David Parnas等人开始发表研究成果的文章和书籍,试图使软件开发过程专业化。
在20世纪80年代,涉及软件分包商的几个美国军事项目超预算,并且完成得比计划的要晚得多。为了确定这种情况发生的原因,美国空军资助了SEI的一项研究。
先导
向IT部门首次应用阶段性成熟度模型不是由CMU / SEI,而是由Richard L. Nolan,他在1973年发布了IT组织增长模型的阶段。
Watts Humphrey在他27年职业生涯的后期阶段开始发展他的流程成熟度概念。
软件工程研究所的发展
美国国防部软件工程研究所(SEI)积极开发该模型始于1986年,当时Humphrey从IBM退休后加入位于宾夕法尼亚州匹兹堡卡内基梅隆大学的软件工程研究所。应美国空军的要求,他开始正式确定其过程成熟度框架,以帮助美国国防部评估软件承包商的能力,作为授予合同的一部分。
空军研究的结果是军方用作客观评估软件分包商过程能力成熟度的模型。 Humphrey将这个框架建立在Philip B. Crosby在他的“质量是免费的”一书中开发的早期质量管理成熟度网格上。汉弗莱的方法不同,因为他独特的洞察力,即组织基于以特定顺序解决流程问题而分阶段地成熟他们的流程。 Humphrey将他的方法基于组织内软件开发实践系统的分阶段演化,而不是独立地衡量每个独立开发过程的成熟度。因此,CMM被不同的组织用作理解并随后改进一般业务流程性能的通用且强大的工具。
Watts Humphrey的能力成熟度模型(CMM)于1988年出版,并于1989年出版,出版于管理软件过程。组织最初使用由Humphrey及其同事在软件工程研究所设计的过程成熟度问卷和软件能力评估方法进行评估。
能力成熟度模型作为一套确定的过程域和实践在五个成熟度级别中的每一个的完整表示始于1991年,1.1版本于1993年1月完成。CMM于1995年由其主要作者Mark C. Paulk,Charles V. Weber,Bill Curtis和Mary Beth Chrissis作为一本书出版。
CMMI
CMM模型在软件开发中的应用有时会出现问题。在培训,评估和改进活动中,应用未在组织内部和组织内部集成的多个模型可能成本很高。形成
能力成熟度模型集成(CMMI)项目是为了解决使用多个模型进行软件开发过程的问题,因此CMMI模型已经取代了CMM模型,尽管CMM模型仍然是一个通用的理论过程能力模型。
适应其他流程
CMM最初旨在作为评估政府承包商执行合同软件项目的能力的工具。虽然它来自软件开发领域,但它可以,一直并且继续被广泛应用为IS / IT(和其他)组织中过程成熟度(例如,IT服务管理过程)的一般模型。
思想
CMM的基本思想是,因为问题是由我们管理软件过程的方法引起的,所以新软件技术的运用不会自动提高生产率和利润率。CMM有助于组织建立一个有规律的、成熟的
软件过程。改进的过程将会生产出质量更好的软件,使更多的软件项目免受时间和费用的超支之苦。
软件过程包括各种活动、技术和用来生产软件的工具。因此,它实际上包括了软件生产的技术方面和管理方面。CMM策略力图改进软件过程的管理,而在技术上的改进是其必然的结果。
“成熟度”等级
必须牢记,软件过程的改善不可能在一夜之间完成,CMM是以增量方式逐步引入变化的。CMM明确地定义了5个不同的“成熟度”等级,一个组织可按一系列小的改良性步骤向更高的成熟度等级前进。
成熟度等级1:初始级(Initial)。处于这个最低级的组织,基本上没有健全的软件工程管理制度。每件事情都以特殊的方法来做。如果一个特定的工程碰巧由一个有能力的管理员和一个优秀的软件开发组来做,则这个工程可能是成功的。然而通常的情况是,由于缺乏健全的总体管理和详细计划,时间和费用经常超支。结果,大多数的行动只是应付危机,而非事先计划好的任务。处于成熟度等级1的组织,由于
软件过程完全取决于当前的
人员配备,所以具有不可预测性,人员变化了,过程也跟着变化。结果,要精确地预测产品的开发时间和费用之类重要的项目,是不可能的。
成熟度等级2:可重复级(Repeatable)。在这一级,有些基本的软件项目的管理行为、设计和管理技术是基于相似产品中的经验,故称为“可重复”。在这一级采取了一定措施,这些措施是实现一个完备过程所必不可缺少的第一步。典型的措施包括仔细地跟踪费用和进度。不像在第一级那样,在危机状态下方行动,管理人员在问题出现时便可发现,并立即采取修正行动,以防它们变成危机。关键的一点是,如没有这些措施,要在问题变得无法收拾前发现它们是不可能的。在一个项目中采取的措施也可用来为未来的项目拟定实现的期限和费用计划。
成熟度等级3:已定义级(Defined)。在第3级,已为软件生产的过程编制了完整的文档。
软件过程的管理方面和技术方面都明确地做了定义,并按需要不断地改进过程,而且采用评审的办法来保证软件的质量。在这一级,可引用CASE环境来进一步提高质量和产生率。而在第—级过程中,“高技术”只会使这一危机驱动的过程更混乱。
成熟度等级4:已管理级(Managed)。一个处于第4级的公司对每个项目都设定质量和生产目标。这两个量将被不断地测量,当偏离目标太多时,就采取行动来修正。利用
统计质量控制,管理部门能区分出随机偏离和有深刻含义的质量或生产目标的偏离(统计质量控制措施的一个简单例子是每千行代码的错误率。相应的目标就是随时间推移减少这个量)。
成熟度等级5:优化级(Optimizing)。—个第5级组织的目标是连续地改进
软件过程。这样的组织使用统计质量和过程控制技术作为指导。从各个方面中获得的知识将被运用在以后的项目中,从而使软件过程融入了
正反馈循环,使生产率和质量得到稳步的改进。
整个企业将会把重点放在对过程进行不断的优化,采取主动的措施去找出过程的弱点与长处,以达到预防缺陷的目标。同时,分析各有关过程的有效性资料,作出对新技术的成本与效益的分析,并提出对过程进行修改的建议。达到该级的公司可自发的不断改进,防止同类缺陷二次出现。
CMM为软件的
过程能力提供了一个阶梯式的改进框架,它基于以往软件工程的经验教训,提供了一个基于过程改进的框架图,它指出一个软件组织在软件开发方面需要哪些主要工作,这些工作之间的关系,以及开展工作的先后顺序,一步一步的做好这些工作而使软件组织走向成熟。CMM的思想来源于已有多年历史的项目管理和质量管理,自产生以来几经修订,成为软件业具有广泛影响的模型,并对以后项目管理成熟度模型的建立产生了重要的影响。尽管已有个人或团体提出了各种各样的成熟度模型,但还没有一个像
CMM那样在业界确立了权威标准的地位。但
PMI于2003年发布的
OPM3以其立体的模型及涵盖范围的广泛有望成为项目管理界的标准。