现在的位置: 首页 > 综合 > 正文

CMM/CMMI简介

2013年09月16日 ⁄ 综合 ⁄ 共 3638字 ⁄ 字号 评论关闭

CMM(Capability Maturity Model for Software,英文缩写为SW-CMM,简称CMM,即软件能力成熟度模型),是企业在开发流程化和质量管理上的国际通行标准,由美国卡内基梅隆大学软件工程研究院于1987年研制成功,是目前国际上最流行、最实用的软件生产过程标准和软件机构成熟度等级认证标准。
       CMM是一种用于评价软件承包能力并帮助其改善软件质量的方法,侧重于软件开发过程的管理及工程能力的提高与评估。CMM分为五个等级:一级为初始级,二级为可重复级,三级为已定义级,四级为已管理级,五级为优化级,从低到高,软件开发生产计划精度逐级升高,单位工程生产周期逐级缩短,单位工程成本逐级降低。其目的在于帮助软件组织改善其软件生产过程的成熟度模式,以探索一种保证软件产品质量、缩短开发周期、提高工作效率的软件工程模式与标准规范。
       其所依据的想法是:只要集中精力持续努力去建立有效的软件工程过程的基础结构,不断进行管理的实践和过程的改进,就可以克服软件生产中的困难。CMM它是目前国际上最流行、最实用的一种软件生产过程标准,已经得到了众多国家以及国际软件产业界的认可,成为当今企业从事规模软件生产不可缺少的一项内容。
       软件过程包括各种活动、技术和用来生产软件的工具。因此,它实际上包括了软件生产的技术方面和管理方面。CMM策略力图改进软件过程的管理,而在技术上的改进是其必然的结果。
  必须牢记,软件过程的改善不可能在一夜之间完成,CMM是以增量方式逐步引入变化的。CMM明确地定义了5个不同的“成熟度”等级,一个组织可按一系列小的改良性步骤向更高的成熟度等级前进。
成熟度等级1:初始级(Initial)。处于这个最低级的组织,基本上没有健全的软件工程管理制度。每件事情都以特殊的方法来做。如果一个特定的工程碰巧由一个有能力的管理员和一个优秀的软件开发组来做,则这个工程可能是成功的。然而通常的情况是,由于缺乏健全的总体管理和详细计划,时间和费用经常超支。结果,大多数的行动只是应付危机,而非事先计划好的任务。处于成熟度等级1的组织,由于软件过程完全取决于当前的人员配备,所以具有不可预测性,人员变化了,过程也跟着变化。结果,要精确地预测产品的开发时间和费用之类重要的项目,是不可能的。
成熟度等级2:可重复级(Repeatable)。在这一级,有些基本的软件项目的管理行为、设计和管理技术是基于相似产品中的经验,故称为“可重复”。在这一级采取了一定措施,这些措施是实现一个完备过程所必不可缺少的第一步。典型的措施包括仔细地跟踪费用和进度。不像在第一级那样,在危机状态下方行动,管理人员在问题出现时便可发现,并立即采取修正行动,以防它们变成危机。关键的一点是,如没有这些措施,要在问题变得无法收拾前发现它们是不可能的。在一个项目中采取的措施也可用来为未来的项目拟定实现的期限和费用计划。
成熟度等级3:已定义级(Defined)。在第3级,已为软件生产的过程编制了完整的文档。软件过程的管理方面和技术方面都明确地做了定义,并按需要不断地改进过程,而且采用评审的办法来保证软件的质量。在这一级,可引用CASE环境来进一步提高质量和产生率。而在第—级过程中,“高技术”只会使这一危机驱动的过程更混乱。
成熟度等级4:已管理级(Managed)。一个处于第4级的公司对每个项目都设定质量和生产目标。这两个量将被不断地测量,当偏离目标太多时,就采取行动来修正。利用统计质量控制,管理部门能区分出随机偏离和有深刻含义的质量或生产目标的偏离(统计质量控制措施的一个简单例子是每千行代码的错误率。相应的目标就是随时间推移减少这个量)。
成熟度等级5:优化级(Optimizing)。—个第5级组织的目标是连续地改进软件过程。这样的组织使用统计质量和过程控制技术作为指导。从各个方面中获得的知识将被运用在以后的项目中,从而使软件过程融入了正反馈循环,使生产率和质量得到稳步的改进。
       CMM的成功促使其他学科也相继开发类似的过程改进模型,例如系统工程、需求工程、人力资源、集成产品开发、软件采购等等,从CMM衍生出了一些改善模型,比如:
1.SW-CMM (Software CMM) 软件CMM
2.SE-CMM (System Engineering CMM) 系统工程CMM
3.SA-CMM (Software Acquisition CMM) 软件采购CMM
4.IPT-CMM (Integrated Product Team CMM) 集成产品群组CMM
5.P-CMM (People CMM) 人力资源能力成熟度模型
       CMMI的全称为:Capability Maturity Model Integration,即能力成熟度模型集成。CMMI是CMM模型的最新版本。就软件而言,CMMI是SW-CMM的修订本。
CMMI与CMM差别
  CMMI模型的前身是SW-CMM和SE-CMM,前者就是我们指的CMM。CMMI与SW-CMM的主要区别就是覆盖了许多领域;到目前为止包括四个下面领域:
1.软件工程(SW-CMM)
软件工程的对象是软件系统的开发活动,要求实现软件开发、运行、维护活动系统化、制度化、量化。
2.系统工程(SE-CMM)
系统工程的对象是全套系统的开发活动,可能包括也可能不包括软件。系统工程的核心是将客户的需求、期望和约束条件转化为产品解决方案,并对解决方案的实现提供全程的支持。
3.集成的产品和过程开发(IPPD-CMM)
集成的产品和过程开发是指在产品生命周期中,通过所有相关人员的通力合作,采用系统化的进程来更好地满足客户的需求、期望和要求。如果项目或企业选择IPPD进程,则需要选用模型中所有与IPPD相关的实践。
4.采购(SS-CMM)
采购的内容适用于那些供应商的行为对项目的成功与否起到关键作用的项目。主要内容包括:识别并评价产品的潜在来源、确定需要采购的产品的目标供应商、监控并分析供应商的实施过程、评价供应商提供的工作产品以及对供应协议很供应关系进行适当的调整。
  在以上模块中,企业可以选择软件工程,或系统工程,也可以都选择。集成的产品和过程开发和采购主要是配合软件工程和系统工程的内容使用。例如,纯软件企业可以选择CMMI中的软件工程的内容;设备制造企业可以选择系统工程和采购;集成的企业可以选择软件工程、系统工程和集成的产品和过程开发。CMMI中的大部分内容是适用各不同领域的,但是实施中会有显著的差别,因此模型中提供了"不同领域应用详解"。
  CMM的基于活动的度量方法和瀑布过程的有次序的、基于活动的管理规范有非常密切的联系,更适合瀑布型的开发过程。而CMMI相对CMM更一步支持迭代开发过程和经济动机推动组织采用基于结果的方法:开发业务案例、构想和原型方案;细化后纳入基线结构、可用发布,最后定为现场版本的发布。虽然CMMI保留了基于活动的方法,它的确集成了软件产业内很多现代的最好的实践,因此它很大程度上淡化了和瀑布思想的联系。
  在CMMI模型中在保留了CMM阶段式模式的基础上,出现了连续式模型,这样可以帮助一个组织以及这个组织的客户更加客观和全面的了解它的过程成熟度。同时,连续模型的采用可以给一个组织在进行过程改进的时候带来更大的自主性,不用再象CMM中一样,受到等级的严格限制。这种改进的好处是灵活性和客观性强,弱点在于由于缺乏指导,一个组织可能缺乏对关键过程域之间依赖关系的正确理解而片面的实施过程,造成一些过程成为空中楼阁,缺少其他过程的支撑。两种表现方式(连续的和阶段的)从他们所涵盖的过程区域上来说并没有不同,不同的是过程区域的组织方式以及对成熟度(能力)级别的判断方式。
  CMMI模型中比CMM进一步强化了对需求的重视。在CMM中,关于需求只有需求管理这一个关键过程域,也就是说,强调对有质量的需求进行管理,而如何获取需求则没有提出明确的要求。在CMMI的阶段模型中,3级有一个独立的关键过程域叫做需求开发,提出了对如何获取优秀的需求的要求和方法。CMMI模型对工程活动进行了一定的强化。在CMM中,只有3级中的软件产品工程和同行评审两个关键过程域是与工程过程密切相关的,而在CMMI中,则将需求开发,验证,确认,技术解决方案,产品集成这些工程过程活动都作为单独的关键过程域进行了要求,从而在实践上提出了对工程的更高要求和更具体的指导。CMMI中还强调了风险管理。不像在CMM 中把风险的管理分散在项目计划和项目跟踪与监控中进行要求,CMMI3级里单独提出了一个独立的关键过程域叫做风险管理。
CMM与ISO9000的主要区别:
1.CMM是专门针对软件产品开发和服务的,而ISO9000涉及的范围则相当宽。
2.CMM强调软件开发过程的成熟度,即过程的不断改进和提高。而ISO9000则强调可接收的质量体系的最低标准。

抱歉!评论已关闭.