首页 > 体系认证咨询 > CMMI软件能力与成熟度评估
简介
CMMI全称是Capability Maturity Model Integration,即软件能力成熟度模型集成(也有称为:软件能力成熟度集成模型),是美国国防部的一个设想,1994年由美国国防部(United States Department of Defense)与卡内基-梅隆大学(Carnegie-Mellon University)下的软件工程研究中心(Software Engineering Institute,SEISM)以及美国国防工业协会(National Defense Industrial Association)共同开发和研制的,他们计划把现在所有现存实施的与即将被发展出来的各种能力成熟度模型,集成到一个框架中去,申请此认证的前提条件是该企业具有有效的软件企业认定证书。
CMMI是一套融合多学科的、可扩充的产品集合, 其研制的初步动机是为了利用两个或多个单一学科的模型实现一个组织的集成化过程改进。CMMI的本质是软件管理工程的一个部分。软件过程改善是当前软件管理工程的核心问题, 50多年来计算机的发展使人们认识到要高效率、高质量和低成本地开发软件,必须改善软件生产过程。基于模型的过程改进是指采用能力模型来指导组织的过程改进,使之过程能力稳定的进行改善,该组织也能变得更加成熟。
CMMI的成功促使其他学科也相继开发类似的过程改进模型,例如系统工程、需求工程、人力资源、集成产品开发、软件采购等等,从CMM衍生出了一些改善模型,比如:SW-CMM,SE-CMM,IPD-CMM等。不过,在同一个组织中多个过程改进模型的存在可能会引起冲突和混淆。CMMI就是为了解决怎么保持这些模式之间的协调。
CMMI 1.3是2010年11月SEI 发布的CMMI模型的最新版本。CMMI 1.3包括CMMI采购模型1.3版、CMMI开发模型1.3版、CMMI服务模型1.3版。
CMMI开发模型1.3版(CMMI-DEV 1.3)与CMMI开发模型1.2版相比,做了如下改进:
1)将过程域"组织级创新与部署"(Organizational Innovation and Deployment,OID)更名为"组织绩效管理"(Organizational Performance Management, OPM),并增加了一个新的特定目标与几个新的特定实践。
2)对模型架构进行了改进,简化对多个模型的使用。
发展起源
自从1994 年SEI正式发布软件CMM以来,相继又开发出了系统工程、软件采购、人力资源管理以及集成产品和过程开发方面的多个能力成熟度模型。虽然这些模型在许多组织都得到了良好的应用,但对于一些大型软件企业来说,可能会出现需要同时采用多种模型来改进自己多方面过程能力的情况。这时他们就会发现存在一些问题,其中主要问题体现在:
n 不能集中其不同过程改进的能力以取得更大成绩;
n 要进行一些重复的培训、评估和改进活动,因而增加了许多成本;
n 遇到不同模型中有一些对相同事物说法不一致,或活动不协调,甚至相抵触。 于是,希望整合不同CMM 模型的需求产生了。1997 年,美国联邦航空管理局(FAA)开发了FAA-iCMMSM(联邦航空管理局的集成CMM),该模型集成了适用于系统工程的SE-CMM、软件获取的SA-CMM 和软件的SW-CMM 三个模型中的所有原则、概念和实践。该模型被认为是第一个集成化的模型。CMM与CMMI最大的不同点和区别: CMMISM-SE/SW/IPPD/SS 1.1 版本有四个集成成分,即:系统工程(SE)和软件工程(SW)是基本的科目,对于有些组织还可以应用集成产品和过程开发方面(IPPD)的内容,如果涉及到供应商外包管理可以相应的应用SS(Supplier Sourcing)部分。
CMMI有两种表示方法,一种是大家很熟悉的,和软件CMM 一样的阶段式表现方法,另一种是连续式的表现方法。这两种表现方法的区别是:阶段式表现方法仍然把CMMI中的若干个过程区域分成了5 个成熟度级别,帮助实施CMMI的组织建议一条比较容易实现的过程改进发展道路。而连续式表现方法则通过将CMMI中过程区域分为四大类:过程管理、项目管理、工程以及支持。对于每个大类中的过程区域,又进一步分为基本的和高级的。这样,在按照连续式表示方法实施CMMI的时候,一个组织可以把项目管理或者其他某类的实践一直做到最好,而其他方面的过程区域可以完全不必考虑。
CMMI的价值
CMMI为企业带来价值主要体现在以下几个方面:
第一、能保证软件开发的质量与进度,能对"杂乱无章、无序管理"的项目开发过程进行规范。
第二、有利于成本控制。因为质量有所保证,浪费在修改、解决客户的抱怨方面的成本会降低很多。绝大多数情况是缺少规范制度,只是求快。项目完成后,要花很多时间修修补补,费用很容易失控。
第三、有助于提高软件开发者的职业素养。每一个具体参与其中的员工,无论是项目经理,还是工程师,甚至一些高层管理人的做事方法逐渐变得标准化、规范化。
第四、能够解决人员流动所带来的问题。公司通过过程改进,建立了财富库以共享经验,而不是单纯依靠某些人员。
第五、有利于提升公司和员工绩效管理水平,以持续改进效益。通过度量和分析开发过程和产品,建立公司的效率指标。
与ISO的区别
很多初识CMMI评估的朋友都搞不清CMMI证书到底是哪里管理,是由哪个机构颁发的,什么样的证书才是正宗的,会不会有假证书,是不是也跟ISO一样都是由认证机构颁发的等等一系列的疑问。
先说ISO的管理办法:接触过ISO9001认证的朋友都知道,ISO9001是国际标准,企业可以根据自己的认可需求选择合适的认证机构,比如CQC,BSI,DNV等等这样的认证机构审核发证,而这些认证机构同时受到国家或国际等组织的监管,比如说认可机构的监管,在中国的认可机构就是CNAS,在英国的就是UKAS,美国的ANAB。就是说,企业的ISO9001证书要从认证机构发出来,而认证机构要得到认可机构的授权,这是国际通用的管理办法。另外说一下,而在中国的认可机构及在中国审核发证的国内外认证机构又是受政府监管如CNCA。就我们国家而言,你要得到一张有效的ISO证书,是要通过CNCA授权的国内外认证机构才可以审核并发证书。
CMMI评估,也有人称是CMMI认证,"认证"是国内的叫法习惯。要获得正宗的CMMI证书,是要经过主任评估师对企业的软件项目评估通过后才会颁发证书,这里要强调的是,发证书是以主任评估师的个人名义签发的,并不是由认证机构发的。而主任评估师是通过自己的努力参考SEI( Software Engineering Institute)的考试才获得资质的,有资质的主任评估师到企业去评估,评估结果符合SEI的要求才会把评估报告提交到SEI,SEI审核完评估报告后,才表明企业最终获得了有效的CMMI证书,SEI会把评估结果公布在SEI网站上供用户查询。因此,SEI是管理CMMI证书的唯一机构,SEI授权给评估师去开展评估工作。这里要说明一下,SEI本身是没有证书这个概念的,他只有注册这个概念,就是说,证书在中国才有这样的做法,对于SEI来说,SEI没有统一印发证书。
等级划分
1. 初始级软件过程是无序的,有时甚至是混乱的,对过程几乎没有定义,成功取决于个人努力。管理是反应式的。
2.可管理级建立了基本的项目管理过程来跟踪费用、进度和功能特性。制定了必要的过程纪律,能重复早先类似应用项目取得的成功经验。
3. 已定义级已将软件管理和工程两方面的过程文档化、标准化,并综合成该组织的标准软件过程。所有项目均使用经批准、剪裁的标准软件过程来开发和维护软件,软件产品的生产在整个软件过程是可见的。
4. 量化管理级分析对软件过程和产品质量的详细度量数据,对软件过程和产品都有定量的理解与控制。管理有一个作出结论的客观依据,管理能够在定量的范围内预测性能。
5. 优化管理级过程的量化反馈和先进的新思想、新技术促使过程持续不断改进。
每个等级都被分解为过程域,特殊目标和特殊实践,通用目标、通用实践和共同特性:每个等级都有几个过程区域组成,这几个过程域共同形成一种软件过程能力。每个过程域,都有一些特殊目标和通用目标,通过相应的特殊实践和通用实践来实现这些目标。当一个过程域的所有特殊实践和通用实践都按要求得到实施,就能实现该过程域的目标。
能力度等级:属于连续式表述,共有六个能力度等级(0~5),每个能力度等级对应到一个一般目标,以及一组一般执行方法和特定方法。
0 不完整级
1 已执行级
2 已管理级
3 已定义级
4 量化管理级
5 最优化级