【IT168 技术文章】
90年代中期,CMM开始传入中国。1999年清华鼎新成为首家通过CMM评估的国内企业,截止2006年底,中国通过CMMI正式评估的组织的数量仅次于美国和印度,位居全球第三。CMM在中国推广近10年以来,对于中国软件企业的发展起到了巨大的推动作用。但是,最近几年,CMMI在中国的推广却表现出了一些令人担忧的现象,社会上对于CMMI的评价日趋下滑。笔者试图透析企业通过评估后所表现出的种种怪现象,对中国软件过程的改进起一点警示作用,让这一好的过程改进模型在中国能够落地开花,实效常在。
怪相之一:证书摆桌面,体系放一边
2006年笔者曾经在某软件园进行调查,走访过8家通过了CMM评估的软件企业,发现有5家企业将CMM评估证书高高挂在墙上,做过程改进的人员却已不见踪影,基本放弃了该体系的执行。大概这5家企业原本就没有想到要真正去改进过程,只是因为政府对此有补助!
2000年国务院下发了8号文件《鼓励软件产业和集成电路发展的若干政策》,明确提出鼓励软件企业通过CMM评估。各地政府此后陆续出台了资助政策,软件企业通过评估后,可以从国家的不同部门比如信息产业厅、科技厅、外经贸委等拿到资助。很快就有软件企业为了享受表面上看去是“免费的质量成本”,怀着“政府出钱,我拿证书,不拿白不拿”的心态,突击通过了CMM的评估,于是便出现了"证书摆桌面,体系放一边"的现象。
其实企业失算了! 获得的政府资助资金往往大都支付给了咨询公司,而企业在通过评估的过程中需要编制体系文件,需要编制多个项目组的直接与间接证据,需要安排人员接受多次访谈,这些活动耗费了大量人力物力,工作量的成本一般会超出企业实际拿到的政府资助金额,一些弄虚作假还导致企业文化的沦丧。在这种意识下违背软件业客观的过程改进规律的行为,最终得到的只是一纸证书!弊,实际大于利!
怪相之二:证书拿到手,体系大调修
笔者曾经接触过2家企业,在通过CMM或CMMI评估后很短的时间内,就对过程体系进行了大幅度的裁剪,其中一家公司的负责人讲:“原来定的体系太繁琐,为了通过评估,我们忍了,现在必须裁剪!”
这是对CMMI的误解!
在CMMI的各种构件中,只有目标是必需的,实践是期望的,子实践是解释说明的。所以首先要满足模型里每个目标的要求,目标的达成是根据实践的执行情况来判断的,模型里给出的实践是可以替换的。只要能达成目标,采用什么实践都是可以的。
CMMI采用SCAMPI评估方法,SCAMPI评估方法要求主任评估师必须具有10年以上的软件工程经验,评估组的成员必须平均具有6年以上工程经验,评估组累计不少于25年工程经验,每个生命周期阶段要有2个人具有实践经验,至少一个成员要有6年以上的管理经验,评估组累计要有10年以上管理经验。这些要求其实是为了更好的进行专家判断,避免“机械照搬”。
CMMI要求企业要建立裁剪指南,在实践中,裁剪指南往往比体系本身更重要。僵化的体系是不可能真正在组织里推行下去的,要保持体系的灵活与敏捷,就必须定义详细的、实际的裁剪指南,并在实践中逐步完善。
过程的简与繁都可能达到模型的要求,关键取决于起草体系的人员对模型的理解。企业在开始导入CMMI时,一般是请咨询顾问介入,而目前国内的CMMI咨询公司、咨询顾问鱼龙混杂,客户往往依赖某些网站或协会之类所谓的独立组织根据网民投票所选出的“咨询公司排名榜”按图索骥。如果咨询顾问对模型的理解不深刻,自身的EPG成员又欠缺经验,或者咨询顾问参与的工作量很少,则难免怪相横生。
怪相之三:工期依然拖,缺陷照常多
某企业实施CMMI到一定阶段后,EPG抱怨领导意识有问题,对过程改进支持力度不够,而领导却说该授权的也授权了,该奖惩的也奖惩了,但是项目依然拖期,仍然存在质量问题,认为是EPG没有解决核心问题。
问题究竟出在什么地方呢?
过程改进的目的可以用四个字来概括:“多、快、好、省”:
多,即项目组能满足的客户需求越多越好,企业能承接的项目越多越好
快,即能够提高企业的估算能力、应变能力,使项目能够按期完工,减少拖期现象
好,即提高交付的产品质量,减少售后维护的工作量
省,即降低项目的开发成本,提高企业的赢利能力。
不同的企业在上述4个目的中的侧重点可能有所不同。过程改进时,一定要紧紧围绕企业的改进目标做工作,针对老板关注的问题、针对企业最薄弱的环节实施改进同时,找到病根,更要找到有效的解决方案,并坚决执行。解决方案应既包含对过程体系的修改措施,也包含推广措施。比如单元测试和代码走查是提高软件质量的有效措施,这已经在工程界得到了充分认可,但是在企业里推广时,往往会遇到开发人员的阻挠,开发人员会认为做单元测试与代码走查浪费了大量的时间,不如直接做黑盒的功能测试更简单,这就需要EPG成员采取各种各样的手段,努力使这些业内的非常好的实践变成企业的非常好的实践。这样才能事半功倍,快速见效,否则见不到实际效果,任何管理方法都不会长久,任何老板也不会持续投资。上面提到的EPG与老板的互相抱怨问题,很大程度上归因于此。
怪相之四:文档一篇篇,不见有人看
有一家企业已经通过了CMM 3级的评估,完成一个项目需要项目组填写接近90份文档,当笔者去做CMMI的差距分析时,发现在那些文档里有大量的显而易见的错误,而需要看这些文档的项目经理、QA人员及高层主管等多个角色中,却没有人发现错误,其实这些人根本就没有去看这些文档!呜呼,既然没有人看,何必写呢?
SCAMPI评估方法需要企业提供3种证据:直接证据、间接证据、人证。每条实践必须要有直接证据来覆盖,直接证据包括了产出的文档、使用的工具等等。由于直接证据是必须的,于是为了满足评估的需要,很多企业做了上百个的文档来满足模型的要求,其实这是不对的。模型是强调直接证据,但是并非文档越多越好,文档只是用来证明某个实践你做到了,只要达到了这个目的就可以了,而且一个文档可以满足多条实践的要求,可以作为多条实践的证据,这是最经济的做法。只要内容有了,也并非在乎文档的多少与格式。
在没有实施CMMI之前,项目组往往不写文档或者很少写文档,实施CMMI之后,写的文档又可能太多,这是两个极端,需要平衡。
怪相之五:流程很优秀,效果鲜见有
有一家软件外包公司,CMMI3级,流程定义得很简洁、实用,企业的执行力也很强,但是项目的实际效果却不好,为什么呢?笔者仔细审查项目组的需求、设计、测试用例、源代码等文档,发现需求的描述有遗漏、有错误设计文档没有满足基本的设计原则测试用例不完备、覆盖率比较低源代码中需要重构的地方比比皆是。再问一个为什么?发现项目组成员比较年轻,工程经验大都少于2年,尽管企业也进行了需求工程、设计模式等的技术培训,但是经验不是靠培训能解决的。因此,即使有好的流程,仍然没有开发出好的软件系统!
另外一家软件公司,没有通过CMMI的评估,公司内有3个部门,其中一个部门积累了一个基于.net的可复用的MIS软件框架,该框架已经在由少数的精英开发了4年,积累了4年,发布了多个版本。实现一个新需求时,只要定制界面,编写存储过程就可以了。当一个新员工进入该部门后,基于该框架,大概花费1周的时间就可以编写出能够交付给客户执行的代码,该部门的开发效率很高。对于该企业来讲,引入CMMI并非当务之急,打破部门之间的壁垒,将该软件框架推广到其他2个部门,可能投入产出比更高。
人、过程、技术三者都不可偏废! 企业要分析在人、技术与过程中,哪个因素是企业的瓶颈问题,优先解决瓶颈问题才能事半功倍,最大限度的提高生产效率。企业只有拥有了具有一定技能的人员与成熟的技术,软件过程才能最大程度的发挥其作用,软件过程才是实现人员与技术集成的主线,才能真正让过程效益最大化。
怪相之六:大家要业绩,快速过五级
很多企业在通过了CMMI3级的正式评估后,急于通过CMMI的5级评估。为什么呢?一是企业可在市场竞争中可提高资质,战胜对手,多多拿单二是政府可提供巨资资助,证明政府有业绩三是咨询公司可对外宣传自己评估了几家高成熟度的组织,以增强客户对自己的信任。几种因素综合在一起,企业就不由自主地加快了向高成熟度组织的迈进。
据不完全统计,在中国,2006年一年内通过CMMI 5级评估的软件公司超过了10家。也很不幸,在中国进行CMMI 5级评估的主任评估师有的受到了SEI的处分。自2007年始,SEI开始对CMMI高成熟度组织的评估师进行了重新考试,并非所有的主任评估师都可以做4-5级的正式评估,在全球SEI加大了对4-5级评估的审计工作,尤其是对东方的软件大国。
在实施4-5级之前,需要慎重的考虑:你真的需要通过CMMI 4、5级的评估吗?
CMMI的4级强调的是过程稳定性与项目量化管理,5级强调的是根本原因分析与持续改进。对于很多企业来讲,可能在CMMI3级时,就已经做到了在项目组内定义量化的质量目标,并实现了该量化目标,因此在3级时可能就已经部分做到了4级的要求。比如有的外包企业在3级时就做到交付软件的缺陷密度低于0.3个/KLOC,比SEI统计的通过CMM 5级评估的企业的平均质量还要好。客户的水平决定了供应商的水平,对于客户要求高、生产高可靠性软件的公司通过CMMI4-5级的评估是很有必要的,否则,真正达到了CMMI 3级的水平足以满足一般的客户需求。
在实施4-5级时,还需要慎重的考虑:你真能在短时间内证明过程的稳定性和量化的持续改进吗?
按照统计学的要求,一般需要25个样本点才可以证明过程的稳定,而且这些样本点必须在5M1E等因素上是相近的,而软件企业的人员变动、技术方法升级等变化比较频繁,即使采集8个样本点,对于大多数软件企业讲,也需要相当长的时间周期。根据SEI的报告,自1992年以来,从等级1到等级2的达到时间的中间值为19个月,从2级到3级的中间值为19个月,从3级到4级的中间值为24个月,从4级到5级的中间值为13个月。