1986年11月,美国联邦政府委托卡内基梅隆大学(Carnegie-Mellon)软件工程研究所(SEI)开发一套用于评估软件承包商能力的方法。SEI于1987年9月发布了一套软件过程成熟度框架和一套成熟度问卷。1991年,SEI将软件过程成熟度框架发展成为软件能力成熟度模型(Capacity Maturity Model,CMM),诞生了CMM 1.0。1993年,SEI推出了CMM 1.1,这是目前世界上应用最广泛的CMM版本。
十几年来,CMM的改进工作一直不断地进行。美国国防部希望把现在所有的、以及将被开发出来的各种能力成熟度模型,集成到一个框架中去。到2000年,CMM演化成为CMMI(Capability Maturity Model Integration,能力成熟度模型集成)。CMMI不仅适合软件,而且适合于软件硬件结合的系统,这是对CMM最大的改进。
从20世纪90年代至今,软件过程改进成为软件工程学科的一个主流研究方向,其中CMM和CMMI是该领域举世瞩目的重大成果。CMM/CMMI是世界范围内用于衡量软件(硬件)过程能力的事实上的标准,同时也是软件(硬件)过程改进最权威的指南。
CMM将能力成熟度分为5个级别,这5个成熟度等级为评价机构软件过程能力提供了一个有序的级别,如图1-2所示。同时也为机构的软件过程改进工作指明了方向,让人们分清轻重缓急,指导人们一步一步地改进过程能力而不是企图跳跃式地前进。
图1-2 CMM的5个能力成熟度等级
人们往往搞不清楚CMM和软件过程改进的关系,将二者混为一谈。下面作个比喻来解释:
把“软件过程改进”比喻为“学英语,提高英语能力”,那么CMM就好比是“英语等级评估标准(考试大纲)”。一般情况下,英语等级考试的成绩反映了英语能力。但是,在特别擅长应试的中国,英语考试成绩很好并不见得英语能力很好,甚至可能差到“哑巴英语”的程度。这种“特性”传染到软件领域,不少企业虽然通过了高级别的CMM等级评估,但是其实际能力却非常低下。
软件过程改进的真正目的是提高机构的软件过程能力,而不是为了达到CMM高等级。“汝果欲写诗,功夫在诗外”,这是很好的启示。
2000年至2003年,我在上海贝尔有限公司负责CMM/CMMI的研究和推广工作,公司的每个事业部都有软件(硬件)过程改进人员。公司在CMM/CMMI过程改进方面的投入巨大,取得一些成效,但是没有达到我的期望值。感慨很多,一言难尽。此处,我对CMM/CMMI过程改进做个简要的评论,供同行企业参考。