ccidnet????

出版日期:2002-03-10 总期号:181 本年期号:03

本期导读
新闻观察
资本透视
封面人物
咨询与管理
业界风云
专题
行业应用
应用专栏
产品实验室
过程管理的数学模式
联想软件设计中心实施CMMbasedSPI的经验
李建奇、邵永博

  摘要

  本文结合联想软件设计中心实施CMM2、CMM3的经验,阐述了在过程改进过程中可以用到的两个原理:过程能力的统计学原理和过程管理的经济学原理。

  统计学原理论述了过程改进过程中数据的使用,经济学原理论述按照高投入产出的方式进行过程改进。他们有助于过程管理者把握过程改进的本质,有助于让过程改进贡献更多的商业价值。


  一、 定量的过程能力


  这里我们要讨论的问题是过程改进和软件组织的商业目标的关系。

  1.过程能力

  过程能力是指遵循一个标准的过程可以得到的预期的结果,过程能力是已有的过程数据的统计结果,一般是由平均水平和上、下控制线组成。

  CMM级别是一个定性的过程能力的衡量,CMM的本质是一种基于统计的过程改进模型,具有CMM级别的公司在发布过程能力的时候,一般会给出定量的指标。这些指标和组织的商业目标直接相关,按照更快、更好、更便宜的商业目标,我们选用表1这些指标来量化项目开发过程。

表1

指标

目标

计算方法

单位进度

更快

项目开发周期÷产品规模

生产效率

更快、更便宜

项目工作量÷产品规模

单位成本

更便宜

项目开发成本÷产品规模

遗留bug率

更好

遗留bug数量÷产品规模 


  遗留BUG是指在软件产品交付后,由用户在使用的过程中发现的BUG。生产效率同时关系到进度和成本,但是生产效率的提高不等同项目开发周期缩短和成本降低。上面这组数据一般来说应该同时发布,否则没有意义。例如,只发布进度数据,我们无法评价项目,正如我们所知道的,项目延期往往是因为还在修改BUG,所以质量和进度要同时发布我们才能够知道项目进展的如何。而对于经营者,更关心项目的成本和客户的满意度,只有客户满意了,才能够顺利的实现项目的效益。而为了在不同的项目之间进行比较,将数据标准化是必要的。另外,为了衡量整个企业的成本,我们最好再度量一下项目维护的成本,很多MIS系统的开发亏损,多是由于后期的维护成本过高造成的。在发布数据的同时,一些辅助的数据也是必要的,如软件产品的规模、软件的技术特点等,这些数据有助于我们将项目分类,从而得到比较好的能力数据。

  同时,我们应该注意到,这组数据不是我们的能力数据的全部,能力数据针对软件过程而言,定义了多少个过程,相应的就会有多少组数据来量化其能力,例如同行评审,我们同样可以将其视为一个过程,同样会有一组关于周期、效率、质量和成本的数据。为了找到提高整个企业的利润的途径,我们必须对于项目的开发和维护内部的一些过程进行度量。 过程改进究竟会给组织带来什么?能力成熟度帮助组织预期项目达到其目标的能力,请看CMM1.1中的一个图形(见图1):


  图1

  图1中,横轴表示项目周期或者成本等项目属性的数值,纵轴表示概率,曲线界定了项目可能项目的实际结果的分布范围,竖线表示目标值,五张图表示了从一级到五级这五个能力。过程改进给组织带来了三个方面的提升:

  * 使目标值和实际的结果的偏移降低,图中表现为竖线和曲线的中心位置的距离。这一点,在从一级到二级提升的最为明显。

  * 使实际的结果的离散程度降低,图1中表现为曲线的肥瘦程度,曲线越瘦,说明这种偏离越小。这一点,从二级到5级都在提升。

  * 使我们的过程能力越来越强,图1中表现曲线的对称中心与坐标原点之间的距离。这一点,从二级到五级都在提升。

  事实上,即使同一个级别的组织,他们的过程能力也会有差异。有的公司在缩短项目周期的能力方面强一些,有的公司在改进产品质量方面的能力强一些,这是因为组织的商业目标的优先级不同,导致过程改进的侧重不同,或者说过程改进要为商业目标服务。

  2.定性与定量的差异

  在CMM标准中,一般这样描述CMM2级项目的定量过程能力,“plans based on past performance are more realistic in Level2 organizaions”。由于CMM2级更多的改进在项目管理方面,从量化的角度,就是2级的项目(比1级)更可能按期完成。

  由于过程能力的定量和定性的差异,在CMM2级被评估通过的时候,往往不会有很多的数据,展示项目的能力的可预测性。在CMM2级评估的时候,是看6个KPA是否满足标准要求。

  这个差异并不意味着过级的时间应该更长一些,以便积累更多的数据。但是对于过程管理者来说,有一些启示。


  图2

  3.启示

  (1)积累数据

  长期来看,必须把过程管理建立在数据的基础上,即使对于CMM2级来说,尽早的积累数据,是非常有用的,虽然积累数据可能要花一点钱。我们需要数据来帮助我们判断过程能力,一些组织虽然没有作CMM,但是通过数据,结合图1,也可以来看看自己的过程能力处于一个什么水平;相反的,对于那些作CMM的组织,同样需要数据来验证自己的过程改进的成果。

  CMM本身就是一种基于统计分析的过程改进模型,一方面,丰富的历史数据是达到四级水平的必备条件,四级的组织将系统的使用这些数据,所以及早的收集数据有利于缩短过程改进的周期;另外一方面,在达到CMM4以前,一些数据可以帮助企业及早的改进过程,例如通过对同行评审和测试工作的度量,我们得到了表2的数据。

表2

工作量

同行评审

测试

发现一个缺陷平均工作量

0.7人时

1.1人时

修改一个缺陷平均工作量

0.6人时

5.8人时

排错效率(合计)

1.3人时

6.9人时


  通过表2的数据,发现同行评审和测试的排错效率相差的是多么悬殊,早期排错对于进度的影响非常明显,在以后的项目中,多安排一些同行评审是明智的。这就是一个基于统计分析改进过程的例子。

  (2)注意快速过级的利弊

  由于商业环境的需要,以及一些其他考虑,快速过级对于过程改进来说非常重要。作为过程管理者,在充分利用快速过级带来的环境优势的同时,要把握住提高过程能力这个本质的方面。这也是高层经理应该注意的一个方面。


  图3

  (3)SEPG基于数据,进行过程改进

  过程管理者,要建立对于过程的数据化思维,形成根据数据分析进行管理的企业管理文化,倾听数据的声音,不能满足于定性的考察。作为一个管理者,希望提高软件产品质量,同时缩短项目周期、降低成本,数据分析可以帮助你看清楚自己当前的情况如何,是什么原因造成了目前的状况。我们不要事先期望能够从数据分析那里得到什么结果,而是做好接受数据分析结果的心里准备。

  基于数据分析进行管理,我们必须能够收集到真实的数据,而这些数据的采集大多来自开发人员,或者所度量的过程的实际的执行人。所以我们进行数据分析的目的不能是用分析结果来评价某个人的工作情况,如果你将数据的分析结果和这些员工的薪酬挂钩,那么我们采集上来的数据难以做到客观,这些数据会带有对某些员工或好或坏的倾向,这样的数据还不如没有数据。所以,值得注意的是我们进行数据分析的出发点应该是改进某些过程,而不是将其作为管理员工的一种手段,在开始数据分析的时候,也必须声明这一点。


  图4

  4.联想的经验

  (1)联想的实际数据

  在这里我们仅提供对项目开发过程的一组度量数据,我们将实施基于CMM2和CMM3的流程规范的项目数据分开,来分析我们的过程改进活动,下面是一些辅助信息:

  * CMM2:数据来自2001年1月结束的,并且实施基于CMM2的流程规范的项目。

  * CMM3:数据来自2001年12月结束的,并且实施基于CMM3的流程规范的项目。


  图5

  (2)项目特点

  * 周期:3个月至5个月。

  * 软件规模:70KELOC至170KELOC(KELOC:千行等价源码,为了在不同的开发语言之间进行比较,我们将各种开发语言的源码换算成与C++等价的源码)。

  * 软件类型:随机软件,即随联想台式机一同出售的软件。


  图6

  下面是关于进度、质量和成本方面的数据(见图2、图3、图4、图5、图6和图7)。


  图7

  进度

  单位开发周期=项目周期÷项目规模,图2中的数据为统计平均值。项目周期以花费的工作日计算。

  图3中的数据为统计样本单位开发周期的标准差。

  进度偏差率=(实际项目周期-计划项目周期)÷计划项目周期×100%,图4中数据为统计平均值。

  质量

  遗留BUG率=用户发现的BUG数量÷软件规模,图5中数据为统计平均值。在用户的使用过程中,均未出现过严重BUG。

  效率

  生产效率=软件规模÷项目耗费的工作量,图6中数据为统计平均值。这里的生产效率不是编码人员的平均生产效率,而是整个项目所有成员的平均生产效率。

  成本

  成本率=项目成本÷软件规模,图7中数据为统计平均值。

  (3)数据的声音

  我们来看进度数据,周期缩短了,说明我们的能力在提升;标准差的降低说明统计结果的离散程度降低,能力的可预测性增强;进度偏差降低,说明目标与实际结果的偏移减小。质量、效率、成本和进度的情况类似,此处不再提供数据和说明。通过这些数据我们可以看到,过程改进达到了模型中阐述的效果。

  在经过2001年的过程改进后,项目周期缩短16%,遗留BUG率降低22%,生产效率提高10%,成本率降低9%,可以看到组织的商业目标在过程改进中得到满足;

表3

增加的过程的成本

程度

备注

需求管理的成本

low

 

项目管理的成本

high

 

sqa 的成本

moderate

 

scm 的成本

moderate

 

ssm 的成

moderate

 

其他

 

 


  另外,CMM3级的数据可以作为目前的项目开发的部分基线数据使用,在对一个类似的新项目进行估计的时候,我们可以根据这些数据来制定项目的目标值以及目标值的上、下界。


  二、 过程改进的经济学原理


  从1级到4级,随着CMM级别的提升,软件组织会增加新的过程元素,或者细化已有的过程元素,总之过程的规模在逐渐增加。但是,到了CMM5级,开始优化一些过程元素。这是基于经济学原理。

  1.过程改进的经济学原理


  图8

  图8的含意显而易见。

  * 过程不能无限制的细化(繁琐)

  * 过程的适当细化,能够降低项目的总成本

  2.2级组织的经济分析

  分析一下从1级到2级的过程成本的增加和节约(定性):

  2级的组织从经济学上,并不总是比1级有效(尤其是初始阶段)。但是,由于需求更好的被满足,项目进度具有更好的预测性,2级组织可能会有更好的客户满意度。

  3.启示

  (1)简洁、适用、深刻的过程

  软件过程改进是被经济利益驱动的,必然遵循经济学原理。简洁的过程的好处,遵循另外一个方面的经济学考虑,就是培训、咨询、SQA的成本会下降。

  过程管理的经济学原理,可以理解为“过程管理”这个职业的生存哲学,也可以理解为”过程管理咨询”这个行业的产业哲学。

  (2)过程的稳定性

  规范更新的频率,会影响过程改进。要制定一个过程更新的适当的RoadMap。

  (3)关注CMM实施的成本上升

  总成本的上升必然会不利于过程改进工作。关注过程实施的怨言,尤其是:

  * 过程应用到全新的项目的时候

  * 高层管理者的变更

  * 高层管理者使用过程的成本,也是非常关键的一个因素:高层管理者花的时间,成本是昂贵的。

  (4)选择实施的KPA的顺序

  事实上,CMM的每个级别的选择的原理,也是基于经济学分析,2级的6个KPA,比起剩余的12个KPA,从经济上是有效的。从1级到2级的时候,应该根据组织的具体情况,确定改进策略,安排KPA的实施顺序。

  比如:SCM、PP、PTO、RM、SQA、SSM的顺序。

  (5)克服改进的阻力

  人类的本能,孤立的思考,而不是系统思考。

  CMM实施过程中,遭到不少阻力。比如对于编码人员,由于增加了详细设计文档、单元测试文档、变更请求文档,增加了若干同行评审,增加了工作量采集,等等,他个人的生产效率(代码量/小时)降低了。

  孤立的说,原来在送交测试前1周能完成的编码工作,采用新的过程后,他前后可能需要2周时间。

表4

节约的开发成本

程度

备注

满足用户需求

moderate

 

项目按期完成

high

 

避免返工的浪费

moderate

 

避免配置错误

m

 

子合同成功

m

 

其他

 

 


  这个时候,编码人员的经常的抱怨就是“文档太多了”。

  但是从系统的角度,虽然多花1周时间,但是:

  * 节省了本项目的成本:测试、返工等。

  * 节省了本项目维护的成本。

  * 增加了重用的好处。

  从经济的角度分析问题,有助于说服相关人员,有助于问题的解决。

  (6)对于1级组织的研究,对于ISO9000软件组织的研究

  要研究一下1级组织的特点,根据具体情况逐步改进过程能力,在改进的过程中,树立过程改进者的权威形象,将对过程改进工作很有好处。

  对于那些已经通过ISO9000的组织,也要利用好已有的成果。


  图9

  4.联想的经验

  (1)过程改进成本分析

  2001年,联想在过程改进上投入188万人民币,包括专职的过程改进人员的人力成本、培训和评估费用以及项目组投入的过程改进相关的流程规范的培训所花费的人力成本,而经过一年的过程改进,节约了开发成本300万人民币。

  联想在2001年过程改进的投入产出比为1.59,这个数字从经济上的角度,体现了过程改进的价值。

  (2)采用作图法表示过程

  作图法是描述一个过程的理想的方式,组织可以自己定义过程中使用的各个元素(如活动、工作产品等)的图标,然后再用这些图标来搭建过程。作图法直接减少了过程实施初期的培训费用。

  (3)过程改进网站

  在过程改进网站上共享组织的过程财富,组织的标准过程定义、项目的优秀文档、过程数据库等,都是需要在组织内部充分共享的财富。

  过程财富共享降低了过程改进的实施成本。

  (4)培训CMM讲师

  联想在CMM改进的过程中,培养了一批优秀的讲师,对于新规范的迅速实施以及新员工迅速的掌握规范起到关键作用。

  培训在整个CMM3实施中,大概占用1/3的成本。


  三、 总结


  本文用数学模型来分析过程改进过程中的问题,希望这样的模型有助于过程改进工作。这样的模型,有助于把握过程改进的本质,有助于让过程改进贡献更多的商业价值。




  参考文献:


  [1]MarkC.Paulk,etcSEI,《TheCapabilityMaturityModel》,Addison-Wesley,1994

  [2]WattsS.Humphrey,ManagingtheSoftwareprocess,Addison-Wesley.1989

  [3]VictorR.Basili1.etc,TheGoal/Question/Metric.

  http://sunset.usc.edu/classes/cs577b_2000/EC/11/EC-11.pdf

  [4]WilliamA.Florac,etc.MeasureingtheSoftwareProcess-StastisticalProcesscontrolforSoftwareProcessImprovement.Addison-Wesley.1999


  作者介绍:


  李建奇,联想软件设计中心SEPGLeader,email:lijqb@legend.com

  邵永博,联想软件设计中心DataAnalysisgroupLeader,email:shaoyb@legemd.com