CMM软件工业化的大纲CMM(Capability Maturity Model For Software,软件能力成熟度模型)是美国卡内基梅隆大学软件工程研究所(CMU SEI)应美国联邦政府的要求开发的一种用于评价软件承包商能力并帮助其改善质量的方法。1991年,CMM1.0版本面世,1992年,他们又推出了CMM 1.1版本。CMM提供了一个评估软件开发过程的管理以及工程能力的标准,是目前国际上最流行、最实用的软件生产过程标准和软件企业成熟度认证标准。CMM标准共分为五个级别:初始级、可重复级、定义级、管理级和优化级,从低到高,标志着软件生产的计划度越来越高、生产周期越来越短、成本也越来越低。业内人士认为,“CMM既是软件企业走向国际市场的通行证,也是用来衡量类似期房的软件质量的保证书。”
除此之外,CMM还是一个软件生产工业化的产物与检验标准,是软件工程化的核心环节。“CMM为软件企业进入工业时代制定了一个大纲。”于是,一些以往就专注于提供软件工程开发解决方案的软件公司就以这个“大纲”为标准,帮助软件企业克服提升质量过程中的各种矛盾。瑞理(Rational,Nasdaq的100个指标股之一)软件就是这样一家提供软件工程化工具的公司,摩托罗拉网络研发中心从CMM4就开始使用它的软件。
在瑞理耳濡目染了许多软件工程化的理论,使瑞理中国公司的技术总监吴穹对CMM有着更深一步的认识。“它告诉企业怎么做软件工程,有哪些要求,如何检验,每个阶段的重点是什么、应该做什么。这个框架为软件工程化提供了一个循序渐进的模式,并不是将这个过程简化为一步――从0到1。”吴穹说。
软件企业实施CMM基本上都是从2级,即可重复级起步的。吴穹说:“二级已经不简单了。对一个软件企业来说,达到二级的要求就基本上进入了规模开发,开始跳出作坊式的开发模式,能把一个项目的经验或好的方法重现在下一个项目中,基本具备了一个现代化软件企业的基本架构和方法,具备了承接外包项目的能力。”从二级一直往上走,是不间断的改进过程。“效率不断在提高,时间控制更严格,品质更有保证,管理更有序。可以逐渐具备承接跨地区、跨部门的大型项目的实力。”根据SEI的统计,软件企业在引入CMM后劳动生产率平均增长了35%;错误比率平均减少39%;平均成本回报率为5:1。
CMM重构企业
在胡大庆的时间表上,1995年底才成立的摩托罗拉中国公司的网络研发中心,在实施CMM上三年内完成了三级跳:1998年内部评审,取得了等同CMM3级的水准;1999年底达到了第4级;2000年的12月通过了5级。
“但我们是从成立之日起就开始着手准备实施CMM的,算起来也有5年半的时间了。当初积极准备实施CMM是因为摩托罗拉的高层质量管理委员会在90年代中期制定了一个政策,明确规定所有从事软件研发与测试的部门都必须采用CMM,并在规定年限内达到三级或是更高的级别。这是一个研发政策。”摩托罗拉的这个全球研发政策无疑是其中国网络研发中心与软件中心达到CMM5的最大推动力。在实施CMM的整个过程中,胡大庆很重视研发中心步入CMM的起点――1998年做的内部评估。这次评估“让拿着地图的我们不但明确知道目的地是什么地方,而且还找到了自己究竟在什么位置。”在吴穹的眼中,侧重于软件生产过程的CMM的实施,被提升到软件企业重构的地位。摩托罗拉中国网络研发中心5年多来的CMM之路正佐证了他的这种看法。
胡大庆在清点5年多来的收获时,可谓颇丰。
“最根本的收获是每一个具体参与其中的员工,无论是项目经理,还是工程师,甚至一些高层管理人的做事方法逐渐变得标准化、规范化了。”以往,软件企业某些关键的开发人员离开后,往往会给企业造成很大的损失,甚至使一个项目前功尽弃。而在CMM框架中,运用2级中的一个基本软件工程(KPA)就可以使员工自觉而规范地管理软件生产过程中所有的资源、阶段性产品、产品源代码、文件以及最终生成的产品。“严格遵循这套管理方法,程序员写完一段代码,经过一定测试之后,一旦提交到某个公共地方时,这个东西就不是你的了,已经成为项目小组或者是整个企业的了。如果你想对它进行任何修改,都要按照规范的程序把它从公共区域提取出来。”规范的过程控制,将软件企业由于人员流动带来的风险降到了最低,同时还促使他们养成良好的职业素养。
受益者还有摩托罗拉研发中心的项目经理们。CMM可以有效地缩短项目组中新参加人员进入状态的时间。“过去,给新到项目组工作的同事解释流程、规矩很费劲。要是新加入的员工经过CMM的基本培训的话,进来以后,只要稍微澄清一下,他就能知道怎样按定义好的文件与流程来做事情。”项目经理还可以从CMM中获得一整套完整的体系,保证项目良性运转。在项目开始的时候,“他如果不知道项目该怎么做,我们参照CMM框架定义好的文件会规定他应该做什么。比如,有一些样本模式告诉他项目计划书怎么写,如何召开例行会议等。他只要按照定义文件执行就可以很快上手了。”这个体系无疑加速了资深工程师转向项目经理的速度。 在传统模式下,项目开发的某个阶段,尤其到最后阶段,项目经理会经常发现“成本控制不住了,或是时间来不及了。”这种情形下,项目经理就需要做危机管理,动用“救火队”,或是让客户宽限一些时间,或是游说客户加一些钱,否则就只好牺牲软件产品的质量了。“对于采纳了CMM的项目经理或者说比较成熟的企业来讲,这样的事情也会发生,但是它会是一种可控或者能预见到的。在做项目计划的阶段就事先把突发事件可能发生的情况,一旦发生时必须采取的措施都列出来。于是,传统的危机管理质变为可控的风险管理。”尽管项目经理从CMM实施中获益良多,但当初,“最大的阻力也来自于第一线的项目经理。”因为,实施CMM需要在一线打拼的项目经理放弃几年甚至是十几年形成的那套非常熟悉的套路,要完全按照一种新的规律做一些不熟悉的事情,不愿意肯定是当然的。“一方面要求我提高质量,另一方面又要求我做一些没做过的事,同时谁也没答应我可以延长工期,只有加大工作量了”。但一旦度过艰难的改变阶段,不断的获益使项目经理由CMM实施的阻力变成了推力。
最大的获益者无疑是摩托罗拉中国的网络研发中心。通过实施CMM,他们的企业文化发生了明显的变化。胡大庆说:“CMM整个实施过程也是一种积累,为我们积累了很多有形和无形的资产。”这种积累甚至小到一个会议该如何开。“以前,我们经常会有一些清谈清议的会。大家没什么准备就来开会,说了半天,有些人不关心;即使发表了不少意见,也没有形成任何结论。”现在,他们的会议是这样开的:会议之前要做充分的准备,让参与会议的人知道要谈的议题,每个相关的人甚至要看到发言的主要内容。如果对议题或发言有什么意见可能在会前就有所反馈。同时,会议一定要有人做记录,所有议论和结论都要记下来。会议在结束之前一定要明确这个会议的决议是什么,有哪几项工作必须做,由谁来做,在什么时候做完。会后要将记录发给大家,还有人专门进行检查;下一次会上的第一个议程,就是总结上一次会议决议的执行情况。
胡大庆认为“这种一点一点积累起来的习惯性的概念、做事方法非常重要。”没有最好只有更好国内有一个刚刚通过CMM2的软件企业为之花费了400万元人民币。面对这样一个数字,胡大庆说:“我们没有一个具体的数字,但我们所投入的费用肯定比400万元要多。”无法确切统计投入,是因为CMM的实施是一个没有终点与止境的过程,即使通过认证,仍需要长年将CMM体系的实践与软件开发融为一体。由于CMM只提供一个持续改善软件生产质量与过程的框架,并没有制定出具体的方法,因此,就要求实施CMM的企业要在实践中不断发现问题,定义文件与流程,在否定自我中持续优化自身。CMM并没有为实施者界定一个最好的境界,它将不断地追求更好定义为常态。
CMM认证不是终身的,“按照官方的说法它的有效期一般是两年。”在摩托罗拉公司内就有在通过较高的级别后,重新再做评估时掉到了较低级别的先例。“CMM5级是优化级,之所以称之为优化级不是因为它比4级更高,它强调的是一个持续不断的优化过程。如果你在某一个阶段停顿下来,那么不进则退,你就有可能会掉下去。”摩托罗拉曾有一位资深人士告诫胡大庆:“你们现在面临的困难不是说能够在什么时候拿到CMM4级或5级,而是怎么来保持。”
为了保持在CMM5上,摩托罗拉中国网络研发中心以年度来规划,每年都会对上一年的CMM做一次评估。“评估结果会告诉我们哪些地方做得好,哪些做得还不够。根据这个结果,我们再制定下一年度改善的规划。这个规划要做得非常具体,包括今年的大目标是什么;在这个目标下要做10件或20件事;这些事由谁负责,什么时候做完。规划制定完以后,就由我们的软件工程定义组(SEPG)来推进,并通过会议制度定期检查这些事情究竟做得怎么样。”胡大庆认为,在不断优化自身的过程中,“建立一套机制很关键。”机制保障之一来自他们内部的CMM推进核心组织――SEPG,它的成员包括研发中心的主要负责人、中层项目经理、骨干工程师以及专门从事质量确保定义工作的员工。这个组有10个人(整个研发中心一共有300名员工),他们的职责不是从事一般的软件编程,而是专门来负责定义文件,进一步改善日常工作。
培训是另一个保障机制。“CMM要求全员参加培训。目前员工的培训率达到90%以上。包括秘书在内都要参加CMM的培训。”此外,胡大庆觉得,好工具的引入可以“避免人工犯错的机会”。这样的工具大多是控制软件生命周期的软件。“到了CMM4或更高阶段,很多东西都基于统计分析的结果。比如,每个项目经理在分配一个月的工程量的时候,就不能拍脑袋凭经验安排。他需要借助专门的软件工具,登记员工每天的工作量,最终通过统计报表直接产生出科学的工作量安排。”
吴穹称,自己从这些软件工具中获益匪浅。“在我读研究生的时候,我曾经用瑞理开发的面向对象分析设计工具做过一个项目。在开始编码前,我们用它搭建出了项目的整体架构,尽管前期用于做分析、设计的时间有4个月,但用在编码上的时间仅有两周。这个工具改变了我以前边想边干的编程方法,让我在施工前就有了一张完整的施工图。施工时,什么样的砖码在什么地方很清楚。”超越认证的制约经常可以在CMM前看到“通过”、“认证”等动词。瑞理中国区销售总监左允京认为冠在CMM身上的这些动词都不准确。在他看来,应给CMM这样一个限定――“实施软件工程,达到CMM标准。”他说:“单纯强调CMM认证,如果没有积累的话,大概两三年之后,就有可能软件企业墙上到处都贴着CMM的认证证书,而CMM却像前几年的ISO9000一样有名无实。那样就是CMM的悲哀了。”要想避免这种局面出现,就要超越为了认证而认证。
摆脱认证的制约,成为胡大庆总结成功经验中最重要的一点。“在实施CMM前,软件企业一定要讨论清楚是不是要采用CMM。讨论的基础就是,要将CMM与企业的最终利益、发展目标统一起来。如果把追求通过认证作为第一目标,那么,CMM对企业的改善是不可持续的。而在实施中首先要想企业最大的问题在哪,如果CMM可以帮我解决问题,然后再决定实施CMM。”第二个便是企业领导层的认识和决心。“我们之所以成功,就是因为我们历任的总监都非常重视CMM的持续实施。”这样的认识与决心,在CMM的实施影响到了企业暂时利益的时候尤其重要。通常,新工具的实施都是一个趋势:会在初始阶段出现负效果。这个时候要是没有充分的信心坚持下去,那就会半途而废或者新工具被折中为“四不像”。
摩托罗拉中国公司网络研发中心在由CMM3向CMM4提升的时候就出现过负增长。“在那一个阶段投入大了,因为4级要求强化管理,这非常难做,需要开发很多工具,要求大家在质量上花更多的时间,对一个软件企业而言,时间就是成本。”在“反复”面前,摩托罗拉研发中心的领导层表现出了很强的“抗冲击力”。
今年4月刚刚通过CMM2认证的西安博通公司的总经理李台元觉得,CMM带来最大的改变就是把隐性管理变为了显性管理。这将CMM背后强大管理需求推到了前台。在实施CMM过程中简化管理是许多企业的软肋。其中,最突出的就是缺少技术管理人员。“好的项目经理太少了。”我国大多数技术管理人员走的是一条“技术优则仕”的道路。在编码面前得心应手的程序员未必能成为优秀的管理人员。管理人才的匮乏,成为走在CMM这条没有终点的路上的软件企业难以逾越的路障。