企业化的软件生产能力
——CMM模型概念
北京华力拓软件工业有限公司 蒋鲁宁
[返回]
软件过程能力成熟模型(SW CMM)一经提出,就得到了许多软件企业的热烈响应。目前该模型在美国得到了广泛的应用,并成为事实上的软件过程改进的工业标准。软件强国印度也有一些软件公司已通过SW
CMM 5级认证。笔者所在的企业已开始实施SW CMM 2级,在此介绍一些对CMM的理解和应用体会,希望能引起国内同行的关注,并希望更多的中国企业加入到应用行列中。
一、为何要提出企业化软件生产能力?
企业化的生产能力是针对个人化的生产能力而言的。业内许多有识之士对个人作坊式的软件生产痛心疾首,高声呼唤软件生产的工业化。个人作坊式的软件生产不仅限于小企业,大中型企业也不乏其主。几个技术骨干离开一个汽车生产公司,恐怕不会影响到汽车的生产,因为生产线是靠一整套规范和程序保证的。而对于一个软件公司,无论大小,只要是基于个人作坊式的生产,不要说骨干,甚至一个主要程序员突然离开,都可能会使整个项目拖延,严重的情况下甚至会使项目惨遭失败。
一个软件企业,经过千辛万苦而完成的一个软件项目所取得的经验(或许更多的是教训),可以保证该企业顺利地完成类似的项目吗?看看一些用户的态度就可以明白。许多用户在软件工程项目签约时,要求开发商提供主要工作人员名单和简历,并要求保证主要开发人员不得在项目完成前离开。这表明用户对企业的能力信任是建立在企业内的个人身上的。无论企业怎样向用户展现企业过去所取得的“辉煌战果”,用户仅把希望寄托在具体个人上。用户似乎在鼓励个体化的开发。然而用户是合理的,除非一个软件企业能证明该企业的软件开发能力是企业的能力,而不是个人能力。
二、什么是企业的软件开发能力?
一个自然的问题由此产生:什么是企业的软件开发能力?提出这个问题本身就具有极大的现实意义。自从70年代软件危机以来,学术界和企业界对软件工程工具和技术的研究投入了大量的人力和物力,也得到了许多成果。然而,直到80年代未,一个不同于以往的概念逐渐被接受:一个企业的软件能力取决于该企业的过程能力。如果一个企业过程能力越成熟,那么该企业的软件生产能力就越有保证。大量的实践经验表明,在体现企业的软件的开发能力的因素中,技术或工具并不是第一位的。
什么是企业的过程能力呢?我们可通过正反两方面的例子来加以说明。首先看基于个人行为的软件开发方式。假如一个企业获得了一个软件项目,交给一个小组实施,所有有关的项目活动,均由这个小组(或小组负责人)决策和执行。整个项目的执行对企业近乎是一个黑箱子。也许这个项目非常成功(这个小组成员是由天才和勤奋的软件工程师组成),但企业难以让其他小组共享他们的经验,因为他们的天才活动是即兴发挥的。
然而,更可能出现的情况是这个项目不成功,同时更糟的是出于同样的原因,失败的教训也无法让其他小组吸取。换句话说,无论这个小组成败与否,对于企业今后的软件开发几乎都是没有帮助的。
我们再看看另一种情况。一个软件企业建立了一个软件开发过程,并通过政策保证强制实行这个过程。项目的执行不再是一个黑箱子,企业清楚地知道项目是按规定的过程进行的。所设定的过程可能有缺陷,但问题会在执行的过程中反映出来。企业在该过程执行一段时间后,可根据反映的问题来改善这个过程。周而复始,这个过程逐渐完善、成熟。由于这个过程不是依赖于某个人的,而是企业开发实际经验的结晶,因此,企业基于这个过程的软件开发能力也随之成熟。
那么,这是否意味着随意建立一个过程都能逐渐成熟起来呢?从理论上讲,若有足够的时间,那么应该是可以的。但在实际上却是不现实的。任何企业都不会容忍长期缓慢的过程改善。在软件开发过程中,根据几十年软件工程的发展经验,人们已识别出一些关键的过程域(KPA)。利用过去软件工程发展的成果,侧重这些关键过程域的实施,将会有效地建立起一个过程。需要说明的是,企业能力是指执行过程的能力,因此,企业能力的改善应是一个渐进过程,而不可能是一个飞跃的革命过程。关键过程域的实施也需逐步进行。
三、CMM模型是否是灵丹妙药?
以上就是CMM模型的基本思想。CMM不仅仅只用在软件工业上,在其它许多方面也得到了应用。在软件上的应用称之为SW-CMM(过去CMM即为软件CMM模型,
但为了与其它CMM应用区分,现已改为SW-CMM),
在人员管理上的应用称之为P-CMM,在系统工程上的应用称之为SE-CMM,
在软件获取上被称之为SA-CMM,而安全产品上的应用则称为SSE-CMM等。
此外CMM也不仅用于软件开发组织内,它也可作为认证机构的认证工具和用户评测一个企业是否具备他们所要求的能力的依据。而本文主要描述的是SW-CMM。笔者所在的企业在实施SW-CMM的同时,也在尝试实现P-CMM和SSE-CMM。
SW-CMM根据过程能力逐渐成熟的概念,将CMM的实施分为了五级,
第一级是起始级,没有什么特别要求,仅是一个进化起始点。第二级是进化的第一级,
第五级是进化的最高级。从第二级起,每一级包含了不同的KPA, 每个KPA都有明确的实施目标,并按公共属性类别定义相应的关键实施活动。
值得指出的是,SW-CMM并不排除已往的软件工程成果,SW-CMM提供了一个基于过去所有软件工程成果的过程改善的框架。这个框架与软件生存周期无关,也与所采用的开发技术无关。根据这个框架管理企业内部具体的软件过程可极大程度地提高企业按计划的时间和成本提交有质量保证的软件产品的能力。然而,SW-CMM并不能保证在这个过程框架下,产品开发百分之百的成功。产品的成功是多种因素的组合,例如市场等因素。
[返回] |