`

CMM

 
阅读更多
一、引言
信息技术的发展,使得软件规模越来越大。传统的“软件作坊”,生产往往依赖于人们急于创造财富的激动情绪,生产处于无序、混沌的一种状态,软件产品的质量不能保证,甚至中途撤消软件项目。这种生产方式已经不能满足日益增长的软件需求了。
人们认识到,软件过程是否完善是软件风险大小的决定因素。
1986年11月,美国卡内基梅隆大学的软件工程研究所(SEI)应美国联邦政府的要求,针对美国国防部对软件承包商的能力评价问题,研究"过程成熟度框架"。
它主要用于软件开发过程和软件开发能力的评价和改进。CMM自1987年开始实施认证,现已成为软件业最权威的评估认证体系。

二、CMM综述
2.1什么是CMM?
CMM (软件能力成熟度模型)是英文 Capability Maturity Model for Software缩写,SW-CMM 的简称。
CMM 的定义是:有关软件企业或组织的软件过程进程中各个发展阶段的定义、实现、质量控制和改善的模型化描述。这个模型用于确定软件企业或组织的软件过程能力和找出软件质量及过程改进方面的最关键问题,为企业或组织的过程改进提供指南。
CMM 的核心思想是将软件开发视为一组过程,并根据统计质量管理的理论对软件开发进行过程管理,以使其满足工程化、标准化的要求,使企业能够更好地实现商业目标。它侧重于软件开发的管理及软件工程能力的提高,因此 CMM 可以作为企业软件过程改进闹改希镏砑⒒菇⒀细竦摹⒐娣兜娜砑⒐蹋钣行У靥岣呷砑こ棠芰Α?

2.2 CMM的成熟度等级
CMM 提供了一个软件能力成熟度模型的框架,它将软件过程改进的进化步骤组织成五个成熟度等级,为软件过程不断改进奠定了一个循序渐进的基础。每一个成熟度等级为继续改进过程提供一个台基。第一级实际上是一个起点,任何准备按 CMM 体系进化的企业都自然处于这个起点上,并通过这个起点向第二级迈进。除第一级外,每一等级包含一组过程目标,通过实施相应的一组关键过程域来达到这一组过程目标。当这一组目标达到时,就能使软件过程的一个相应的重要成分得以稳定。每达到成熟度框架的一个等级,就建立起软件过程的一个相应的稳定成分,从而导致软件开发组织过程能力一定程度的增长。
CMM的成熟度分级、特征与要求见下表:
表-1 CMM的分级、特征与要求
等级名称 特征与要求
初始级 软件过程的特点是无秩序的,偶尔甚至是混乱的。几乎没有什么过程是经过定义的,成功依赖于个人的努力。
可重复级 已建立基本的项目管理过程去跟踪成本、进度和功能性。必要的过程纪律已经就位,使具有类似应用的项目。能重复以前的成功。
定义级 管理活动和工程活动两方面的软件过程均已文档化、标准化、并集成到组织的标准软件过程。全部项目均采用供开发和维护软件用的组织标准软件过程的一个经批准的剪裁版本。
管理级 企业对产品及过程建立起定量的质量目标,同时在过程中加入规定的很清楚的连续的度量。作为企业的度量方案,要对项目的重要过程活动进行生产率和质量的度量。软件产品因此而具有可预期的高质量。达到该级的企业已实现过程定量化。
优化级 整个企业将会把重点放在对过程进行不断的优化,采取主动的措施去找出过程的弱点与长处,以达到预防缺陷的目标。同时,分析各有关过程的有效性资料,作出对新技术的成本与效益的分析,并提出对过程进行修改的建议。达到该级的公司可自发的不断改进,防止同类缺陷二次出现。



2.3 CMM的关键过程域
在CMM中每个成熟度等级(第1级除外)规定了不同的关键过程域,一个软件组织如果希望达到某一个成熟度等级,就必须完全满足关键过程域所规定的不同要求,即满足每个关键过程域的目标。所谓关键过程域是指一系列相互关联的操作活动,这些活动反映了一个软件组织改进过程时必须集中精力改进的几个方面。换句话说,关键过程域标识了达到某个成熟度等级时所必须满足的条件。在 CMM 中一共有18个关键过程域,分布在2至5级中:
第 2 级(可重复级)有6个关键过程域,主要涉及建立软件项目管理控制方面的内容。
即:需求管理(RM)、软件项目计划(SPP)、软件项目跟踪与监控(SPTO)、软件子合同管理(SSM)、软件质量保证(SQA)、软件配置管理(SCM)

第 3 级(定义级)有7个关键过程域,主要涉及项目和组织的策略,使软件组织建立起对项目中的有效计划和管理过程的内部细节。
即:组织过程焦点(OPF)、组织过程定义(OPD)、培训程序(TP)、集成软件管理(ISM)、软件产品工程(SPE)、组间协调(IC)、同级评审(PR)

第 4 级(管理级)有2个关键过程域,主要的任务是为软件过程和软件产品建立一种可以理解的定量的方式。
即:定量过程管理(QPM)、软件质量管理(SQM)

第 5 级(优化级)有3个关键过程域,主要涉及的内容是软件组织和项目中如何实现持续不断的过程改进问题。
即:缺陷预防(DP)、技术变更管理(TCM)、过程变更管理(PCM)


三、软件企业与CMM
3.1实施CMM对软件企业的意义
中国正式加入WTO之后,中国软件市场已经是世界市场的一部分,中国软件企业已经直接面对国际IT企业的残酷竞争,中国企业除了要在国内占领市场之外,还应该放眼世界,走出国门,这样才能更好的生存和发展。
如何进入国际市场,成为了所有一切的前提。中国软件要赢得国际市场的信任和青睐,首先必须达到国际标准,通过国际标准的认证。现在想在软件产业化方面有所作为的企业,已经充分意识到加强国际标准认证的重要性和紧迫性。
鉴于CMM认证在国际上的声誉地位以及CMM对于软件企业能带来的实质性的质量的改进革新,以及我国政府大力支持CMM认证的政策,在企业内部实行项目管理和进行CMM认证:
3.1.1能将以前的隐性管理变为显性管理,把CMM带来的管理需求推到前台,并且确定用户在软件开发过程中的核心地位,使研发过程逐步透明化,项目进度得到更好的控制,实现全过程的质量管理。
3.1.2可以创造一个良好的软件开发环境和企业文化。软件开发人员严格遵守共同的规则规范,每一步都有明文记录,将上一次的经验运用到下一次步骤或项目中去;还能够做到分工明确,责任清楚,从而实现自身价值。
3.1.3 CMM是评价一个软件企业项目管理及研发实力的国际准则,它标志着企业走上标准化、规范化国际化的发展道路。
所以,CMM认证已成为软件企业的首选行动选择。通过CMM认证最直接的收益就是得到越来越多的国外企业的信任,也就能接到越来越多的订单。
原领导摩托罗拉中国研究中心通过CMM认证的李启煊先生曾说:“中国软件企业一定要进行CMM认证,如果我们连这点都做不到,将不但被国际软件产业价值链排除在外,不久以后甚至连中国本土的市场也会全部失去,因为CMM是目前提高软件企业竞争力的最佳途径。”

3.2软件企业如何实施CMM
3.2.1领导重视,全员参与。
将CMM变成习惯思维而不是应付差事。
3.2.2以CMM为软件过程改进指导书,结合企业现状作适当配置。
不要一味不变的本本理论。
3.2.3运用管理工具。
实施CMM需要的工具有:软件开发过程框架、需求管理工具、面向对象的分析设计工具、配置管理工具、变更管理工具、软件测试工具等等。
3.2.4建立软件工程过程小组(SEPG),负责软件过程改进。
制定出规范、规程,并经过与项目组反复讨论后确定,以保证其科学有效。此外,还要提供培训和咨询服务,解答项目人员的疑问,对项目进行检查并形成各种工作报告等等。

3.3软件企业实施CMM的范例
3.3.1 软件企业实施CMM的过程:
软件开发组织中实施CMM评估应该按照以下两个阶段进行:
第一阶段:申请评估的软件开发组织首先应该自己组织CMM培训,强化组织成员的CMM理念,在整个组织中树立起过程管理和质量管理意识,并着重培养一批具有初步经验的CMM实施管理人员。在此基础上,选取一些合适规模的中小型项目进行试点,初步积累一些实施CMM的经验,为进行正式的CMM评估打下基础。
第二阶段:在第一阶段取得收获的基础上,聘请有实施CMM成功经验的单位作为咨询顾问,在组织内全面实施CMM。并且在咨询专家的指导下提出评估申请,并着手准备组织预评估和正式评估。

3.3.2 某软件企业实际实施CMM的范例:
在正式决定实施CMM2级的初期,企业上下都非常乐观,认为在自己的企业实施CMM是一件轻而易举的事。
实施CMM首先从培训和过程文档的编写开始。经过培训,大家都认为基本掌握了CMM的知识要点,领会了基于过程改进企业软件能力的思想。
SEPG组开始定义企业的软件过程规范和文档模板的时候,就开始暴露出一些问题。因为SEPG组成员基本上都有本职工作,过程文档的编写时间得不到保证,导致过程规范文档的编写不能保证进度。而且在文档编写中,缺乏整体控制。SEPG组在制订过程文档的同时,软件部门也在酝酿进行组织结构调整,这两件事同时在进行,分别由不同的人员在运作,相互间的沟通渠道也不顺畅。
在经过了几轮修正后,尽管过程文档还存在不少的问题,但是SEPG组认为即便再次修改也很难有较大改善。由于进度已经明显的滞后,在企业高层领导的批准下,经过对项目组成员的培训,开始了CMM的试运行工作。
部门对于项目计划比较重视,但忽视了项目策划过程。在试运行的项目中,SEPG组要求项目经理需要把项目策划过程逐一地留下证据,便于SQA人员的审核。在实际的操作过程中,前期工作留下的隐患开始逐步暴露出来。首先暴露出来的问题是项目估计规程存在一些不合理的地方。其次,由于以前基本没有科学地进行估计,也没有适用的历史数据,项目组成员在进行估计时有一种无从下手的感觉。再次,项目成员对于过程文档的理解不够深入,经常理解错误。导致项目组在项目策划过程中消耗了很长的时间,也带来了一些争执和冲突。
项目计划出来以后,和以前的项目计划比较,发现工作量增加了很多。究其原因:1.新的计划是经过详细的估计过程逐步得到的,而以前的计划则属于是“拍脑瓜”的结果。2.原计划中,管理活动考虑较少,而新的计划增加了一些可以预期的管理活动。3.由于是初次使用科学的方法进行估计,但是估计过程中的参数选择可能与企业现状不符。
高级经理在看到这个计划后,虽然也觉得新的项目策划过程更加科学,但是,迫于绩效考核的压力,不大情愿批准这样的计划,甚至不愿意把这些项目投入到CMM的试运行中。
在实施的过程中,也存在一些问题困扰着SEPG组。
例如: 企业实施CMM时都想尽快地见到实效,可是在实施初期,过程规范很难一步到位,过程规范的探索和改进会增加软件项目的工作量。实施CMM可能会在相当长的时间内,企业需要付出很多学费,而效果却需要很长的时间才能显露出来。
值得庆幸的是,上述的一些问题已经开始被SEPG组所识别,并且得到了公司各方的重视。同时,咨询公司也在积极地指导我们解决试运行过程中碰到的问题。希望在不久的将来,CMM能够得到大家的认可,主动地按照相应的过程规范来运作软件项目,并且可以顺利地通过评估。
分享到:
评论

相关推荐

    CMM语法分析文件

    在IT领域,CMM(Context-Free Grammar Modeling Machine)是一种用于处理和分析上下文无关语言的工具,常用于编译器设计或解析器的构建。它通过解析输入的语法规则来生成相应的语法树,这是一种直观地表示语言结构的...

    CMMI和CMM的主要区别

    CMMI 和 CMM 的主要区别 CMMI(Capability Maturity Model Integration,能力成熟度模型集成)和 CMM(Capability Maturity Model,能力成熟度模型)都是软件过程改进的模型,但它们之间存在着一些关键的区别。 1....

    CMM词法分析器 使用java语言实现

    CMM(Control Maintenance Model,控制维护模型)是一种用于软件工程中的编程语言,它主要用于系统级的编程,尤其是在航空航天、国防和工业控制等领域。CMM语言的解析是编译器或解释器开发的重要部分,其中词法分析...

    cmm.rar_CMM_CMM 解释器_CMM解释器_C语言 解释器_C语言解释器

    **CMM语言与C语言的关系** CMM,全称可能是"Compact Managed Model"或"Controlled Managed Model",是基于C语言的一种简化版本。它的设计目的是为了提供一个更简洁、更易于理解和实现的编程语法,可能针对初学者或...

    cmm.rar_CMM

    **CMM(Capability Maturity Model,能力成熟度模型)**是一种评估软件开发组织或项目团队在软件工程过程管理上的成熟度和系统性方法。CMM由美国卡内基梅隆大学软件工程研究所(SEI)开发,最初目的是提高国防系统的...

    CMM3 过程模板文档全套

    CMMI3级软件过程改进方法与规范 1.1 CMMI简介 4 1.1.1 CMMI发展简史 4 1.1.2 CMMI的过程域 5 1.1.3 CMMI的两种表示法 6 1.2 CMMI阶段式表示法 7 1.2.1 成熟度等级L1:初始级的特征 8 ...1.7 CMM/CMMI在中国 21

    cmm解释器大作业

    在本项目中,"cmm解释器大作业"是一个典型的计算机科学课程作业,涉及到了编译原理中的核心概念。这个作业旨在让学生通过实践理解并掌握词法分析、语法分析以及语义分析等编译器设计的关键步骤。武汉大学的这个实践...

    呼叫中心CC-CMM标准文档

    ### 呼叫中心CC-CMM标准文档知识点详解 #### 一、呼叫中心能力成熟度模型(CC-CMM)概述 **1.1 模型背景** - **起源与发展**:CC-CMM由客户世界机构(CCMWorld Group)发起,并联合了多个领域的合作伙伴共同创立。...

    自己写的cmm语法分析器

    《CMM语法分析器的构建与实践》 在编程语言的世界里,编译器和解析器扮演着至关重要的角色。它们是将人类可读的源代码转化为机器可执行的指令的关键工具。本篇文章将深入探讨如何构建一个自定义的CMM(假设这是一种...

    浙江大学CMM课件浙江大学CMM课件浙江大学CMM课件

    《全面解析浙江大学CMM课程:基于CMM的软件过程改进与管理》 CMM,全称为Capability Maturity Model,即能力成熟度模型,是衡量软件开发组织在软件工程过程能力的一种框架,由美国卡内基梅隆大学软件工程研究所...

    CMM-manager 中文手册

    CMM-manager

    java CMM.zip

    本实验的实验目的为构建一个CMM语言解释器,该解释器分为三部分:词法分析器,语法分析器,语义分析器,三者为拓扑关系,即后一个部件建立在前一个部件的基础之上。 实验内容主要包括:CMM语言的词法分析,语法分析...

    CMM和PMP教材

    《CMM和PMP教材》 本压缩包包含两份重要的IT管理领域的教材:PMP官方教材(PMBOK第五版中文电子版)和CMM教材。这两份教材是项目管理和软件过程改进领域的核心参考资料,对于提升个人在IT行业的专业素养具有极大的...

    TRACE32软件的Practice脚本 cmm脚本.zip

    标准Practice脚本的扩展名是.cmm,因此有人也称之为cmm脚本 Practice脚本是Lauterbach公司提供的一种脚本语言,运用于其TRACE32软件当中,非常容易上手、并且功能强大。 我在文章...

    CMM中的软件质量保证实施准则

    【CMM中的软件质量保证实施准则】是软件开发过程中一项至关重要的规范,旨在确保软件产品的质量和过程的稳定性。CMM(Capability Maturity Model,能力成熟度模型)是一种评估和改进软件开发组织能力的方法论,其...

    哈工大cmm课程课件

    【哈工大CMM课程课件】是哈工大软件学院提供的一套全面介绍能力成熟度模型(Capability Maturity Model,简称CMM)的教育资源,旨在帮助学生和专业人士深入理解和应用这一模型。CMM是一种评估和改进软件开发组织过程...

    SSE-CMM浅析

    ### SSE-CMM浅析 #### 一、系统安全工程—能力成熟度模型(SSE-CMM)简介 系统安全工程—能力成熟度模型(System Security Engineering Capability Maturity Model, SSE-CMM)是一种评估和改进组织内系统安全工程过程...

    CMM语言解释器

    **CMM语言解释器**是一种专门用于执行CMM(一种假设的编程语言)程序的软件。解释器的主要任务是读取CMM源代码,通过词法分析、语法解析和语义分析来理解和执行代码,而无需先将其编译成机器码。在本项目中,我们将...

    cmm语言解释器

    CMM语言解释器是一种专为CMM编程语言设计的软件工具,它的主要任务是读取CMM源代码并执行相应的操作。CMM语言可能是一种类似于C或C++的低级编程语言,或者是某个特定领域定制的语法。这个简易的解释器包含了语言的...

Global site tag (gtag.js) - Google Analytics