软件能力成熟度模型各级间的递进关系

许向荣  马宇晶          (首都医科大学生物医学工程学院  北京  100069

 

摘要  项目预测能力的提高及对软件能力成熟度模型分级的了解,可消除软件过程中诸如重复工作之类的问题,软件项目的结果就会变得越来越能够预测。对于软件成熟度级别较高的企业能够利用已有的管理经验和工程实践特征,在软件开发过程的早期确定需要解决的问题和解决问题的方法。成熟的软件过程意味着可以提早发现可能会失败的项目,从而减少对一个错误项目的投资。

关键词  能力成熟度模型  等级  软件过程改进

 

1  成熟度模型分级综述

软件业通用技术标准能力成熟度模型CMM的分级标准是:

CMM1(初始级):软件过程的处置落入没有步骤可以遵循的状态,软件的成功要依赖个人的能力和整体的机遇。

CMM2(可重复级):有基本的项目管理过程,可对成本、项目进度、软件特性进行跟踪。

CMM3(已定义级):软件过程文档化、标准化。全部项目采用与实际情况吻合的、对适于修改的标准软件过程进行控制。

CMM4(已管理级):软件过程及产品质量有详细的度量标准,有了定量的认识和操控。

CMM5(优化级):通过对过程、概念、技术的各种定量分析,持续地不间断地对进行过程改进。

CMM的标准很明确,但太条框化而不易理解,达到某一级标准的可操作性差。目前研究重点必须是让软件工作者对模型的整体思想充分了解,结合国情选择切入点。依据目前所掌握的材料,中国现状适合把研究重点放在CMM 2级入手,兼顾345级的局部方法最为可取。研究这些模型中对企业能力的分级及关键过程域KPA的划分所考虑的因素,依据我国软件企业的具体情况及其环境和我国软件企业的重要特点,找出制约软件企业开发效率和能力的关键因素,提出可行的标准和实践的步骤,进行大量调查、研究、分析和论证。难点是国内的信息来源比较困难,国外软件企业发展的事实证明问题的关键不单纯是技术更主要的是管理。调整企业的运行机制、发展战略和管理体制是国内软件业成功要的借鉴的经验。

 

由不成熟软件企业向成熟软件企业过渡不可能是突变方式的跨越,需要一个较慢长的时间段,想获得软件过程的持续地提高,应该基于许多细致的逐步进化的方式。CMM将这些逐步进化的步骤组织成五个成熟级别,为有秩序的过程提高打下了一个连续的基础。这五个级别为衡量企业的软件过程的成熟度,评价软件过程能力成熟度定义了一个有序的等级,并明确了企业为提高过程能力要付出努力的优先级别。成熟级别是为得到一个成熟的软件过程而精确定义的一个进化平台,每一个成熟级别都由一系列的过程目标组成,在满足这些目标之后,就能够达到一个稳定的软件过程。每达到一个成熟框架的级别,就需要不断完善软件过程,以提高企业软件过程的成熟度。

CMM五个级别划分出了软件组织开展实施活动的应用范畴,按等级定义了过程的成熟度,同等级由一组关键过程域KPA组成,完成了低一级的KPA后,上一级的KPA的益处才能体现出来,每一级KPA增强上一个成熟度级别KPA的效力,同时也进一步加强过程成熟增长的基础。从第二级开始,每一级都有自己的实现目标,如果达到了就表明达到了这个成熟级别,自然可以向上一个级别过渡,每一个级别的实现是高级别实现的基础。只要持续不断地进行软件过程改进,遵循分级标准的规定,将会逐步地过渡到上一级别的成熟阶段。一般情况下不提倡一个软件企业跨越成熟度级别进行进化。因为CMM中的每一级都是达到上一级的基础,沿着CMM制定的从低到高的级别逐步进化,能够使企业建立起一个良好的软件过程文化。然而一个软件企业进阶的基础现实所处的级别还未完全达到、还没有建立起来,那么这个企业即使勉强满足上一个级别的要求,也将会影响它现在的软件过程的稳定性和将来进一步发展的潜力,比如一个具有精确定义的软件过程的企业,它属于第三级,已定义级企业,但如果企业的管理者没有制订良好的计划保证这个软件过程的实施,或者没有能够管理好需求变化,那么即使有了这个软件过程,也难以保证这个企业的软件质量能够达到CMM的三级的水平,更不用说向四、五级进化了。

2  成熟度模型各级间的跨越

2.1  从初始级到可重复级  等级1(初始级)CMM的起始点,凡准备按CMM体系进化的软件企业都自然处于第一级这个基点上,并通过这个基点向第二级迈进。尽管这一等级的组织特征化是无秩序的,过程甚至是混乱的,但还是能开发出可以使用的产品,只不过这些产品常常会超出财政预算和时间进度。初始级的组织成功依赖于组织中人员的能力和工作的努力程度。对所有成熟度等级的组织来说,对任何一个企业来说,选择、雇佣、培养,和留住有能力的人都是一项非常重要的工作,这是所有企业和组织需要人力来从事工作的必然前提。随着软件项目规模和复杂性的不断增长,一些专业人员通过多年的对软件开发管理的经验进行分析和研究发现,过程成熟度的焦点问题不是技术问题,而是软件开发过程中的管理问题,尤其是软件开发过程中对各种各样的需求如何进行管理,对需求的变化如何适应都是过程成熟度的关键问题。只有将优秀工作人员的经验教训纳入文档化的过程,并且通过培训,使更多的其他工作人员具备执行这些过程所必须掌握的知识,由此,这个成功的软件过程才得以不断地重复和不断地改进,人们的工作才能更为有效。简单地说当一个过程变得可以重复,那样的话如果一个项目成功了,就可以认为下一个项目也可以成功,因为这个过程是可以重复的,这就是等级2(可重复级)

2.2  从可重复级到已定义级  达到等级2(可重复级)的管理者要把注意力集中在各自软件过程上,以便实现软件过程的可管理性。等级2是等级3(已定义级)的基础,等级2仅定义了管理的基本过程,而没有定义具体的执行步骤标准。等级3要求制定企业范围的工程化标准,不论是管理工程,还是软件开发工程,都要制定一套文档化的标准,并将这些标准集成到企业软件开发的标准过程中去,这就是企业的标准软件过程。这些过程可以帮助管理人员和工作人员工作得效率更高。卡耐基 梅隆大学的软件工程研究所发现,在软件开发过程中出现的很多问题都是因为对需求管理不善造成的,所以对需求进行有效地管理,对需求变化能够尽快适应,使之符合软件开发过程的规范,就成为软件开发过程的首要问题。而CMM等级2可重复级的关键过程域中就包括需求管理这一项。在CMM 2级中,除了需求管理,还包括软件项目计划、软件项目跟踪与监控、子合同管理、软件质量保证、软件配置管理等其他关键过程域。只有满足了这些所有的关键过程域的目标,才能达到等级2。定义得很明确的操作过程应当包括:准备妥当完成工作的标准和步骤、审核的方法、输出和完成的数据。当过程被定义得很清楚时,管理层就能对所有项目的技术过程有全面的了解。

2.3  从已定义级到已管理级  从等级3(已定义级)过渡到等级4(已管理级)将会遇到哪些问题呢?第一个问题是规范问题,这是一个不能回避的问题。软件企业要向软件开发人员详细介绍软件过程的情况和规范,以便将这些规范运用到日常工作中去。第二个问题是产品的检验问题。因为到第4级后,产品的检验方法与以前有所不同。为了让企业的产品获得用户的满意,企业应该收集以往的资料,运用到自己的一些项目中去,通过这些项目的成功来证明这个软件过程的质量可信度。等级3虽然已经是文档化的,但是它仍允许软件人员工作时有一定的自由度,而等级4则是量化了的管理。

质量改进的第一个职责也是等级4的关注焦点,既过程的定量控制。所有产品质量必须有明确的度量标准,而且要在过程中加入规定得清楚的连续的度量。对过程能力的量化认识,使得项目过程性能可以被定量预估和掌控。当有意外情况发生时,管理者就可以很快辨别出产生问题的原因,并加以适当处理。所以,有量化过程管理可以以一种可控制的方式改善过程能力,提高过程性能,软件产品最终具有期望的质量。

2.4  从已管理级到优化级  CMM4(已管理级)5(优化级)表示不断优化的成熟度等级。当一个企业处于这两个级别时,它就能够发现整个软件开发周期以及每个过程中的问题,并可以针对这些问题不断地对软件过程加以改进。改进不是定性的,而是定量的。达到第4级和第5级之后的好处就是能从定量的角度理解软件开发过程。

质量改进的第二个职责也是等级5的关注焦点,就是过程的不断改进。这种不断改进是通过过程执行的反馈信息进一步改善未来的执行过程。企业高层将会把重点放在对过程的不断优化上。达到了等级5的企业根据当前项目的性质、技术等因素,主动找出过程的缺失,及时提出建议,以达到预防缺陷。降低不必要的浪费、不必要的消耗也是等级5的一个重点。虽然在CMM的其它等级中这些活动也可能发生,但是在优化级的技术与过程的改进是作为一项常规工作,有计划和有步骤地在管理之下实施的。

3  总结

企业的过程成熟度的提高有几种情况出现:

第一种情况:成熟度提高会使项目的计划目标和实际结果之间的差距减小。如过程成熟度级别较低企业经常偏离最初的计划数据,而过程成熟度级别较高的企业则可以在一定程度上实现目标数据,而且级别越高,实现的精度越高。

第二种情况:成熟度提高会使项目的计划目标与实际结果的变化减小。如过程成熟度级别较低企业对相似大小的项目下达的数据就是不可预测的,变化幅度也是很大的。而在较高级别的企业里,相似项目下达的数据也是在相似范围之内的。

第三种情况:成熟度提高会使计划目标结果也提高。就是说当一个软件企业成熟时,它的开发成本跟着降低了,开发时间变短了,产量和质量提高了。较低成熟度级别的企业内,因为要采取大量的重复工作来改正工作中的错误,所以开发时间是很长的,相比之下,较高成熟级别的企业则能够提高软件过程的效率,减少高成本的重复工作,从而能够缩短开发时间。

参考文献

1  周之英.现代软件工程.北京:科学出版社,2002

2  郑人杰.实用软件工程.北京:清华大学出版社,2001

3  杨一平.软件能力成熟度模型CMM方法及应用.北京:人民邮电出版社,2001

(收稿日期:2008-06-03

(本文编辑:文  心)

 

top