CMM介绍一

来源:互联网 发布:传智python就业班 编辑:程序博客网 时间:2024/05/20 22:36
 

.什么是CMM

 

CMM是能力成熟度模型(Capability Maturity Model)的缩写词。在软件业中实质上就是指Software Capability Maturity ModelSW-CMM),即软件能力成熟度模型,通常简化描述成CMM。所以,CMM就是指软件能力成熟度模型,它是美国国防部对软件承包商软件能力评估的一种模型,也是承包商改进其软件过程的一种途径。CMM在一些文献中也描述成Capability Maturity Model for Software

CMM的本质是软件管理工程的一个部分,它是对于软件组织在定义,实现,度量,控制和改善其软件过程的进程中各个发展阶段的描述。简单地说,CMM是一种用于评价软件承包能力并帮助其改善软件质量的方法,也就是评估企业软件能力与成熟度的一套标准。它通过5个不断进化的层次来描述和评定软件企业软件生产的历史和现状。CMM1987年由美国研制成功,是目前国际上最为流行最为实用的软件生产过程标准和软件企业成熟度等级认证标准。

2.CMM产生的背景与其发展

1)软件生产的特殊性与复杂性

软件产品的开发与其他任何工业产品的生产有着很大的不同。软件产品基本上纯粹是人们逻辑思维过程的产物。一个软件,在写出程序并拿到计算机上成功运行之前,软件开发的进展情况是难以衡量和控制的,质量也难以评价和保证,工作量很难估计。而且随着软件复杂性的提高,软件基本上不再是仅靠个人单打独斗就能完成的产品,软件基本上是群体智慧的结晶。但是,软件基本上是靠手工作坊式生产的,一个群体作坊,给复杂的软件生产带来很多问题,使得软件开发的复杂性和工作量都极大的增加,开发的进程难以衡量与控制,软件质量难以评价与保证。数十年来,虽然软件开发技术获得了巨大的进展(见P51-1),但是软件项目的失败还是屡见不鲜。

2)软件流产层出不穷

随着现代信息产业的蓬勃发展,软件开发已经成为一项浩大繁复的工程。就像是建造一座宏伟的宫殿,从计划、设计到施工,每一个环节都必须严格把关,稍有不慎,整个工程就会失败。据资料显示,仅美国,每年大约有18万个以上的信息技术项目,耗资累及$ 2500亿美元,其中25-30%的项目会流产。由此可见,由于管理不善和设计上的失误所造成的损失是巨大的。现代软件开发的管理和方法论显得比以往任何时候都更为重要。

3)软件开发的首要问题

软件工程概念的引入和实施虽然在一定程度上对这一问题能有所缓解,但并未从根本上解决软件大生产的诸多问题,软件开发仍有许多不确定性和随意性,不可控性随处可见。人们通过专门的研究发现,软件开发的首要问题并不是技术问题,而是管理问题。换句话更确切地说,从根本上它是软件开发过程的如何制定、操作、管理与控制的问题。

所谓软件开发过程,是指包括项目的开发阶段、开发方法、技术等方面的决策和与软件及其相关工件(如项目计划、文档、系统模型、源码、测试用例和使用手册等)相关的一系列活动。软件开发机构不仅需要一个软件开发过程,更需要一个适合自己需求的软件开发过程。不同的应用软件需要不同的开发方法,因此为客户项目定制合适的软件开发方法或过程不仅是软件开发商的需要也是与客户勾通和掌控项目开发获得成功的关键。

CMM就是在这种情况下提出来的,其目的主要着眼于使一个软件组织对于软件过程管理能有章可循,有法可依,并根据现状不断改进自己的软件过程,使之逐步达到在软件大生产中呈现高效率、低成本和高质量的状态。同时,也为软件发包商提供评估软件开发承包者的软件过程能力的依据。

4CMM的诞生与演变

CMM最早于1987年由美国卡内基梅隆大学(Carnegie Mellon UniversityCMU)软件工程研究所Software Engineering InstituteSEI)受美国国防部委托研究提出来的,是以W.S.Humphrey为首的研究小组发表的一个研究成果承制方软件工程能力的评估方法为开端。

1990SEI公布CMM0.0版。1991SEI公布了包含第二级KPA方案的CMM0.4版及包含第三级方案的CMM0.5版,同年,又发布了包含第四级和第五级KPA方案的0.7版。

1991年底发布CMM1.0版,1993SEI公布CMM1.1版。目前通行的版本是1.1版,改进版2.0版于199711月完成,但应美国国防部的要求未予发布,改而致力于CMMI的研究。

CMMICapability Maturity Model Integration)能力成熟度模型集成,将把现有的和将来发展出来的各种能力成熟度模型集成到一个框架中去。这个框架用于解决两个问题:第一,软件获取办法的改革;第二,从集成产品与过程发展的角度出发,建立一种包含健全的系统开发原则的过程改进。因此,CMMI整合了Software CMMSystems Eng-CMMPeople CMMAcquisition CMM等,由此建立起包括软件工程、系统工程和软件采购等在内的诸模型集成,以解决除软件开发以外的软件系统工程和软件采购工作中的迫切需求。

目前,CMMI框架包括了软件能力成熟度模型CMM 2.0草案,即软件工程能力成熟度模型(SW-CMM)、系统工程能力成熟度模型(SE-CMM)、集成的产品和过程开发能力成熟度模型(IPPD-CMM)、软件采购能力成熟度模型(SS-CMM)四大模型。

SEI推出的CMMI模型并不是对原来CMM模型的简单升级,而是更广更深层次的系统集成,其中关键过程域CMM18个上升到CMMI25个,目标CMM52个上升到CMMI105个,关键实践CMM316条上升到CMMI485条。CMMI融入了最新的软件管理实践,同时弥补了SW-CMM中的缺陷。

199710SEI停止了对CMM的研究,转而致力于CMMI的开发。2000811SEI发布了CMMI1.0200112月颁布CMMI1.1版,20068SEI又推出了CMMI1.2版本。

当前,学术界和工业界公认CMU-SEICMMCMMI是目前最好的软件过程,已成为业界事实上的软件过程的工业标准。

5)背景因素和历史与CMM

信息时代,软件质量的重要性越来越为人们所认识。软件是产品、是装备、是工具,其质量使得顾客满意,是产品市场开拓、事业得以发展的关键。而软件工程领域在1992年至1997年取得了前所未有的进展,其成果超过软件工程领域过去15年来的成就总和。

软件管理工程引起广泛注意源于20世纪70年代中期。当时美国国防部曾立题专门研究软件项目做不好的原因,发现70%的项目是因为管理不善而引起,而并不是因为技术实力不够,进而得出一个结论,即管理是影响软件研发项目全局的因素,而技术只影响局部。到了20世纪90年代中期,软件管理工程不善的问题仍然存在,大约只有10%的项目能够在预定的费用和进度下交付。软件项目失败的主要原因有:需求定义不明确;缺乏一个好的软件开发过程;没有一个统一领导的产品研发小组;子合同管理不严格;没有经常注意改善软件过程;对软件构架很不重视;软件界面定义不善且缺乏合适的控制;软件升级暴露了硬件的缺点;关心创新而不关心费用和风险;军用标准太少且不够完善等等。在关系到软件项目成功与否的众多因素中,软件度量、工作量估计、项目规划、进展控制、需求变化和风险管理等都是与工程管理直接相关的因素。由此可见,软件管理工程的意义至关重要。

软件管理工程和其它工程管理相比有其特殊性。首先,软件是知识产品,进度和质量都难以度量,生产效率也难以保证。其次,软件系统复杂程度也是超乎想象的。因为软件复杂和难以度量,软件管理工程的发展还很不成熟。

软件管理工程的发展,在经历了从70年代开始以结构化分析与设计、结构化评审、结构化程序设计以及结构化测试为特征的结构化生产时代,到90年代中期,以CMM模型的成熟模型和日益为市场接受为标志,已经进入以软件过程成熟度模型CMM、个体软件过程PSP和群组软件过程TSP为标志的以软件过程为中心的时代,而软件发展第三个时代,及软件工业化生产时代,从90年代中期软件过程技术的成熟和面向对象技术、构件技术的发展为基础,已经渐露端倪,估计到2005年,可以实现真正的软件工业化生产,这个趋势应该引起软件企业界和有关部门的高度重视,及早采取措施,跟上世界软件发展的脚步。软件生产转向以改善软件过程为中心,是世界各国软件产业或迟或早都要走的道路。

软件过程改善是当前软件管理工程的核心问题。50多年来计算事业的发展使人们认识到要高效率、高质量和低成本地开发软件,必须改善软件生产过程。软件管理工程经历了一条从70年代开始以结构化分析与设计、结构化评审、结构化程序设计以及结构化测试到90年代中期以过程成熟模型CMM、个体软件过程PSP Personal Software Process和群组软件过程TSPTeam Software Process为标志的以软件过程为中心的时代,走向以软件过程技术的成熟、面向对象技术和构件技术的发展为基础的真正软件工业化生产的道路。软件生产转向以改善软件过程为中心,是世界各国软件产业或迟或早都要走的道路。软件工业已经或正在经历着"软件过程的成熟化",并向"软件的工业化"渐进过渡。规范的软件过程是软件工业化的必要条件。

6CMM与软件过程的其他流派

软件过程研究的是如何将人员、技术和工具等组织起来,通过有效的管理手段,提高软件生产的效率,保证软件产品的质量。由此诞生了软件过程的三个流派:CMU-SEICMM/PSP/TSPISO 9000质量标准体系;ISO/IEC 15504SPICE)。

CMM/PSP/TSP即软件能力成熟度模型 / 个体软件过程 / 群组软件过程,是由1987年美国卡内基梅隆大学软件工程研究所(CMU-SEI)发表的研究成果"承制方软件工程能力的评估方法"发展起来的;ISO 9000质量标准体系是在70年代由欧洲首先采用的,其后在美国和世界其他地区也迅速地发展起来。目前,欧洲联合会积极促进软件质量的制度化,提出了如下ISO9000软件标准系列:ISO9001ISO9000-3ISO9004-2ISO9004-4ISO9002ISO/IEC 15504SPICE)是1991年国际标准化组织采纳了一项动议,开展调查研究,按照CMU-SEI的基本思路,产生的技术报告ISO/IEC 15504--信息技术软件过程评估。

目前,学术界和工业界公认美国 Carnegie Mellon 大学软件工程研究所(CMU-SEI)开发的软件能力成熟度模型CMM是当前最好的软件过程,已成为业界事实上的软件过程的工业标准。

1
原创粉丝点击