CMMI在中国
本文以作者进行CMM/CMMI多年研究和实践的工作经验为基础,介绍了CMM的历史及在中国的发展现状。还介绍了CMMI在世界范围内的发展和中国基于CMMI的过程改进情况。 对我国软件企业的CMM/CMMICMM建设实施和认证评估进行了回顾和总结,阐述了以过程改进及质量活动的根本目的,指出已有评估经验的企业和准备评估的实施中企业要注意的主要问题,最后分析了CMMI 体系的发展的方向和在国内的应用前景。
关键字:CMM体系,CMMI,过程能力,质量,过程认证评估
1. 简介
CMM是能力成熟度模型(Capacity Maturity Model)的简称,是卡内基梅隆大学软件工程研究院研究所(Software Engineer Institute of Carnegie Mellon University)[1]为美国联邦政府评估软件供应商的能力而建立的模型,研究最初开始于1986年,1991年正式推出了CMM 1.0 版。CMM自问世以来备受关注,在许多国家和地区得到了广泛应用,成为衡量软件公司软件开发水平的重要参考因素和软件过程改进事实上的工业标准。
CMM以制造业TQM(Total Quality management全面质量管理)为基础脱胎发展而来,建立的最初目的是用于评价软件承包商的能力,然而,在CMM的实施过程中,帮助企业组织识别自身情况,对软件工程过程进行管理和改进,提高软件开发的质量,增强组织开发与改进能力,这些作用逐渐被工业界和学术界认识并重视。具体地说,企业实施基于CMM过程改进模型或及评估,能够指导软件组织提高软件开发管理能力;提高产品质量;降低软件承包商和采购者的风险;评估软件承包商的软件开发管理能力;帮助软件企业识别共享业界有效过程实践开发和维护软件的有效过程和关键实践;帮助软件企业识别为达到CMM更高成熟等级所必须的关键实践;增加软件企业的国际竞争能力。
在CMM的推广了几年后发展过程中,经过大量的企业实践及反馈,当SEI准备推出SW-CMM的2.0版本,此时应CMM体系的发展需要和美国国防部的要求,SEI将精力由研究以软件密集型的组织的过程改进转向以软件及系统工程的组织的过程改进,CMM (SW-CMM)的版本推进,转到开发和推广支持开发CMMI(Capability Maturity Model Integration),即能力成熟度模型集成。CMMI来源于三个模型,即软件能力成熟度模型 V2, 草案 C (SW-CMM V2C)、系统工程能力模型 (SECM)、集成产品开发能力成熟度模型(IPD-CMM)。
CMMI与CMM有哪些改变?
支持多学科:CMMI把软件工程(SW),系统工程(SE),集成的产品和过程开发(IPPD),采购采购(SS)这四个学科领域的能力成熟度模型,集成到一个框架中去。
具有两种表示方法:阶段式、连续式。企业可根据自己的情况灵活的选择自己的过程改进途径。
改进了CMM模型的结构:增加模型的清晰性和可理解性; 使用通用的术语、一致的风格;统一的结构规则、公共的组件。
确保与 ISO 15504 一致。
强调关于度量的改进以达到商业目标,在CMMI 成熟度二级增加了度量与分析过程域;
增强了项目管理过程,如风险管理;
增强工程过程管理,具体细化了CMM中工程过程域的实践。
强调过程改进方法及有效性
为企业的过程构建和改进提供了近年来的、更适用的最佳实践,更具有过程改进指导作用。)主要内容包括成熟度的五级模型,模型的每个等级又包括不同的过程域(Process Area),而每个过程方面又由各种目标构成,每个目标由各种特定惯例和通用惯例支持。主要为:初始级;已管理级,有七个过程域;已定义级,有十四个过程域;定量管理级,有两个过程域;持续优化级,有两个过程域。提出了由第一级向第五级逐级发展的模式。模型的等级从低到高,可以预计企业的开发风险越来越低,开发能力越来越高。
2. CMM在中国的发展历程
中国在发展软件业方面存在着得天独厚的条件,是全世界拥有大量高质量、高标准、低成本人才和最大软件市场的少数几个国家之一。近年来,业界对我国和邻国印度做了很多比较,因为印度十几年以来,在整个国家产业水平不发达的情况下,软件业发展迅速,已是世界上五大计算机软件供应国之一,是仅次于美国的第二大计算机软件出口大国。我国的软件产业发展也十分迅速,2003年软件产业的销售额达到1600亿元人民币,已经超过印度[2],然而,在软件出口额上,2003 年度我国约为20亿美元,印度同期出口额超过百亿美元,我国只大致相当与印度98年软件出口的水平。中国和印度之间的差别除了印度在语言上享有一定的优势外,在软件质量的控制和能力的显示意识方面存在不同。CMM和CMMI正是进行质量建设和能力显示的强有力的工具,随着我国软件外包业的发展壮大,国家对软件出口的重视,同时,随着国内软件业规模的不断扩大,专业体系的软件开发管理流程概念越来越为业界所需要。对CMM和CMMI的认识,看法 从了解观望到认同,也并在逐渐发展为实施,可分为如下四个阶段:
(1) 研究期
在991989年至1999年之前。,在中国,北航软件工程研究所的周伯生教授带领教研室人员和博士生开始对CMM进行研究。还有国防系统和大学的研究部门中国最早引入CMM的是。国防系统和大学的研究部门。在这些研究部门中,很早即有课题组进行相关的研究他们跟踪,跟踪美国及世界最新动向。尽管Motorola(中国)公司称他们在1993年开始实施CMM,并于1996年达到CMM三级,但在当时的中国,CMM框架还未引起业界的普遍重视,还处于观察和研究期。直到1999年,由IBM和清华同方合资成立的北京鼎新信息系统开发有限公司在7月6日宣布通过CMM二级的认证评估,,及报刊一些文章的刊载,才在我国软件研究界和工业界引起了一点影响,先后有联想、用友等从事软件的企业将目光关注到CMM上重视,。CMM相关的各种会议和论坛纷纷涌现,CMM框架由研究部门的研究方向走向普通的开发人员。
(2) 摸索实行期
在2000年,2000年国家发布的关于促进IT业发展的18号文件,明确指出“鼓励软件出口型企业通过GB/T19000-ISO9000系列质量保证体系评估和CMM评估。CMM相关的各种会议和论坛纷纷涌现,有代表论坛有2000年5月的第三届中关村电脑节的CMM论坛正式掀开了中国企业引进CMM之幕。在会上请来了美国、印度、英国等国家的SEI授权的主任评估师做了讲演,还聘请了周伯生、郑人杰、吴超英等高校的教授进行了关于CMM的讲演和座谈。会议中和会后引来了许多企业对CMM的关注,有联想、用友、金山、NTT等。一些开发机构的高层领导和工程人员迫切地需要引进国外的先进工程及管理实践,将他们的软件过程管理向国际化迈进。在中国CMM由以研究为主转为向企业推广实施。高校的教师们带着理论和他们的软件工程的实践,从高校走出来,走向美国卡内基梅隆大学。他们成为以CMM/CMMI实施软件过程改进的咨询师和评估师。99至2001年。鼎新公司通过CMM二级的认证,为中国实施CMM拉开了序幕。在此发展期间,政府政策的导向起到了重要的推进作用。北京科委和促进中心,在国内还没有SEI授权的主任评估师的时候,对实施CMM并达到期望的成熟度等级的企业给予了政府的资助。“还。2000年国家发布的关于促进IT业发展的18号文件,明确指出“鼓励软件出口型企业通过GB/T19000-ISO9000系列质量保证体系认证和CMM认证。其认证费用通过中央外贸发展基金适当予以支持”[3],各地方政府依据中央精神,制定了不同的20到80万元的奖励制度,同时从政府项目招标,软件企业资格认证评估等方面对通过了CMM认证评估通过的企业进行倾斜。在行业的发展需要、和政府的支持下及国内专家的技术支持下,一些业界领先企业首先实施了以进行了CMM的过程改进实施和认证评估。2000年Motorola中国软件中心通过了CMM五级的认证,为整个行业树立了一面旗帜,之后,2001年6月,东软第一个通过CMM三级评估,增强了中国软件企业从低级别向高级别迈进的信心。
(3) 快速发展期
2002年至2003年。在政策的引导和业界领先企业成功实施CMM的示范作用下,中国掀起了CMM认证评估的高峰。以2002年12月为例,如下图, 看到了依据基于CMM进行的改进和评估的数量逐年成倍几所起到的作用增长, 2002年上半年评估的数量是37个, 是2001年以前总和(18个)的一倍还多; 而2002年下半年的评估数据是73, 是上半年一倍还多。
在这个月中,中科院软件研究所、中软网络技术股份有限公司、万达信息股份有限公司、金蝶软件有限公司、创智信息系统有限公司均传来CMM三级认证通过的消息,该月成为中国软件企业CMM认证的高峰月,尤其是12月31日,东软通过了CMM五级的认证,使中国成为继美国和印度后第三个拥有CMM五级认证的国家,之后,中兴通讯成都研究所等大批著名软件企业通过CMM三级,华为印度所和大连海辉先后通过了五级的评估。全国上下甚至几十人的公司都参与到CMM改进评估工作中来。还有值得注意的数据,就是评估的等级情况。右表是来自SEI的对中国评估等级的报告数据。可以看出, 从2002年开始中国打破了L1的“零”的突破, 即评估结果没有达到期望的等级, 结果为一级,也就是大家所谓的”评估没有通过”。
4. SW-CMM逐渐退出舞台夕阳西下, CMMI取而代之期朝阳升起
CMM在世界上的广泛的采用,已得到业界公认的益处。
达到很好效果,见右表。可是CMM已经12年了,不再代表当前的最佳实践。加上CMM的家族产品的逐渐增多,带来一些模型间的不一致、重复和复杂性以及实施上的费用浪费。CMMI基于组间式结构,为系统工程、软件工程、集成的产品和过程开发提供了实践指导,减少由于多个能力成熟度模型他们分别使用带来的冗余和复杂问题。
SEI 2004年后。由于在20012002年121月正式发布了CMMI的1.1版本后,SEI已经正式宣布,不再维护SW-CMM v1.1 和CBA-IPI v1.2(CMM Based Appraisal for Internal Process Improvement)评审评估方法。在2003年底, CMMIv.1.1发布后的两年内SEI终止了还可以提供有关SW-CMM和CBA-IPI主任评审员评估师的培训,并接收评审数据,,但这一切在2003年12月就正式停止,已经公布了过程改进的标准的CMMI评估方法(SCAMPI),来替代基于CMM的内部过程改进评估(CBA IPI)和软件能力评价(SCE)。到2005年,SCAMPI可以用于使用SW-CMM的组织。到那时,SEI授权的CBAIPI CMM评估师和SCE不再应用。因此,SEI鼓励所有仍然使用CMM的组织提升到CMMI。
SW-CMM逐渐退出历史舞台。
5.尽早转向 CMMI取而代之期
CMMI的诞生,就象一个盼望已久的礼物,为过程改进找到更高的价值点。她的魅力前所未有,SEI的CMMI工作组在试行后发布,即刻迎来了广泛的接受。从来自SEI的报告中看到,到2004年1月底以前, 从2002年4月SCAMPI发布到2003年12月底,共有223个CMMI评估。从最近的148个评估的成熟度等级情况统计得出各成熟度所占评估数量的比例, 如上图。其中大部分高成熟度的评估组织是从CMM转移过来的。
据不完全统计,我国到目前为止已有超过20家企业进行了CMMI评估,其中有摩托罗拉、北京日立华胜、太极德捷、方正科技、时力永联等,一些数据还没有反映在SEI的数据库中(上述数据是去年年底前的)。对于一些CMM的评估, 也已使用SCAMPI评估方法。还有许多企业正从CMM转移/提升到CMMI过程中, 如中兴通讯、北京道达、上海易宝软件等在达到的CMM的某个等级后,已经全面转入基于CMMI的过程改进。
我们极力倡导我国所以2004年起广大相关企业要顺应时代的潮流,享用SEI的最新过程改进成果,克服,尽管任何理论体系的中止均有一定的惯性影响,尽早从CMM体系均转向依据CMMI。我们将跟随世界送走CMM,迎来CMMI。
6. CMM/CMMI对企业的意义和目的
实施CMM/CMMI对 软件开发企业进行CMM建设的目的来讲,是希望能够提高改进企业的开发管理模式,向现代软件产业的发展,。它需要不同于初期的小型项目的个体开发方式,需要工程化的、复杂一致的开发管理过程,。要将企业的软件开发过程进行明确定义,在全生命周期阶段的不同阶段定义活动的执行顺序,需要的人员及技能、使用的标准和方法、完成任务的准则及度量过程的进展。依据使用的过程和项目的规模,做出合理的计划, 然后跟踪计划的执行、评价执行的状态,通过对生产的过程和产品(包括中间产品还是最终产品)的质量控制详细的分工,然后将完成的分工融合到一起,从而来保证最终软件的工作产品的质量品质,可靠性等目的。实施CMM的目的还在于不断提高企业产品开发的过程能力。即从你学会工作到精明有效的工作。CMMI的过程域提供一些过程的最佳实践。它从最初项目开始只会做而没有要求怎么做,逐渐提高到到有计划地做并度量过程执行情况,然后再提升到以组织标准过程和裁减指南为指导地做。当此过程的实施达到充分的稳定和制度化之后,通过你采集的多个项目的度量数据会告诉你,你现在是否行驶在正常的轨道上,用量化的标准衡量过程的执行和产品质量状态,为你做出精明的决策提供依据。在实施CMM的企业中,过程能力被作为一项关键因素予以考虑。随着不断提高过程能力,所谓过程能力,是指把企业建立了一套可视化、规范化和运行制度化的从事软件开发和生产的过程本身透明化、规范化和运行的强制化。这样一来,CMM/CMMI的模型本身支持持续改进的过程。从一些过程域的实践和能力等级的目标要求充分看到这一点。就它可以把软件开发及生产过程中成功或失败的经验教训及时反馈到组织,再由组织有经验的人员总结,改进过程,提供给组织内所有项目所变成今后可以借鉴和吸取的营养,共享经验,避免失败再次发生大大加快软件生产的成熟程度提高。稳定的过程、量化管理及不断优化的过程为企业的产品开发和持续发展建筑了一个坚不可摧的基础。
软件开发工作的实质,就是从问题空间出发,在一定约束条件下,针对特定主要矛盾进行逻辑抽象,建立模型,并将该模型产生的各种结果综合起来,最终化解或解决目标主要矛盾的一个过程。然而同简单的数学分析,逻辑思维不同,随着软件规模的扩大,分工和合作逐渐成为软件开发的一个重要因素,随之,交流和管理水平的高低就成为决定软件开发胜败的一个关键问题。当然,对于任何一个具体的项目而言,管理和交流活动本身是不能完成软件开发的,它的主要职责是提供软件开发活动的平台,起到支撑的作用。具体的项目,是在该平台的支撑下,依托于过程和软件工程产品工程各团队的经验,、技能并在资金,及硬件设施的保障下,逻辑思维驱动实现的。软件过程管理的角色,是一个服务者的角色。他的任务就是在软件工程工程活动的全过程中,对其提供服务和约束。在不同等级的企业中,存在着服务的程度问题。过程管理人员不能建立了一套文档体系之后,就无所事事了。一方面,针对特定项目,诸如配置管理,版本控制,变更管理等很多日常性的工作需要进行;另一方面,在整个软件产品的开发过程中,软件管理团队的人员更需要介入软件工程到工程小组中,依据对相似类型项目的理解,对工程小组提出建议和参考意见。这就要求管理团队的人员要具有丰富的工程经验和管理经验。还有要考虑适当的的是约束及其程度的问题,过程管理人员的服务,并不是没有原则的一味迁就,相反,是需要建立在一定公共过程原则基础上的。这个这些公共过程原则,就是经过一定实践后,经由工程团队负责人认可,既能满足改进过程的目标,又能满足企业的商业目标,他们并经由上级管理角色核准的过程在企业内得到充分的认可。该过程最终以组织级标准规程过程的形式固定下来,成为每个项目开始时必须依据和并经裁剪应该遵循的准则,成为保障组织项目开发和产品质量的基础。
CMM/CMMI建设的另一个作用,是为企业提供展示自身实力的标准的行业标准。通过为期一年以上的基于CMM/CMMI的质量建设和改进,企业内过程稳定到一定程度后,即可申请CMM相关等级的评估。从业界的实际情况来看,如果软件企业期望开拓海外市场,获得到外包的软件项目, 通过CMM/CMMI的认证评估更是重要的基本的条件。,它不但是一个自身实力的标准的标志,还建立了企业之间的比较。
7. 注重实施效果
然而,对于正在基于CMM/CMMI实施改进的企业,以及已经已经达到通过CMM/CMMI某级认证评估的企业,要深刻认识到,以目标驱动改进,为达到本企业的商业目标,使企业从改进中获得最大的好处,是持续改进的动力。因此企业要有年度计划, 支持周期性管理, 还要量化改进的目标, 定期评价改进效果, 将注意力集中在准确地度量和分析改进的价值上, 如
一段时间的改进以来开发人员工作效率的提高情况
一段时间的改进以来每个阶段缺陷率的减少情况
一段时间的改进以来测试的周期缩短情况
一段时间的改进以来估计偏离度的减小情况
一段时间的改进以来客户反馈的缺陷数的减少情况
过程维护及改进质量建设是一个长期的任务,要坚持不懈,长期的过程,。的确有的企业在实施CMM/CMMI一段时间后,将改进停顿下来,或只维护文档,不遵循过程。或急于求成, 过程没有稳定就仓促进行评估,希望快速看到改进地效果,结果可能适得其反。据一些可靠的信息,当一些国外的投资/采购商来到慕名来到一些已经取得CMM等级评估的企业或部门,经过了解和调查, 结果是令人失望的。 另外, 过程和质量建设建立要稳步地以”小步伐增量式” 进行, 不能跨越能力或成熟度等级, 这就意味着,并不是你使用某个公司的管理流程和规范, 你就可以有效的实施并达到与人家同样的效果. 我们知道, 实施过程的组织结构和人员是重要的因素,如管理体制、过程改进人员、 项目经理、质量保证人员等,他们本身理解过程的程度及技能和经验起着举足轻重的作用。 正如Curtis指出”缓慢,成功的软件总是由理解其应用的人设计出来的”。如果没有与过程相匹配的人才,就不能达到其过程的理想效果。 然而,一旦抛弃丧失重视质量正确地的态度和意识方法,改进的成果将会比创建他们更快速地丧失的丧失相对会比建设过程快速的多。这正如在现在快速发展的行业中,建立一个好企业,需要作到许多点方面,然而,企业的衰败却可能只在一念之间类似。达到通过某级的评估时刻,仅仅是企业发展道路上一个新的里程碑,也可称为“万里长征的第一步”,而并非终点,企业要生存、要发展,还必须不断自我完善,自我超越。
4. 关于实施CMM建设和评估的具体建议
了解企业进行CMM建设的目的意义十分重要,然而,对于大多数企业来说,如何具体着手,是企业最关心的问题。总的来说,要从五个方面考虑过程改进的各项准备工作。
1. 组织准备:要从整个组织加强质量建设的意识,并保证得到各个级别的支持。具体说来,高层经理要保证出资支持用于CMM改善软件过程;组织应委托一个具有高层/中层管理职责的人员负责CMM实施工作。中层经理要为实施CMM配备5% - 10%的人力资源及其他资源;制定CMM实施计划,检查实施情况,支持实施活动,及时解决过程中的问题。SEPG(软件工程过程组)要研究CMM、编写/修改必要的文档,并推广已编写的文档。SQAG(软件质量保证组)要研究CMM、软件质量保证技术及过程,编写/修改必要的文档,并推广已编写的文档,测量和分析项目进展情况[4],反馈项目过程状态。SCMG(软件配置管理组)要研究CMM、软件配置管理技术及过程,编写/修改必要的软件配置管理文档并推广已编写的文档,建立必要的工具支持。 项目经理和组员要作到了解CMM,严格遵循已定义的规程,积极参与文档的制定及修改,做软件过程改进的主人。
2.知识准备:要对质量工作进行必要的知识准备,其中包括,加强培训工作。开展能力成熟度评估既要有高素质的主任评估师,也要有相当规模的过程评估队伍,更要有庞大的过程改善队伍;要认识到只有高素质的人员,执行成熟的良好过程,才能生产出好的产品;应深入开展软件工程基础的培训,使每个岗位的人员都具备过程改进意识,并掌握所必需的过程改进知识和技能;重视对软件工程的研究,包括方法、工具和过程。通过组织培训及咨询等多种方式,加速培养过程改进的骨干队伍。
3.文档准备 :不论是ISO9001质量体系还是CMM质量体系都有一个共同要求,要按文档规定去作,并记下你所做的事情。(Document what you do, Do what you document),文档准备是质量建设的一个重要方面,具体包括,组织级文档:方针、过程、规程、模板和标准;过程文档:定义详细的规程;项目文档:实施文档。
4.项目准备:在质量建设中,选择重要试点项目,集中精力扎扎实实地做起,这些项目同时也可作为以后的评估准备项目。一般选择4~5个项目仔细审阅,这些项目应具有代表性(不同类型,处于不同开发阶段,不同项目部门);同时对项目人员进行组织方针和各项规程培训,相关工具和管理环境培训,SQA(软件质量保证)基本培训和SCM(软件配置管理)基本培训。
5.能力准备:在质量工作建设的一段时间后,可以看到组织已经建立了有效的软件项目管理;文档化且遵循软件项目管理过程,在建立管理过程中,使用组织的方针来指导项目,重复以前成功的项目开发经验。此时质量改进一个阶段告一个段落,可以申请评估,或者按照SEI的IDEAL模型[5],进入下一阶段的建设,要知道,质量建设和改进工作是不断循环,不断提高的。
8. 前景CMM的发展前景展望
从CMM向CMMI转移是必然趋势。打破了以单一学科建立过程能力和成熟度模型的历史,使现代产品生产及管理的多学科、领域“无缝”地成为一体。成为对许多企业来说,软件系统是计算机系统的一个组成部分,因此需要从系统工程的观点来看待过程的能力和组织的成熟度,需要将软件工程技术与软件工程管理有机地集成起来。CMMI是目前唯一较全面具体的、能覆盖产品全生命周期的软件和系统工程的软件过程能力质量建设成熟度模型。除了SW-CMM,还发展出许多相关模型,有愈来越庞大的危险,CMMI将主要模型和最佳实践结合起来,提出了集成模型,同时,与 ISO 15504的一致性,为它与国际标准接轨创造了有利的条件。
更重要的是,CMM系列I是在长期的实践过程中逐步发展和完善的,因而具有较好的可操作性;当今世界各国都已公认CMM系列CMMI是实现过程改善的良好模型。CMM的模型又为全世界计算机软件界提供了可以交流,比较,寻找差距的统一平台和行业标准,因此可以认为,在全世界范围内,CMM系列在I今后一个相当长的时间内,都将作为实现过程改善和能力显示的参考模型。
在中国内,CMM/CMMI已经在得到我国软件业及与软件相关的产品开发的企业广泛扎根认识,不但在理论上进行了大量的研究,也有了大量的企业实践[6][7][8][9]理论界针对CMM模型 进行了大量的研究[6],大多数软件企业也认可了CMM。同时,如前分析,从我国2003年软件出口行业和印度的差距数据来看,我国的软件出口行业还有着相当广阔的发展空间,基于CMMICMM建设过程改进与认证评估作为我国将整体产品开发能力和管理水平向国际化发展是重要的途径,对发展扩大出口,提供承接外包行业的“入门证”,也是充分的有利条件。我们相信,在政府的支持和软件企业的努力下,在我国未来几年CMMI在我国未来几年必将继续成为指导我国以产品开发和集成软件企业不断提高自身软件能力和显示自身实力的不可替代的过程管理指导质量建设管理体系。
9. 参考资料
[1] http://www.sei.cmu.edu/
[2] http://www.csia.org.cn/htm/focus/view/1321-18@2004-04-02.html
[3] 鼓励软件产业和集成电路产业发展的若干政策, 国发[2000]18号,2000.6
[4] John McGarry等著,吴超英,廖彬山译, 实用软件度量,机械工业出版社, 2003.9
[5] The IDEAL model: A practical guide for improvement, Gremba, Jennifer and Chuck Myers, Bridge, Software Engineering Institute, Issue 3, Also available at http://www.sei.cmu.edu/ideal/ideal.bridge.html
[6] 潘秋菱,刘宗田等,软件过程技术及环境研究,电子学报,2001.11
[7] 吴超英,关于软件过程改进中测量问题的研究与实践,计算机应用与软件,2001.11,
[8] 吴超英,关于过程改进框架及其关键因素的探讨,计算机工程与应用,2002.5,
[9] 吴超英,成功启动过程改进程序的关键因素,中国进出口软件, 2004.5