首先介绍一下CMM 的产生及发展
20 世纪 80 年代中期,国际软件产业界对软件过程的研究十分重视,因为在采用软件工程方法克服软件危机的过程中,人们已认识到,软件过程是否完善是软件风险大小的决定因素。
1986 年 11 月,美国卡内基梅隆大学的软件工程研究所( Software Engineering Institute , SEI )应美国联邦政府的要求,针对美国国防部对软件承包商的能力评价问题,研究 “ 过程成熟度框架 ” 。
1987 年 9 月, SEI 开发了一套软件能力成熟度框架和软件成熟度问卷,用来评估软件供应商的能力。
1991 年, SEI 自己总结了成熟度框架和初版成熟度问卷的实践经验,并以此为基础推出了 “ 软件能力成熟度模型( Capability Maturity Model For Software , CMM ) 1.0 版 ” 。
1993 年, SEI 在广泛听取美国政府和各界软件专家的意见后,推出了目前世界上比较流行的通用的 CMM1.1 版。
目前, CMM 是国际上最流行、最实用的一种软件生产过程标准,已经得到国际软件产业界的认可,成为当今企业从事规模软件生产不可缺少的一项内容。
199 8 年 SW-CMM2.0 的草案 C 发布并征求意见期间,美国国防部主管 CMM 的部门决定不再修订单独的 SW-CMM ,而着手制定集成的能力成熟度模型 CMMI ,其中包括软件方面的 SW-CMM 。 2002 年 1 月发布了 CMMI1.1 版
一、CMM 的定义
CMM 是 英文 Capability Maturity Model for Software -- “ 软件能力成熟度模型 ” 缩写 SW-CMM 的 简称。
CMM 的定义是:有关软件企业 / 组织的软件过程进程中各个发展阶段的定义、实现、质量控制和改善的模型化描述。这个模型用于确定软件企业 / 组织的软件过程能力和找出软件质量及过程改进方面的最关键问题,为企业 / 组织的过程改进提供指南。
CMM 的核心思想是将软件开发视为一组过程,并根据统计质量管理的理论对软件开发进行过程管理,以使其满足工程化、标准化的要求,使企业能够更好地实现商业目标。它侧重于软件开发的管理及软件工程能力的提高,因此 CMM 可以作为企业软件过程改进的指南,帮助软件开发机构建立严格的、规范的软件开发过程,最有效地提高软件工程能力。
二、CMM的成熟度等级
CMM 提供了一个软件能力成熟度模型的框架,它将软件过程改进的进化步骤组织成五个成熟度等级,为软件过程不断改进奠定了一个循序渐进的基础。每一个成熟度等级为继续改进过程提供一个台基。第一级实际上是一个起点,任何准备按 CMM 体系进化的企业都自然处于这个起点上,并通过这个起点向第二级迈进。除第一级外,每一等级包含一组过程目标,通过实施相应的一组关键过程域来达到这一组过程目标。当这一组目标达到时,就能使软件过程的一个相应的重要成分得以稳定。每达到成熟度框架的一个等级,就建立起软件过程的一个相应的稳定成分,从而导致软件开发组织过程能力一定程度的增长。
CMM 的五个成熟度等级的主要特征如下:
( 1 )初始级 — 未加定义的随意过程
软件过程的特点是无秩序的,有时甚至是混乱的。软件过程定义几乎处于无章法和步骤可循的状态,软件产品所取得的成功往往依赖极个别人的努力和机遇。
( 2 )可重复级 — 规则化的过程
已建立了基本的项目管理过程,可用于对成本、进度和功能特性进行跟踪。对类似的应用项目,有章可循并能重复以往所取得的成功。
( 3 )定义级 — 标准的、一致的过程
用于管理的和工程的软件过程均已文档化、标准化,并形成了整个软件组织的标准软件过程。全部项目均采用与实际情况相吻合的、适当修改后的标准软件过程来进行操作。
( 4 )管理级 — 可预测的过程
软件过程和产品质量有详细的度量标准。软件过程和产品质量得到了定量的认识和控制。
( 5 )优化级 — 持续改进的过程
通过对来自过程、新概念和新技术等方面的各种有用信息的定量分析,能够不断地、持续性地对过程进行改进。
四、CMM 的关键过程域
在 CMM 中每个成熟度等级(第 1 级除外)规定了不同的关键过程域,一个软件组织如果希望达到某一个成熟度等级,就必须完全满足关键过程域所规定的不同要求,即满足每个关键过程域的目标。所谓关键过程域是指一系列相互关联的操作活动,这些活动反映了一个软件组织改进过程时必须集中精力改进的几个方面。换句话说,关键过程域标识了达到某个成熟度等级时所必须满足的条件。在 CMM 中一共有 18 个关键过程域,分布在 2~5 级中。
第 2 级(可重复级)有 6 个关键过程域,主要涉及建立软件项目管理控制方面的内容。
A 需求管理( Requirements Management , RM )
B 软件项目计划( Software Project Planning , SPP )
C 软件项目跟踪与监控( Software Project Tracking and Oversight , SPTO )
D 软件子合同管理( Software Subcontract Management , SSM )
E 软件质量保证( Software Quality Assurance , SQA )
F 软件配置管理( Software Configuration Management , SCM )
? 第 3 级(定义级)有 7 个关键过程域,主要涉及项目和组织的策略。 使软件组织建立起对项目中的有效计划和管理过程的内部细节。
? 组织过程焦点( Organization Process Focus , OPF )
? 组织过程定义( Organization Process Definition , OPD )
? 培训程序( Training Program , TP )
? 集成软件管理( Integrated Software Management , ISM )
? 软件产品工程( Software Product Engineering , SPE )
? 组间协调( Intergroup Coordination , IC )
? 同级评审( Peer Reviews , PR )
? 第 4 级(管理级)有 2 个关键过程域,主要的任务是为软件过程和软件产品建立一种可以理解的定量的方式。
? 定量过程管理( Quantitative Process Management , QPM )
? 软件质量管理( Software Quality Management , SQM )
? 第 5 级(优化级)有 3 个关键过程域,主要涉及的内容是软件组织和项目中如何实现持续不断的过程改进问题。
? 缺陷预防( Defect Prevention , DP )
? 技术变更管理( Technology Change Management , TCM )
? 过程变更管理( Process Change Management , PCM )
五、介绍一下CMM 的作用
1 CMM 的基本用途
SW-CMM 的基本用途有三个方面:
? 软件过程评估
借助 SW-CMM 分析软件组织当前软件过程的状态,找出其强处和弱处,这点无论软件采购单位,还是软件产品开发单位都可使用。
? 软件过程改进
根据评估结果,确定当前软件过程的弱点,按照 SW-CMM 能力等级的顺序,原则上从低级( 2 级)逐级向更高级( 3 、 4 、 5 级)发展,制定软件过程改进的策略。这一点已成为当前 CMM 的最主要用途,任何软件开发单位都可使用。需要特别注意的是 CMM 的每一个等级都是其更高等级的基础,基础条件不具备,就不可能达到更高等级。
? 软件能力评价
这种用途主要是软件采购单位为了减少软件采购的风险(包括资金、周期、特别是产品质量方面的风险),需要在招标时对投标者的软件过程能力进行评价。当然投标者也可进行自我评价,以便做到 “ 知己知彼 ” ,不过自我评价的结果一般并不被软件采购者用作可靠的依据。
2 软件企业实施 CMM 的意义
? 规范软件开发过程及管理
目前我国很多软件企业在软件开发过程方面还处于比较混乱,比较自由化的阶段。有的企业即使有一些规定,实际上也没有或没有完全执行,这主要与市场规范的问题有关。
? 规范市场竞争
对中国软件企业来说, CMM 不仅是一张国际市场的通行证,它的重要意义更在于,在达到 CMM 各级标准的过程中,通过软件工程方法的运用达到提高软件质量的目的。从而规范市场竞争,提高软件企业市场竞争能力。
? 帮助企业进行内部软件过程改进
这是 CMM 最具特色的地方。软件过程的改进和软件过程能力的提高可以提高产品质量,控制成本,提高劳动生产率。
? 增加企业的国际竞争能力
这对我国已加入 WTO 更为重要, CMM 与 ISO9000 不同,它能明确指出软件企业在软件过程和软件能力方面所达到的水平,软件企业所处的位置,企业应努力的方向及其改进的途径,这样企业的市场竞争能力就可增强。印度就是一个最好的例子。
CMM 是国际公认的 “ 事实 ” 标准,是中国软件业走向国际市场的通行证。
? 可以降低软件开发风险
这一点是 CMM 模型设计的初衷,对软件企业来说,也是极为有益的。
4 ISO9000 与 CMM
- 浏览: 758364 次
- 性别:
- 来自: 南京
相关推荐
**CMM(Capability Maturity Model,能力成熟度模型)**是一种评估软件开发组织或项目团队在软件工程过程管理上的成熟度和系统性方法。CMM由美国卡内基梅隆大学软件工程研究所(SEI)开发,最初目的是提高国防系统的...
CMM-manager
在IT领域,CMM(Context-Free Grammar Modeling Machine)是一种用于处理和分析上下文无关语言的工具,常用于编译器设计或解析器的构建。它通过解析输入的语法规则来生成相应的语法树,这是一种直观地表示语言结构的...
**CMM语言与C语言的关系** CMM,全称可能是"Compact Managed Model"或"Controlled Managed Model",是基于C语言的一种简化版本。它的设计目的是为了提供一个更简洁、更易于理解和实现的编程语法,可能针对初学者或...
《全面解析浙江大学CMM课程:基于CMM的软件过程改进与管理》 CMM,全称为Capability Maturity Model,即能力成熟度模型,是衡量软件开发组织在软件工程过程能力的一种框架,由美国卡内基梅隆大学软件工程研究所...
CMMI 和 CMM 的主要区别 CMMI(Capability Maturity Model Integration,能力成熟度模型集成)和 CMM(Capability Maturity Model,能力成熟度模型)都是软件过程改进的模型,但它们之间存在着一些关键的区别。 1....
很多时候,人们提到CMM,其实指的是SW-CMM,即软件CMM。除了SW-CMM以外,还有P-CMM,SE-CMM,SA-CMM和CMMI等,这些CMM都是美国Carnegie Mellon大学软件工程研究所(SEI)的产品。每个CMM都是独立的产品,有各自不同...
本实验的实验目的为构建一个CMM语言解释器,该解释器分为三部分:词法分析器,语法分析器,语义分析器,三者为拓扑关系,即后一个部件建立在前一个部件的基础之上。 实验内容主要包括:CMM语言的词法分析,语法分析...
CMM(Control Maintenance Model,控制维护模型)是一种用于软件工程中的编程语言,它主要用于系统级的编程,尤其是在航空航天、国防和工业控制等领域。CMM语言的解析是编译器或解释器开发的重要部分,其中词法分析...
《CMM和PMP教材》 本压缩包包含两份重要的IT管理领域的教材:PMP官方教材(PMBOK第五版中文电子版)和CMM教材。这两份教材是项目管理和软件过程改进领域的核心参考资料,对于提升个人在IT行业的专业素养具有极大的...
在本项目中,"cmm解释器大作业"是一个典型的计算机科学课程作业,涉及到了编译原理中的核心概念。这个作业旨在让学生通过实践理解并掌握词法分析、语法分析以及语义分析等编译器设计的关键步骤。武汉大学的这个实践...
### SSE-CMM浅析 #### 一、系统安全工程—能力成熟度模型(SSE-CMM)简介 系统安全工程—能力成熟度模型(System Security Engineering Capability Maturity Model, SSE-CMM)是一种评估和改进组织内系统安全工程过程...
**CMM语言解释器**是一种专门用于执行CMM(一种假设的编程语言)程序的软件。解释器的主要任务是读取CMM源代码,通过词法分析、语法解析和语义分析来理解和执行代码,而无需先将其编译成机器码。在本项目中,我们将...
"CMM manager 学习文档" CMM manager 是一種工作導向、非常直覺的測量套裝軟件,主要用在坐標測量機(CMM Coordinate Measuring Machine)上。它提供了輕而易舉的測量方式、單鍵式 CAD 測量、防碰撞測量路徑產生、...
【CMM与项目管理】 CMM,全称为Capability Maturity Model,中文译为能力成熟度模型,是一个评估软件开发组织过程能力的阶梯式模型。它由美国卡内基梅隆大学软件工程研究所(SEI)开发,旨在帮助软件企业提高其软件...
【哈工大CMM课程课件】是哈工大软件学院提供的一套全面介绍能力成熟度模型(Capability Maturity Model,简称CMM)的教育资源,旨在帮助学生和专业人士深入理解和应用这一模型。CMM是一种评估和改进软件开发组织过程...
CMM语言解释器是一种专为CMM编程语言设计的软件工具,它的主要任务是读取CMM源代码并执行相应的操作。CMM语言可能是一种类似于C或C++的低级编程语言,或者是某个特定领域定制的语法。这个简易的解释器包含了语言的...
《CMM》新课件是一套全面介绍软件能力成熟度模型(CMM)的课程资料,旨在深入解析CMM的基本概念及其未来发展趋势。这个压缩包包含了一系列关于CMM的PPT文件,每个章节都详细探讨了CMM的不同方面,帮助学习者系统地...
CMM程序语言编译器是一种专门用于解析和转换CMM(一种抽象的中间语言)代码的工具。这个项目是基于JavaCC(Java Compiler Compiler)构建的,JavaCC是一款强大的Java语法分析器生成器,它能够根据用户定义的语法规则...