什么是CMM和CMMI

时间:2024-03-18 07:23:37

CMM是由美国软件工程学会(Software Engineering Institute)制定的一套专门针对软件产品的质量管理和质量保证标准。该标准最初是为美国军方选择软件产品提供商时评价软件企业的软件开发质量保证能力而制定,所以称为软件企业能力成熟度模型(Capability Maturity Model,简称CMM)。该标准将软件企业的能力成熟度划分为5个等级,级别越高表明该企业在提供合格软件产品方面的能力越强。 
CMM(Capability Maturity Model)是能力成熟度模型的缩写。CMM的工作最早开始于1986年11月,当时为了满足美国联邦*评估软件供应商能力的要求,美国卡内基·梅隆大学的软件工程研究院SEI牵头,在Mitre公司的协助下,于1987年9月发布了一份能力成熟度框架(Capability Maturity Framework)以及一套成熟度问卷(Maturity Questionnaire).很多人认为这套问卷就代表了CMM模型,其实它只是用于探索软件过程成熟度的一个工具,真正的模型出现在四年以后。SEI总结了自1987年以来对成熟度框架和初版成熟度问卷的实战经验,并以此为基础,推出了CMM1.0版。这个推出于1991年的CMM1.0集中了四年来对软件公司评估的经验以及广泛的用户反馈,在成熟度框架的基础上建立了一个可用的模型,这个模型可以更加有效地帮助软件企业建立和实施过程改进计划。

   CMM1.0版使用两年之后,于1992年四月进行了一个研讨会,参加研讨会的有约两百名富有经验的软件专业人员。在广泛听取了他们的反馈意见之后,SEI于1993年推出了CMM1.1 版。近几年来,CMM又推出了2.0版本,同时进入了ISO体系,称为 ISO/IEC15504 或SPICE。SPICE从1995年起进入实地测试阶段,可能于2001年发布 。

    五级的具体定义如下:

    初级(initial):软件开发过程中偶尔会出现混乱的现象,只有很少的工作过程是经 过严格定义的,开发成功往往依靠的是某个人的智慧和努力。 

    可重复的(repeatable):建立了基本的项目管理过程。按部就班地设计功能、跟踪 费用 ,根据项目进度表进行开发。对于相似的项目,可以重用以前已经开发成功的部分。

    被定义的(defined.):软件开发的工程活动和管理活动都是文档化、标准化的,它 被集成为一个组织的标准的开发过程。所有项目的开发和维护都在这个标准基础上进行定 制。

    被管理的(managed.):对于软件开发过程和产品质量的测试细节都有很好的归纳, 产品和开发过程都可以定量地分解和控制。

    优化的(optimizing):通过建立开发过程的定量反馈机制,不断产生新的思想,采用 新的技术来优化开发过程。

     模型的等级从低到高,可以预计企业的开发风险越来越低,开发能力越来越高。除模型的第1级外,等级每个等级都由不同的过程区域构成,而每个过程区域又由各种目标构成,每个目标由各种实践支持(实践分为该目标特有的特殊实践和各种目标均适用的通用实践两种形式)。
     一个组织只要开始从事软件开发,即自动处于第1级,要通过其他等级,就需要达到统一的标准,即相对应等级中的各个区域过程。
     CMM2级过程区域有7个:需求管理、项目策划、项目监督和控制、供方协定管理、测量和分析、过程和产品质量保证、配置管理。 
     CMM3级过程区域有11个:需求开发、技术解决、产品集成、验证、确认、组织过程聚焦、组织过程定义、组织培训、集成项目管理、风险管理以及决策分析和决定。
     CMM4级过程区域有2个:组织过程性能和定量项目管理。
     CMM5级过程区域有2个:组织革新和部署、原因分析和决定。

     当一个软件组织按照CMM的要求贯彻活动,并达到预期的效果,该组织就可以被认为是达到CMM的要求。

    cmm和iso9001的出发点都是通过对生产过程进行管理,来确保产品的质量。虽然它们 之间有很多区别,但也有相似之处。比如,通过iso9001认证的组织,可以基本满足cmm二级 的标准和很多cmm三级的要求。因为cmm中的很多要求并没有列入iso9000标准之中,所 以,cmm一级的组织也可能获得iso9001的登记,defined.同样,有些iso9001规定的内容并没 有列入cmm标准。一个cmm三级组织获得iso9001认证几乎没有困难,cmm二级组织申请 iso9001认证也有明显优势。    引进CMM的意义有两个方面:

对软件企业: 提高软件开发的管理能力:CMM提供了软件企业自我评估的方法和自我提高的手段;提高软件生产率;加强软件生产的国际竞争力。
对软件项目发包单位和软件用户: 提供了对软件开发商开发管理水平的评估手段,有助于软件开发项目的风险识别。
    何谓CMMI?

     CMMI全称是Capbility Maturity Model Integration,即集成的能力成熟度模型,是由美国国防部与卡内基-梅隆大学和美国国防工业协会共同开发和研制,与2002年4月推出了系统工程和软件工程的集成成熟度模型。CMMI是一套融合多学科的、可扩充的产品集合,同时也是工程实践与管理方法。

     CMMI能够解决现有的不同CMM模型的重复性、复杂性,并减少由此引起的成本、缩短改进过程,她将软件CMM2.0版草案(SW-CWW)、EIA过渡标准731(系统工程CMM)及IPD-CMM集成为一体,同时还与ISO15504相兼容。与原有的能力成熟度模型CMM相比,CMMI涉及面更广,专业领域覆盖软件工程、系统工程、集成产品开发和系统采购。

  CMMI自出道以来,它所达到的目标就没有变过,第一个是质量,第二个是时间表,第三就是要用最低的成本。不过特别强调的是,CMMI不是传统的、仅局限于软件开发的生命周期,它应该被运用于更广泛的一个范畴——工程设计的生命周期。TSP的建立,也是为了支持CMMI的这样一个系统。

  那么CMMI究竟是什么呢?它并不是一个过程,也不是告诉你怎么去做一件事情。如果用一句话来概括什么是CMMI,它就是各个进程的一个关键的元素,在很多领域里面一个集成的点。它是这样的一个基本架构,能够用来度量你的有效性和实用性;能够找出这样的一些机会,继续改进的机会,包括在商业目标、策略还有降低项目的风险等方面。

  CMMI与CMM的区别呢?CMMI即CMM集成,是系统工程和软件工程的集成成熟度模型,CMMI更适合于信息系统集成企业。CMMI是在CMM基础上发展起来的,它继承并发扬了CMM的优良特性,借鉴了其他模型的优点,融入了新的理论和实际研究成果。它不仅能够应用在软件工程领域,而且可以用于系统工程及其他工程领域。