软件过程改进及其基础构建——我们在空中楼阁中舞蹈
所谓的“软件过程改进”,应当按照在一个循序渐进和有序的过程进行,当初SEI制定CMM的应用对象都是非常大型的航天和军工软件的承包商,这些企业 基本都具有相当的规模和良好的规范化基础。显然,对这样的企业实施基于CMM/CMMI的软件过程改进是有意义的。反之,如果是一个完全缺乏规范管理的软 件公司来说,连基本的软件工程规范和质量理念都不存在,盲目追求所谓CMM的某个级别只能是空中楼阁。
不幸的是,这种完全管理无序的公司在国内实施CMM/CMMI的企业中还不是少数,显然,这也并不是SEI当初制定CMM所考虑的范畴。
对于这样的企业,首先应该进行的并不是去运行什么基于CMM/CMMI的软件过程,而是扎实的完成软件过程的基础构建(这也是过程跃迁的一个重要组成 部分),甚至非常有必要在实施CMM/CMMI前在企业内部引入PSP/TSP,然后在循序渐进的进行有针对性的软件过程改进。
然而,非常遗憾的是,本人看到不少这样的企业在短短不到一年的时间里就能通过所谓的CMM或CMMI三级(现在,国内企业对二级大多已经觉得不过瘾 了,往往一上来就直接上三级)评审,效果如何可想而知。实际上这只不过是一场由咨询公司导演,软件企业主演的“评审”秀而已。
CMM/CMMI中有一个最为核心的思想就是:只有好的过程才能导致好的结果,上述的现象倒是该思想的一个非常好的反面实例。
好的过程=好的软件?——瞎子摸象故事的现代软件工程版演绎
CMM/CMMI最原始的出发点是重过程管理而轻工程方法,这对于最初的CMM应用对象--美国军方软件的承包商或许是有其合理性的,但是对于其他众 多的软件企业,由其是国内的软件企业就并不是那么的合理了,个人认为国内的软件的特点是规模有限,业务领域较广,技术周期较短,软件工程基础较差,对于这 样的企业,有效的工程方法往往比有效的软件过程更能让企业获得即时的效果。
软件开发管理是一个非常复杂的系统工程,其涉及到企业技术和管理的方方面面,而且其各个因素又是相互关联和制约的,不均衡的过分强调其中的某一个或某几个方面都是不科学的,也是难以取得良好效果的。
CMM实施——削足适履的痛苦旅程
CMM/CMMI的初期培训往往是最令人愉快的,参与者们在了解了大量以前没接触过的知识后往往对CMM燃起了高昂的热情,但是随着进入过程定义和项 目的试运行就会渐渐发现身陷没完没了的文档编写和无休无止的各种会议,加班成了家常便饭。这时候,早先的热情早已荡然无存,而早先咨询公司宣称的能为企业 带来无比效益的“先进过程”也成为了一件非常不合尺寸的紧身衣.....等咬紧牙关捱到了预评估,结果往往是当头一棒——和要求相距甚远,而正式评估的日 子又已经迫在眉睫,怎么办?于是乎大家发挥国人的应试特长,将CMM正式评审变为一场期末考试,这时候,咨询公司往往扮演"枪手"的角色,将评估中可能遇 到的问题及其答案罗列出来,而软件公司中的相关人员则将这些答案牢记于心。最后,在通过一场大家心照不宣的所谓“评估”,终于大功告成。
CMM评审——对皇帝新衣的自我陶醉
在上海某个高科技园区,有一个软件公司的外墙上高高的悬挂着一块牌子——"CMM5级企业",这在专业人士看来恰恰是对CMM本质的曲解,非常遗憾这种曲解竟然是发生在一个通过5级评审的企业。
SEI在他的网站上明确声明:The SEI does not "certify" organizations. 即SEI不对任何组织进行"认证",它仅仅通过获得其授权的评估师们对企业的过程能力进行"Appraisal(评审)"
CMM本身只是一个可以被用来评估企业能力成熟度的过程框架,而并不是什么“标准”,CMM的重点在于软件过程的改进而不在于什么“评审”,至于所谓的“认证”那更是扯不上边的事情。
所以当我们舍本求末,将CMM作为一块可以证明其高贵身份的金字招牌到处炫耀时,令我们不由得联想起安徒生笔下的那个酷爱新衣的光屁股的皇帝
结论
CMM/CMMI本身是一套非常有价值的过程模型,但简单的将其图腾化却是整个中国软件行业的悲哀,反观CMM/CMMI的发源地——美国,除了和军方 有业务往来的软件企业会寻求通过CMM/CMMI评审外,其他多数的企业并不怎么在乎是通过了CMM/CMMI的三级还是四级,象是著名的微软、甲骨文等 知名企业都没听说过和CMM/CMMI沾过边,但这也丝毫不影响以他们为代表的美国软件企业在整个行业中独领风骚。
所以,我们认为,只有有效的而不是最权威的,才是最好的。