本世纪初,CMMI被引入到中国。不过十年的时间,中国就稳坐CMMI评估数量榜头把交椅。2017年超过一半的CMMI评估都来自中国,再加上中国军工软件企业遵循的5000A标准也是参考CMMI制定的,所以说CMMI极大影响了中国民品和军品软件开发模式是一点不夸张。
很多业内的朋友聊起CMMI历史都能娓娓的来上一段,但我还是想系统的捋一下其来龙去脉。
1984年5月,美国国防部(department of defense,简称DoD)向美国高校发出了一个竞争性的招标书(RFP – request for proposal),要选一个高校建立一个联邦政府资助的研究开发中心(FFRDC – federally funded research and development center),他们连中心的名字都想好了:软件工程研究院 (Software Engineering Institute,它的缩写SEI在中国IT界是家喻户晓)。最初五年的预算是一亿美金,给其赋予了一下使命:
The Software Engineering Institute (SEI) shall provide this: bring the ablest professional minds and the most effective technology to bear on rapid improvement of thequality of operational software in mission-critical computer systems. The Institute shall accelerate the reduction to practice modern software engineering technologies and methods and shall promulgate use of modern technologies and methods to help the mission-critical systems. The Institute shall establish standards of excellence for software engineering practice.
通俗的解释一下吧,研究院需要建立一个牛人团队,加快新技术和新方法的研究使用,以改进执行关键任务的软件的质量,并建立一个软件工程优秀实践的标准。也就是说,DoD需要借助社会的力量解决让它头疼不已的问题:如何保证软件供应商能够在预算内,按进度计划,开发出高质量软件。
美国七个高校投了标,经过半年的筛选,位于匹兹堡的卡内基梅隆大学(CMU – Carnegie Mellon University)中标。当时CMU的教务长Angel Jordan教授领导了整个投标工作,三十年后他给出了CMU获胜的原因:除了一个无懈可击的方案外,他们建议的SEI核心团队还包括了CMU之外工业界、政府和其它高校的知名精英,其负责人是后来任CMU第一任计算机学院院长的Nico Habermann教授(1993年去世)。
享誉全球的SEI
这里要给SEI正名一下,CMM和CMMI是SEI前期最重要的研究成果,但并不是唯一。SEI支持的软件工程研究覆盖许多领域:如软件架构、软件产品线、新的软件开发方法、互联网安全等几十个领域。DoD给SEI第一个五年预算是1亿美金,第二个五年预算就增加到了一点五亿美金。2011年SEI的五年预算已经是5.84亿美金。这是除了MIT的林肯实验室之外,DoD在高校建立的最成功的研究中心。
1984年12月SEI开始挂牌开张,第一任院长是退休的美军空军中校John Manley博士,这位仁兄在面对SEI的高校、政府和工业界各种文化的整合时是一头雾水,所以只干了一年就撂了挑子。但Manley博士做最正确的一件事是邀请到了从IBM退休的Watts Humphrey来领导SEI的软件过程改进的研究,从而奠定了SEI成功的基础。
2016年去世的SEI第一任院长Manley博士
Humphrey1986年走马上任,他首先面临的任务是是建立一个能够让DoD客观评价软件供应商能力的方法。Humphrey决定开发一个软件过程成熟度架构,其基本依据是一个简单理念:软件产品质量在很大程度上是由其开发和维护过程决定的,软件CMM(Software Capability Maturity Model)的雏形开始形成。
CMMI之父Watts Humphrey
软件CMM借鉴了TQM(totalquality management)的原则,其在制造过程,服务过程以及工程设计过程的成功经验给Humphrey和他的团队提供了一个良好起点。软件过程也可以看作是一个活动、方法、实践的集合,通过使用这些活动、方法及实践,我们可以开发并维护软件产品。随着组织的成熟,软件过程会不断完善并在组织内部得到普遍贯彻执行,其结果是软件产品质量的提升,开发效率的提升,不必要返工的减少,以及更加有效的项目计划及管理。这也和著名的Deming连锁反应有异曲同工之妙。
著名的Deming连锁反应
如果你读过Philip Crosby1979年发表的“Quality is free”的文章的话,应该可以在CMM以及后来的CMMI中看到Crosby描述的质量管理成熟度表(quality managementmaturity grid)的影子。
Crosby把质量管理的发展分为五个阶段:不确定(uncertainty),觉醒(awakening),启蒙(enlightenment),智慧(wisdom)和确定(certainty)。CMM(CMMI)的五个级别和Crosby的五个阶段有那么点异曲同工之妙。
质量大师Philip Crosby
软件CMM模型的另一个重要来源是Ron Radice及其团队在IBM的一些有效实践,Radice是Humphrey在IBM时的下属,后来追随Humphrey来到SEI。他整理了覆盖软件开发生命周期的12个过程阶段以及11个包含过程,方法,实践,工具,变更控制,数据收集及使用,质量控制等的属性。这些都被用来定义CMM模型。
今天的Ron Radice,当年Humphrey的左膀右臂
经过一年多的努力,Humphrey于1987年发表了具有五个能力级别的软件CMM模型框架,为软件组织提升其开发能力展示了一个路径图。这五个级别被称为:一级——初始级(initial level);二级——重复级(repeatable level);三级——定义级(defined level);四级——管理级(managed level);五级——优化级(optimizinglevel)。每个级别代表的核心能力和今天的CMMI 1.3没有什么区别。
同时Humphrey和他的团队也建立了两个软件过程的评估方法,一个是以访谈为主的软件过程评估方法(software process assessment - SPA),一个是用户用来选供应商的软件能力评估方法(software capability evaluation - SCE)。前者演变成今天的以内部改进为目的的SCAMPI方法,后者则演变成以供应商选择为目的的SAMPI方法。如果你参加过评估访谈,应该记得每次访谈结束时的一个问题“除了老板和个人工资不能改你可以改组织的任何一件事,你会改什么?”这个问题是当年Humphrey和他的同事建议的问题,原问题如下:
“If therewas one thing you could change about your organization, other than your boss orpaycheck, what would it be?”
1989年,Humphrey发表了他一生最重要的著作:管理软件过程(Managing the Software Process)。这本书很快风靡了美国软件世界,极大推动了软件过程改进活动,为CMM的发布及成功撒下了种子。
Humphrey最重要的著作
1990年6月,SEI发布了CMM v0.2版,每个成熟度级别由相应的关键过程域(key process area)组成。一年后,根据0.2版的试用反馈,SEI发布了CMM v0.6版。1991年8月,SEI正式发布了CMMI v1.0版。之后不久,CMM 3级成了拿DoD项目的必要条件。很快印度的软件外包公司,用CMM证书证明自己的接单能力,为软件外包成为当今印度IT的支柱产业做出了很大贡献。
当年流行的CMM实施指南
就在CMM v1.0发布前夕,Humphrey辞去了SEI过程改进研究负责人的工作,他选择了Bill Curtis作为自己的接班人,可能有些读者仅知道他是People CMM的作者。
Humphrey指定的接班人,P-CMM的作者Bill Curtis
由于软件本身的特点,变化是常态,CMM模型也不例外。1993年SEI发布了改进的CMM v1.1版本,原来只是计划做个小的升级,没想到几乎1.0中的所有实践都有些变化。
从1996年开始,SEI就着手CMM 2.0的升级。按计划2.0会在1997年底发布,可惜计划赶不上变化,DoD一纸命令叫停了2.0的发布,DoD要求SEI开发出CMM的替代模型:CMMI(Capability Maturity ModelIntegration)模型,将CMM从软件扩大到系统,覆盖各类产品开发。
CMMI主要来自三个模型:软件CMM2.0 (草案稿),EIA 731 SECM (代表系统工程)和Integrated Product Development CMM。CMMI引入了Stage表示形式以及Continuous表示形式,前者来自CMM,后者来自EIA 731.
2000年,SEI发布了CMMI v1.02版。正式让大家使用的1.1版于2002年发布,SEI从2005年开始接受CMMI的评估结果,CMM模型到2005年底则彻底完成了它的历史使命。
2006年,SEI发布了CMMI v1.2版本。之后从2007年到2010年,SEI强化了CMMI高成熟度的评估审核,并设置了高成熟度主任评估师。
2010年,SEI发布了CMMI v1.3,对四级、五级内容做了一些完善,并同时发布了开发、服务和采购三个模型。
CMMI v1.3开发模型
2013年一月起,所有和CMMI相关的产品、服务完全从SEI转到了一个新的机构,CMMI研究院(CMMI Institute),它的邮箱地址从sei.cmu.edu变成了cmmiinstitute.com。从EDU(教育机构)到COM(商业机构)的变化是巨大的,和DoD的分道扬镳也会有些负面影响,但我们要有信心的是,从Humphrey等前辈建立起来的CMMI体系在新一代中也会发扬光大。
近10年来,以敏捷和精益等为代表的新的开发模式对CMMI产生了巨大的冲击,从2008年起,SEI和CMMI研究院开始致力于敏捷和CMMI的结合。 CMMI v1.3版本也有不少急需改进的东西,经过CMMI社区几年的努力,CMMI 2.0版本将于今年春天发布。CMMI 2.0的内容和Humphrey三十年前的模型有了巨大变化。但基本理念从未变过: 改进的价值是通过商业价值体现的,基于CMMI的改进必须是价值驱动的!
作为个人CMMI历史回顾,下面是我在中国做的CMMI不同版本的第一个评估 (可惜不记得自己做的第一个软件CMM评估了):
CMMI V1.1:
第一个评估:上海九龙信息技术有限公司 2005年1月)
第一个高成熟度评估:华为IT部门 (2005年6月)
CMMI V1.2:
第一个评估/第一个高成熟度评估:方正电子 (2007年11月)
CMMI V1.3:
第一个评估:大连NTT (2011年10月)
第一个高成熟度评估:浙江鸿程 (2011年12月)
CMMI V2.0:
试点评估:招行信息技术部(2017年11月)
推荐阅读
1. 减少软件缺陷的十大经典结论
2. 列车飞驰,键盘狂敲