深蓝海域KMPRO

软件能力成熟度模型CMM(AMT研究院 张艳)

2017-03-10 09:31

概述

CMM是Capability Maturity Model for Software的简称,是对组织软件过程能力的描述。

CMM起初是在美国国防部管理大型而又复杂的开发项目过成中形成的,后来逐步得到了公众和私营业主的认可而作为一种提高软件开发过程和软件质量的一种有用的框架模型被大家所接受。1984年美国国防部为降低采购风险,委托卡耐基—梅隆大学软件工程研究院(SEI)制定了软件过程改进、评估模型,也称为SEI SW-CMM。该模型于1991年正式推出,迅速得到广大软件企业及其顾客的认可。从1987年SEI推出SW-CMM框架开始,1991年推出 CMM 1.0 版,1993年推出CMM 1.1 版,2000年推出CMMI-SE/SW 1.0版。1986年,CMM首先于卡耐基 梅隆大学的软件工程学会SEI(Software Engineering Institute)和MITRE组织联合提出。

我国于2001年4月发布了《SJ/T 11234-2001 软件过程能力评估模型》和《SJ/T 11235-2001 软件能力成熟度模型》两个标准。我国政府一直重视软件产业的规范和发展,国务院于2000年6月颁发的“18号文件”第五章第十七条明确提出鼓励软件出口型企业通过ISO9000系列质量保证体系认证和CMM认证,其认证费用通过中央外贸发展基金适当予以支持。目前各省市、高新区、软件园都有对通过CMM的企业给予资金奖励的制度。
CMM的核心是把软件开发视为一个过程,并根据这一原则对软件开发和维护进行过程监控和研究,以使其更加科学化、标准化,使企业能够更好的实现商业目标。它侧重于软件过程开发的管理及软件工程能力的改进与评估,因此CMM被用作评价软件承包商能力并帮助组织改善软件过程质量,是目前国际上最流行、最实用的一种软件生产过程标准,成为当今企业从事规模软件生产不可缺少的一项内容。

CMM的目的是帮助软件企业对软件工程过程进行管理和改进,增强开发与改进能力,从而能按时地、不超预算地开发出高质量的软件。企业实施CMM模型并评估可为企业带来如下好处:指导软件组织提高软件开发管理能力;降低软件承包商和采购者的风险;评估软件承包商的软件开发管理能力;帮助软件企业识别开发和维护软件的有效过程和关键实践;帮助软件企业识别为达到CMM更高成熟等级所必须的关键实践;增加软件企业的国际竞争能力。

CMM将软件开发过程和软件质量的成熟程度分成以下5个等级:提出了由第一级(低级)向第五级(高级)逐级发展的模式。模型的等级从低到高,可以预计企业的开发风险越来越低,开发能力越来越高。模型的每个等级由不同的过程方面(Process Area)构成,而每个过程方面又由各种目标构成,每个目标由各种特定惯例和通用惯例支持。

CMM的具体级别划分如下:

第一级:初始级(The Initial Level):

初始级的软件机构缺乏对软件过程的有效管理,其软件项目的成功来源于个人英雄主义而非机构行为,因此它不是可重复的。

 第二级:可重复级(The Repeatable Level)

第二级软件机构的主要特点是:项目计划和跟踪的稳定性,项目过程的可控性和以往成功的可重复性。更具体的说:

  • 机构建立了管理软件项目的策略和实现这些策略的过程。 
  • 新项目的计划和管理基于类似项目的经验。 
  • 过程能力的增强基于以各个项目为基础的有纪律的基本过程管理。
  • 不同的项目可有不同的过程,而对机构的要求是具有指导项目建立适当管理过程的策略。
  • 每个项目都确定了基本的软件管理控制,包括:基于前面项目的经验和新项目特点,做出现实的项目承诺(如预算、交付期、软件质量等);软件项目管理者要跟踪开支、日程、软件功能;
  • 满足承诺的过程中的出现的问题要及时发现,妥善解决;
  • 定义了软件项目标准,且机构确保其被遵守。

本级的关键过程领域(KPA)包括:

  • 需求管理(Requirements Management)——客户的需求是软件项目的基础。软件需求管理的目的是在客户和软件项目之间达成对客户需求的一致理解。
  • 软件项目计划(Software Project Planning) ——为软件工程和项目管理建立一个合理的计划。
  • 软件项目的跟踪和监督(Software Project Tacking and Oversight) ——使管理者对实际的软件项目进展过程有足够的了解,以在项目效能偏离计划太多是采取有效措施。 
  • 软件子合同管理(Software Subcontract Management)——选择合格的分包商,并有效管理之。 
  • 软件质量保证(Software Quality Assurance) ——对软件项目过程及其间生产的各个产品进行监管以保证最终软件质量。
  • 软件配置管理(Software Configuration Management) ——在整个软件生命周期里建立并维护软件项目的工作产品的完整性。

第三级:已定义级(The Defined Level)

第三级的主要特征在于软件过程已被提升成标准化过程,从而更加具有稳定性、可重复性和可控性。处于第三级的企业具有如下一些特征:

  • 机构采用标准的软件过程,软件工程和管理活动被集成为一个有机的整体。标准化的目的是使之可使管理者和技术人员有效工作。 
  • 有一组人员专门负责机构的软件过程,并且在机构中有培训计划来确保stuff和manager有知识和技能完成所赋予的角色。 
  • 标准的软件过程结合项目的特点即形成定义的软件过程,它包括一组集成的定义良好的软件工程和管理过程。 
  • 一个定义良好的过程包括就绪准则、输入、完成工作过程、验证机制、输出和完成准则。 
  • 在已建立的产品线上cost, schedule, functionality 均可控制,软件质量被加以跟踪。
  • 过程能力体现在在机构范围内对一个定义的软件过程活动、角色和责任的共同理解。

第三级主要处理以下的KPA:

  • 机构过程关注(Organization Process Focus) ——机构对于改进机构的软件过程能力的软件过程活动的责任。
  • 机构过程定义(Organization Process Definition) ——维护一组有用的软件过程assets和提供一个用于定义定量过程管理的有意义的数据的基础 
  • 培训计划(Training Program)——个体的技能和知识以使他们能够更加有效的完成他们的角色
  • 集成软件管理(Integrated Software Management) ——业务环境和项目的技术需要,从机构的标准软件过程和相关的过程assets经过剪裁,将软件工程和管理活动集成为一个有机的定义的软件过程。
  • 软件产品工程(Software Product Engineering) ——地完成定义良好的工程过程。它描述了项目的技术活动,如需求分析,设计,编码和测试。
  • 组间协调(Intergroup Coordination) ——软件工程组主动介入其它工程组以便项目能更好满足客户要求的手段 
  • 同行评审(Peer Reviews) ——且有效的排除软件工作产品中的缺陷。它可通过inspection,structured walkthrough等手段进行。

第四级:已管理级(The Managed Level)

第四级的软件机构中软件过程和软件产品都有定量的目标,并被定量地管理,因而其软件过程能力是可预测的,其生产的软件产品是高质量的。具体地说,第四季的机构具有如下特征:

  •  软件过程和产品有定量质量目标。
  • 重要的软件过程活动均配有生产率和质量度量;
  • 数据库被用来收集和分析定义软件过程的数据; 
  • 项目的软件过程和质量的评价有定量的基础;
  • 项目的产品和过程控制具有可预测性。 
  • 缩小过程效能落在可接受的定量界限内的偏差; 
  • 可区分过程效能的有效偏差和随机偏差; 
  • 面向新领域的风险是可知并被仔细管理;

本级的关键过程领域包括:

  • 定量过程管理(Quantitative Process Management) ——地控制软件项目的过程效能。
  • 软件质量管理(Software Quality Management) ——定量了解项目软件产品的质量,并达到既定的质量目标。

第五级:The Optimizing Level

概括来说,第五级的主要特点是技术和过程改进被作为常规的业务活动加以计划和管理。处于第五级的企业具有如下一些特征:

  • 机构集中于连续的过程改进 
  • 具有标识弱点和增强过程的手段。
  • 采用过程数据分析使用新技术的代价效益并提出改进。
  • 项目队伍能够分析出错原因并防止其再次出现。 
  • 防止浪费是第五级的重点。

改进的途径在于已有过程的增量改进和使用新技术和新方法的革新构成 :

  • 陷预防(Defect Prevention) ——出错原因,防止错误再现(通过改变定义的软件过程) 
  • 技术变更管理(Technology Change Management) ——有益的新技术(工具、方法和过程),并按有序的方式将其转移至机构之中。其重点在于在变化的世界中有效的完成革新。 
  • 过程变更管理(Process Change Management)——改进机构所采用的软件过程,以改进软件质量,提高生产率和减少产品开发时间。
    概括来说,第五级企业的重点是连续的过程改进。 

纵观整个CMM,软件企业提高自身成熟度的历程是一个从无序到有序,从特殊到一般,从定性到定量,最后不断自我完善的过程。

CMM与绩效提高

从提高绩效的角度分析,企业实施CMM后将受益匪浅。

企业实施CMM,可从如下几个步骤进行:

1、提高思想认识,了解必要性和迫切性;

2、确定合理的目标;

3、进行CMM培训和咨询工作;

4、成立工作组;

5、制定和完善软件过程;

6、内部评审;

7、初期评估;

8、正式评估;

9、根据评估的结果改进软件过程。

CMM为了评价当前的水平,找出问题所在,指导如何改进和了解软件承包商的软件能力。目前针对CMM开发出许多的评估方法,其中公认评估方法有两个:一是用于内部过程改进的CMM评估称为CBA-IPI;二是用于选择和监控分承包方的CMM评估,称为SCE方法。这两种方法基于不同的目的,但评估的结果应一致。评估包括三个阶段:准备阶段、现场阶段和报告阶段。

可以预言:组织对软件开发过程及其有效性的控制在上述五个等级的规范和要求下肯定能得到提高。

 

相关推荐