差距与不足
目前,国内企业实施CMM激励条件的外部因素大于内部因素,企业的起步目标就是CMM2级,一旦进入IDEAL模型,却发现企业面临巨大的工作量,加上缺乏这方面的专门人才和非常薄弱的过程管理基础,使企业面临进退两难的境地。而国外一些企业注重过程管理的改进已经有10年、20年的历史了,其CMM激励条件的内部因素较大,企业通常是根据自己的实际需求不断地改进过程管理。
当然,一开始就把目标定为CMM2级并没有什么错误,但面临一种文化改变时,应该从何做起?与国外企业相比,国内软件企业在基本软件工程上存在一定的差距,通过CMM实施可以不断改进,但也势必会使CMM实施的工作量成倍增加。那么,国内企业基本软件工程的差距何在?如果仔细分析,我们不难发现,国内软件企业的基本软件工程存在的问题主要体现在以下方面:
缺乏较好的文档编制规范和模板定义;
缺乏较好的设计和编程规范以及较好的模板定义;
缺乏较好的基线控制;
缺乏较好的工作产品转化规范;
缺乏较好的版本管理。
以上工作除工作产品模板定义和工作产品转化具有较强的技术特性之外,其他都属于基本软件工程范畴。工作产品模板定义和工作产品转化的好坏是影响CMM2级实施工作量的主要因素,而工作量的大小将在很大程度上影响企业在实施过程中的信心。
实施样本
根据国内企业的实际情况,CMM实施可以考虑从基本的软件配置管理着手,以便在CMM实施过程的早期完善基本软件工程、工作产品模板定义和工作产品转化的规范。具体实施时可采用以下步骤:
选择一个较小的项目,仅把软件生命周期中的主要工作产品置于配置管理之下;
各工作产品开发小组尽可能采用背靠背方式完成该项目;
SCCB详细记录所有更改;
项目结束后,由项目经理主持,认真分析产生更改的根原因。
一般来说,主要的原因有以下几条:
需求规格说明书写得不好或不全;
工作产品模板定义得不好;
缺乏规范的工作产品转化定义。
改进的方法之一是采取如下步骤:首先研究编程语言的表示方式,然后确定上一级工作产品的表示方式(模板定义),同时研究并确定从这级工作产品到编程语言的转化规范,最后采用同样的方法一直倒推到需求规格说明书。
该项目的SCCB记录应该对以上改进提供大量较客观的原因供相关人员分析并确定需要改进的内容。项目完成后,企业应该在软件配置管理这个关键过程域方面建立了基础,同时需求管理也有了一个较好的基础。在此基础上开展项目计划、跟踪和质量保证工作将会使企业感到工作更为实在,同时,它也将提高实施人员的兴趣和信心。采用这种方法是为达到如下目的打基础:
为CMM的实施打下较好的工程基础;
减少CMM实施的工作量;
缩短实施CMM 2级的周期;
进一步提高软件产品的质量;
CMM实施是循序渐进的;
避免遭遇文化改变的明显冲突;
树立企业人员实施CMM的信心;
让企业看到每个阶段的成果;
CMM实施最终真正改进企业的过程管理。
如果这个项目实施得好,达到前4个目的是毫无问题的。第5个目标所讲的循序渐进并非指一个一个关键过程域的实施,事实上也做不到。
以较好地确定工作产品模板定义和完成工作产品转化规范为目的的软件配置管理事实上也涉及到CMM2级的其他关键过程域。在项目开始时,首先要制定项目计划,项目实施过程中还要进行项目跟踪、监督和质量保证工作。项目结束后,对需求规格说明书模板进行改进,为需求管理打下基础。就这个项目,不应该对这些关键过程域按CMM进行全面地管理,否则过程的改进不仅将失去阶段重点,而且也消化不了。第6个目的是避免遭遇文化改变的冲突,如果把工作限制在一个小范围进行,而且又不明显改变原来的做事方式,就可避免文化明显改变的冲突。当项目结束后,通过总结分析,大家认可改进的内容,就可以使做事方式和文化的改变进行得比较自然。通过成功地实施该项目,企业里的两部分人将对实施CMM树立信心:其一是参与该项目的人员;其二是管理层人员。
曾经有多位国内软件企业负责人问我:“你如何能在最短的时间里让我们拿到CMM 2级证书?”对此我是无言以对。其实,单纯追求通过CMM评估不应该是企业的终极目标,改进企业的软件过程管理才是企业真正应该追求的。