基于CMM的软件过程改进已经被越来越多中国的软件企业所接受,目前,在中国已经掀起了一个CMM评估的小高潮, 但是,通过评估不是企业的最终目的,对软件企业而言其根本的利益是通过实施软件过程改进,提高企业的管理水平。CMM作为美国军方评价软件过程能力的一个模型,他是在研究了美国的一些较大的管理基础较好的软件企业提出来,针对中国软件企业的实际需要灵活裁剪,而且,在CMM中也没有告诉企业如何按照此标准进行企业的过程改善。笔者从98起开始主持一个企业的软件过程改善项目,在这3年的时间里,积累了大量的经验教训,现概括出6条策略,供正在或准备实施CMM的软件企业参考。
策略一:自低向上,主动改进
在进行软件过程改善的时候,通常有两种做法,我称之为自顶下与自低向上。在自顶向下的做法中,企业成立一个推进小组,一般称为SEPG(软件工程过程组),他们是企业里"开发方法"制定的组织者。SEPG组织一些开发人员成立各种任务小组,由这些任务小组根据进行过程改善参照的标准编写各种各样的企业的标准与规范,经过一系列的评审、培训,然后让开发人员去执行。在执行过程中最常见的阻力是来自于开发人员,他们往往会抱怨制定的企业开发规范不符合企业的实际情况,标准太高,无法达到。 这一种做法,费时费力不讨好,大家的意见都比较大,标准定的比较完美,而且在评审时还要大家表面上都要认可,制定标准的人花费了很大的精力,对标准的评审浪费了大家的很多的时间,执行时还难以贯彻下去。这种方式98年、99年上半年我在企业里采用过,收效甚微。后来我们降低了要求,抛弃了各种标准与规范,采用了一种简单易行的策略,自低向上的办法,即由SEPG找开发人员、项目经理让他们自我发现问题:你有什么缺点?你将如何改进?好,在开发人员、项目管理人员讲自己的改进措施后,让他们确保能做到。在这种办法中,不需要管理人员花费太多的精力进行标准的制定,改进的推动,这些工作都是由开发人员自己去做的,管理人员仅仅是起到了监督的作用,只要开发人员自己说到做到就可以了。再做下一个项目时,管理人员同样会问这2个问题:你有什么缺点?你将如何改进?然后管理人员监督开发人员说到做到。在这个过程中逐步完善形成标准与规范。
在上面的两中方法中,我们可以从几个方面进行比较:
当然采用第2种方法时,你一定要目标明确,你是要改进过程,而不是为了在短时间内通过评估。
策略二:循序渐进,由易到难,由粗到细,由松到严
CMM的一个核心思想是分级改进,在CMM模型中将软件企业的过程能力分成了5级,有很多企业很可能违背了分级改进的思想,搞了一场革命,期望短时间内提高管理水平,那显然是不现实的,我们要需要的是改良而不是革命。分级改进实际上就是要循序渐进,你能一步做到2级吗?不可能的,对于2级的每个KPA,可能你先实现了每个KPA的一部分活动,稳定了,再实施另外一部分活动,如果你现在1级,想一下子将2级的所有的KPA的所有活动都满足是不现实的。在实施CMM的过程中一定要根据企业的实际情况量力而行,千万不要期望值太高,要一步一步来。先定出最基本的改进方案,然后逐步提高,要把握分级改进的思想。
要做到循序渐进,首先要对企业现状有一个明确清醒的认识,在分析现状时,下面的四个问题是必须要解答的:
当前我们存在哪些问题(当然,问题可能很多)?
哪些问题是我们迫切需要解决的?
哪些问题是我们目前能够解决的?
哪些问题是我们当前无法解决,需要打好基础后才可以解决的?
接下来要对照标准,提出解决方案。按照"力所能及,有所提?quot;的原则对问题排出优先级。
以SPP、SPTO这2个KPA来说,你可能可以采取5次循环达到CMM2级的要求:
第一次循环:从无到有,使项目组成员熟悉做计划的过程,熟悉项目计划跟踪的重要性。
第一步:要求每个项目组都要用PROJECT 2000做项目计划,该项目计划要满足一定的条件,如:
任务的颗粒度不能太大;
任务负载要均衡;
任务尽可能并行;
等等。
第二步:对每个项目组,按计划进度进行跟踪,在计划执行过程中及时发现问题,解决问题。
第三步:总结本次循环执行过程中存在的问题,如:
项目计划中任务识别不全;
计划的任务工作量估算不准;
在项目进行过程中,发现问题后采取措施不及时等等。
第二次循环:增加完整的生命周期模型定义
生命周期模型是项目管理的管理的主线,定义一个好的生命周期是推行CMM2级的一个最关键的基础工作。
第一步:要求每个项目组首先要定义出自己的生命周期模型,做出项目计划模版
第二步:要求每个项目组按照项目计划模版进行做项目计划
第三步:进行项目计划跟踪
第三次循环:增加规模、工作量等的度量
第一步:要对项目的规模、工作量进行正式的估计
第二步:按计划摸版做项目计划
第三步:进行项目计划跟踪
第四次循环:增加风险分析
项目的风险管理对于国内的软件公司而言,一般都是一个难点,可能风险很多,风险可以预见,但是没有很好的规避措施。所以建议将风险管理放在较后的循环中来改进。
第五次循环:体系化,制度化
开始时要求不要太严,对文档的要求要粗一些,要把握住实质而不是皮毛。