CMM与CMMI的关系

文章目录

  • CMM
    • 一:简介
    • 二:CMM等级
    • 三:CMM的基本思想
    • 四:引进CMM的主要意义
      • 1.对软件公司
      • 2.对软件项目发包单位和软件用户
  • CMMI
    • 一:简介
    • 二:CMMI背景介绍
    • 三:CMMI的基本思想
    • 四:CMMI模型的表示法
      • 1.阶段式表示法
      • 2.连续式表示法
  • CMMI与CMM的区别
  • 补充
    • 一:体系结构
      • 1.框架
      • 2.结构
    • 二:实施思考

CMM

体系结构
CMM是指“能力成熟度模型”,其英文全称为Capability Maturity Model for Software,英文缩写为SW-CMM,简称CMM。它是对于软件组织在定义、实施、度量、控制和改善其软件过程的实践中各个发展阶段的描述。CMM的核心是把软件开发视为一个过程,并根据这一原则对软件开发和维护进行过程监控和研究,以使其更加科学化、标准化、使企业能够更好地实现商业目标。此外还是化妆品的名字。

一:简介

CMM(Capability Maturity
Model)是能力成熟度模型的缩写,CMM是国际公认的对软件公司进行成熟度等级认证的重要标准。CMM的工作最早开始于86年11月,当时为满足美国政府评估软件供应商能力并帮助其改善软件质量的要求,由美国国防部资助的卡内基—梅隆大学的软件工作研究所(SEI)牵头,在Mitre公司协助下,于87年9月发布了一份能力成熟度框架(Capability Maturity Framework)以及一套成熟度问卷(Maturity Questionnaire)。四年后,SEI在总结自87年以来对成熟度框架和初版成熟度问卷的经验基础上,推出了CMM1.0版。CMM1.0版在成熟度框架的基础上建立了一个可用的模型,该模型可以更加有效地帮助软件公司建立和实施过程改进计划。两年后,SEI于93年推出了CMM1.1版。近几年,SEI又推出了CMM2.0版,同时进入了ISO体系,称为ISO/IEC15504(软件过程评估)。

二:CMM等级

CMM共分五级。在每一级中,定义了达到该级过程管理水平所应解决的关键问题和关键过程。每一较低级别是达到较高级别的基础。其中五级是最高级,即优化级,达到该级的软件公司过程可自发地不断改进,防止同类问题二次出现;四级称为已管理级,达到该级的软件公司已实现过程的定量化;三级为已定义级,即过程实现标准化;二级为可重复级,达到该级的软件公司过程已制度化,有纪律,可重复;一级为初始级,过程无序,进度、预算、功能和质量等方面不可预测。

CMM致力于软件开发过程的管理和工程能力的提高与评估。该模型在美国和北美地区已得到广泛应用,同时越来越多的欧洲和亚洲等国家的软件公司正积极采纳CMM,CMM实际上已成为软件开发过程改进与评估事实上的工业标准。如今,全球通过CMM五级评估的软件公司大约有十几家,三级以上的大约有100余家,通过二级评估的有300家左右。软件大国印度在这方面工作开展的比较广泛,受益匪浅。,该公司表示将争取早日通过CMM三级评估。

CMM与ISO9000的主要区别:
1.CMM是专门针对软件产品开发和服务的,而ISO9000涉及的范围则相当宽。
2.CMM强调软件开发过程的成熟度,即过程的不断改进和提高。而ISO9000则强调可接收的质量体系的最低标准。

CMM与CMMI的关系_第1张图片

三:CMM的基本思想

CMM的基本思想是,因为问题是由我们管理软件过程的方法引起的,所以新软件技术的运用不会自动提高生产率和利润率。CMM有助于组织建立一个有规律的、成熟的软件过程。改进的过程将会生产出质量更好的软件,使更多的软件项目免受时间和费用的超支之苦。软件过程包括各种活动、技术和用来生产软件的工具。因此,它实际上包括了软件生产的技术方面和管理方面。CMM策略力图改进软件过程的管理,而在技术上的改进是其必然的结果。

必须牢记,软件过程的改善不可能在一夜之间完成,CMM是以增量方式逐步引入变化的。CMM明确地定义了5个不同的“成熟度”等级,一个组织可按一系列小的改良性步骤向更高的成熟度等级前进。

整个企业将会把重点放在对过程进行不断的优化,采取主动的措施去找出过程的弱点与长处,以达到预防缺陷的目标。同时,分析各有关过程的有效性资料,作出对新技术的成本与效益的分析,并提出对过程进行修改的建议。达到该级的公司可自发的不断改进,防止同类缺陷二次出现。

CMM实施步骤CMM与CMMI的关系_第2张图片

在表中可以看出,CMM为软件的过程能力提供了一个阶梯式的改进框架,它基于以往软件工程的经验教训,提供了一个基于过程改进的框架图,它指出一个软件组织在软件开发方面需要哪些主要工作,这些工作之间的关系,以及开展工作的先后顺序,一步一步的做好这些工作而使软件组织走向成熟。CMM的思想来源于已有多年历史的项目管理和质量管理,自产生以来几经修订,成为软件业具有广泛影响的模型,并对以后项目管理成熟度模型的建立产生了重要的影响。尽管已有个人或团体提出了各种各样的成熟度模型,但还没有一个像CMM那样在业界确立了权威标准的地位。但PMI于2003年发布的OPM3以其立体的模型及涵盖范围的广泛有望成为项目管理界的新标准。

四:引进CMM的主要意义

1.对软件公司

1.提高软件公司软件开发的管理能力,因为CMM可提供软件公司自我评估的方法和自我提高的手段。
2.提高软件生产率。
3.提高软件质量。
4.提高软件公司的国内和国际竞争力。

2.对软件项目发包单位和软件用户

提供了对软件开发商开发管理水平的评估手段,有助于软件开发项目的风险识别。
我国CMM工作的开展相对滞后,全面正式开展CMM评估工作还需一定时间,但只是迟早的问题。业内有识之士呼吁我国应结合国情,及早开展CMM有关工作。

CMMI

一:简介

CMMI(Capability Maturity Model Integration,能力成熟度模型集成)
将各种能力成熟度模型(即:Software CMM、Systems Eng-CMM、People CMM和Acquisition CMM)整合到同一架构中去,由此建立起包括软件工程、系统工程和软件采购等在内的诸模型的集成,以解决除软件开发以外的软件系统工程和软件采购工作中的迫切需求。
CMMI框架包括软件能力成熟度模型CMM 2.0草案,系统工程能力成熟度模型,软件采购能力成熟度模型,继承产品和过程开发等。
CMMI的:“关键过程域”25个,“目标”105个, “关键实践”485条。
CMMI的评估方式:
自我评估:用于本企业领导层评价公司自身的软件能力。
主任评估:使本企业领导层评价公司自身的软件能力,向外宣布自己企业的软件能力。
CMMI的评估类型:
软件组织的关于具体的软件过程能力的评估。
软件组织整体软件能力的评估(软件能力成熟度等级评估)。

二:CMMI背景介绍

CMM是“软件能力成熟度模型”的英文简写,该模型由美国卡内基-梅隆大学的软件工程研究所(简称SEI)受美国国防部委托,于1991年研究制定,初始的主要目的是为了评价美国国防部的软件合同承包组织的能力,后因为在软件企业应用CMM模型实施过程改进取得较大的成功,所以在全世界范围内被广泛使用,SEI同时建立了主任评估师评估制度,CMM的评估方法为CBA-IPI。

CMMI是SEI于2000年发布的CMM的新版本。CMMI不但包括了软件开发过程改进,还包含系统集成、软硬件采购等方面的过程改进内容。CMMI纠正了CMM存在的一些缺点,使其更加适用企业的过程改进实施。CMMI适用SCAMPI评估方法。需要注意的是,SEI没有废除CMM模型,只是停止了CMM评估方法:CBA-IPI。但CMMI模型最终代替CMM模型的趋势不可避免。

标准特点: CMM/CMMI/SPCA的思想来源于已有多年历史的产品质量管理和全面质量管理。Watts Humphrey和Ron
Radice在IBM公司将全面质量管理的思想应用于软件工程过程,收到了很大的成效。SEI的软件能力成熟度框架就是在以Humphrey为主的软件专家实践经验的基础上发展而来的。软件能力成熟度模型中融合了全面质量管理的思想,以5个不断进化的层次反映了软件过程定量控制中项目管理和项目工程的基本原则。CMM/CMMI/SPCA所依据的想法是只要不断地对企业的工程过程的基础结构和实践进行管理和改进,就可以克服软硬件生产中的困难,增强开发制造能力,从而能按时地、不超预算地制造出高质量的软件产品。

三:CMMI的基本思想

开发和应用CMMl的主要原因有三点:
一是软件项目的复杂性的快速增长使过程改进的难度增大,
二是软件工程的并行与多学科组合,
三是实现过程改进的最佳效益。

(1)解决软件项目的过程改进难度增大问题。CMM成功实施以后,极大地提高了软件企业的开发效率和软件产品的质量,从而也提高了软件产品的可靠性和软件产业的信誉,这样人们就对软件寄予了更大的希望。人们希望软件能够完成更多、更大、更复杂的任务。

(2)实现软件工程的并行与多学科组合。CMM模型的成功实践,促进了工程和产品开发的组织发生了巨大的变革,变革的目标主要是为了消除与分段开发有关的低效。在分段开发过程中,中间产品传给下一阶段的工作人员时,有可能要进行大量的返工,以纠正原先的理解错误。并行工程、交叉学科群组、交又功能群组、集成化产品群组以及集成化产品和过程开发等,都代表了在产品或服务的整个生命周期的合适时间内处理这类问题的不同方法。这种倾向意味着设计人员和客户要与制造人员、测试人员和用户共同工作,以支持开发需求的制造组织。这种工作方式蕴涵着所有关键的相关人员要支持产品或服务开发的所有阶段。

(3)实现过程改进的最佳效益。尽管过程改进存在复杂化的因素,但软件管理专家们相信,其中的许多障碍可以通过一个集成过程改进的公共模型来克服。这种信念反映了在集成方面所进行的工作和CMMl项目的作者和评审人员的经验。人们相信,正如通过CMM的过程改进能够产生显著的效益一样,集成过程改进也能产生更大的效益。

从根本上来说,过程改进集成主要影响四个领域:成本、侧重点、过程集成和灵活性。其中某些变化可能比另一些变化容易量化,但所有这些都体现了过程改进集成的真正优势。

四:CMMI模型的表示法

在CMMI中,每一种CMMI学科模型都有两种表示法:阶段式表示法和连续式表示法。
不同表示法的模型具有不同的结构。连续式表示法强调的是单个过程域的能力,从过程域的角度考察基线和度量结果的改善,其关键术语是“能力”;而阶段式表示法强调的是组织的成熟度,从过程域集合的角度考察整个组织的过程成熟度阶段,其关键术语是“成熟度”。

1.阶段式表示法

软件CMM是一种阶段式模型,该模型经过多年的成功使用已经被证明是有效的,这为选择阶段式表示法模型提供了最强有力的证据。考虑从不成熟组织向成熟组织的发展过程,阶段式表示法具有两方面优势。
首先,阶段式模型为支持组织的过程改进提供了一个过程平台,该模型将软件组织的软件能力成熟度描述为5级。对于着眼于改善过程成熟度的组织来说,阶段式模型提供了一种明确的、行之有效的跨越式发展途径。阶段式模型中所描述的组织的五个成熟度等级中,每实现一次等级间的跨越,组织就致力于解决某一方面的问题。例如,组织从成熟度等级1到成熟度等级2,主要致力于项目管理过程的改进;从成熟度等级2到成熟度等级3,主要致力于广泛的组织级过程的改进;从成熟度等级3到成熟度等级4,主要致力于过程定量管理的过程的改进;从成熟度等级4到成熟度等级5,主要致力于技术革新和优化过程的改进。通过这种方式,阶段式模型确定了组织进行过程改进的最佳次序。
其次,阶段式模型可以为组织定义一个过程成熟度等级,便于进行跨组织的比较。在阶段式模型中,每一个过程域都被指定归属到一个成熟度等级中。因此,基于阶段式模型为组织所定义的成熟度等级中,过程域的预期范围和应用将变得非常清晰。这样,在对不同的组织进行比较时,只要对比组织所达到的不同的成熟度等级,即可知道不同组织在执行过程域方面所存在的差别。
阶段式表示法存在两方面的缺点:一是阶段式表示法采用分组形式,将过程域划分到五个等级中。在一般情况下,一个组织要到达某一个等级,必须满足该等级及其低等级的所有过程域,因而缺乏灵活性。另外,阶段式表示法的每个等级都会出现同时进行多个过程改进的情况,因而工作量大,所花费的成本也很大。

2.连续式表示法

相比之下,连续式模型不如阶段式模型常用,采用连续式模型也有如下两方面的优势:
首先,连续式模型为用户进行过程改进提供了比较大的自由度。如同上面所说,阶段式模型确定了组织进行过程改进的最佳次序,但同时也限定了用户在进行过程改进时必须遵循单一的改善路径。而连续式模型则允许用户根据组织的业务目的来选择过程改进活动的次序。在连续式模型中,用户可以选择定义组织的成熟度等级,同时还可以选择定义更适合于自身业务环境的过程域的次序。组织可以在一个自己选择的次序中使过程域达到给定的能力等级,而不必遵循单一的阶段式模型的原则。
其次,基于连续式模型对组织的过程进行评估,其评估结果具有更好的可见性。在连续式模型中,可以为每个过程域定义多个能力等级,从而可以增强对过程改进中强项和弱点的认识。由于连续式模型是对每个个别的过程域进行单独的评定,并给出个别过程域的能力等级特征图,这样更便于观察。
连续式表示法也存在两方面的缺点:一是由于连续式表示法没有规定过程域应用的顺序,因而组织的过程改进需要软件过程改进专家的指导,以便确定组织需要改进的过程和改进的先后次序。另外,尽管组织应用连续式表示法进行了过程改进,但难以与其他软件组织进行组织间过程能力的比较。

CMMI与CMM的区别

1、CMM的基于活动的度量方法和瀑布过程的有次序的、基于活动的管理规范有非常密切的联系,更适合瀑布型的开发过程。

而CMMI相对CMM更一步支持迭代开发过程和经济动机推动组织采用基于结果的方法:开发业务案例、构想和原型方案;细化后纳入基线结构、可用发布,最后定为现场版本的发布。虽然CMMI保留了基于活动的方法,它的确集成了软件产业内很多现代的最好的实践,因此它很大程度上淡化了和瀑布思想的联系。

2、在CMMI模型中在保留了CMM阶段式模式的基础上,出现了连续式模型,这样可以帮助一个组织以及这个组织的客户更加客观和全面的了解它的过程成熟度。

同时,连续模型的采用可以给一个组织在进行过程改进的时候带来更大的自主性,不用再象CMM中一样,受到等级的严格限制。这种改进的好处是灵活性和客观性强,弱点在于由于缺乏指导,一个组织可能缺乏对关键过程域之间依赖关系的正确理解而片面的实施过程,造成一些过程成为空中楼阁,缺少其他过程的支撑。
两种表现方式(连续的和阶段的)从他们所涵盖的过程区域上来说并没有不同,不同的是过程区域的组织方式以及对成熟度(能力)级别的判断方式。

3、CMMI模型中比CMM进一步强化了对需求的重视。在CMM中,关于需求只有需求管理这一个关键过程域,也就是说,强调对有质量的需求进行管理,而如何获取需求则没有提出明确的要求。

在CMMI的阶段模型中,3级有一个独立的关键过程域叫做需求开发,提出了对如何获取优秀的需求的要求和方法。CMMI模型对工程活动进行了一定的强化。
在CMM中,只有3级中的软件产品工程和同行评审两个关键过程域是与工程过程密切相关的,而在CMMI中,则将需求开发,验证,确认,技术解决方案,产品集成这些工程过程活动都作为单独的关键过程域进行了要求,从而在实践上提出了对工程的更高要求和更具体的指导。

补充

一:体系结构

一个企业软件能力类似于一个人在一个特定领域的能力,是逐步获得和增长的。如果一个人在其领域的发展过程中能得到一个很好的指南,那么他或她就会不断达到一个个设定的目标,并变得成熟起来,否则可能会盲目发展,离自己的目标越来越远,甚至南辕北辙。一个企业的软件能力发展也同样需要一个良好的指南,SW-CMM正是这样一个指南,它以几十年产品质量概念和软件工业的经验及教训为基础,为企业软件能力不断走向成熟提供了有效的步骤和框架。

1.框架

SW-CMM为软件企业的过程能力提供了一个阶梯式的进化框架,阶梯共有五级。第一级实际上是一个起点,任何准备按CMM体系进化的企业都自然处于这个起点上,并通过这个起点向第二级迈进。除第一级外,每一级都设定了一组目标,如果达到了这组目标,则表明达到了这个成熟级别,可以向下一个级别迈进。CMM体系不主张跨越级别的进化,因为从第二级起,每一个低的级别实现均是高的级别实现的基础。

1.初始级初始级的软件过程是未加定义的随意过程,项目的执行是随意甚至是混乱的。也许,有些企业制定了一些软件工程规范,但若这些规范未能覆盖基本的关键过程要求,且执行没有政策、资源等方面的保证时,那么它仍然被视为初始级。
2.可重复级根据多年的经验和教训,人们总结出软件开发的首要问题不是技术问题而是管理问题。因此,第二级的焦点集中在软件管理过程上。一个可管理的过程则是一个可重复的过程,一个可重复的过程则能逐渐进化和成熟。第二级的管理过程包括了需求管理、项目管理、质量管理、配置管理和子合同管理五个方面。其中项目管理分为计划过程和跟踪与监控过程两个过程。通过实施这些过程,从管理角度可以看到一个按计划执行的且阶段可控的软件开发过程。
3.定义级在第二级仅定义了管理的基本过程,而没有定义执行的步骤标准,而且无论是管理还是工程开发都需要一套文档化的标准,并将这些标准集成到企业软件开发标准过程中去。所有开发的项目需根据这个标准过程,剪裁出与项目适宜的过程,并执行这些过程。过程的剪裁不是随意的,在使用前需经过企业有关人员的批准。
4.管理级第四级的管理是量化的管理。所有过程需建立相应的度量方式,所有产品的质量(包括工作产品和提交给用户的产品)需有明确的度量指标。这些度量应是详尽的,且可用于理解和控制软件过程和产品。量化控制将使软件开发真正变成为一种工业生产活动。
5.优化级第五级的目标是达到一个持续改善的境界。所谓持续改善是指可根据过程执行的反馈信息来改善下一步的执行过程,即优化执行步骤。如果一个企业达到了这一级,那么表明该企业能够根据实际的项目性质、技术等因素,不断调整软件生产过程以求达到最佳。

2.结构

除第一级外,SW-CMM的每一级是按完全相同的结构构成的。每一级包含了实现这一级目标的若干关键过程域(KPA),每个KPA进一步包含若干关键实施活动(KP),无论哪个KPA,它们的实施活动都统一按五个公共属性进行组织,即每一个KPA都包含五类KP。

1.目标每一个KPA都确定了一组目标。若这组目标在每一个项目都能实现,则说明企业满足了该KPA的要求。若满足了一个级别的所有KPA要求,则表明达到了这个级别所要求的能力。
2.实施保证实施保证是企业为了建立和实施相应KPA所必须采取的活动,这些活动主要包括制定企业范围的政策和高层管理的责任。
3.实施能力实施能力是企业实施KPA的前提条件。企业必须采取措施,在满足了这些条件后,才有可能执行KPA的执行活动。实施能力一般包括资源保证、人员培训等内容。
4.执行活动执行过程描述了执行KPA所需求的必要角色和步骤。在五个公共属性中,执行活动是唯一与项目执行相关的属性,其余四个属性则涉及企业CMM能力基础设施的建立。执行活动一般包括计划、执行的任务、任务执行的跟踪等。
5.度量分析度量分析描述了过程的度量和度量分析要求。典型的度量和度量分析的要求是确定执行活动的状态和执行活动的有效性。
6.实施验证实施验证是验证执行活动是否与所建立的过程一致。实施验证涉及到管理方面的评审和审计以及质量保证活动。在实施CMM时,可以根据企业软件过程存在问题的不同程度确定实现KPA的次序,然后按所确定次序逐步建立、实施相应过程。在执行某一个KPA时,对其目标组也可采用逐步满足的方式。过程进化和逐步走向成熟是CMM体系的宗旨。

二:实施思考

CMM与CMMI的关系_第3张图片
应注意的是,并非实施了CMM软件项目的质量就能有所保障。CMM是一种资质认证,它可以证明一个软件企业对整个软件开发过程的控制能力。按照CMM的思想进行管理与通过CMM认证并不能划等号。CMM认证并不仅仅是在评估软件企业的生产能力,整个评估过程同时还在帮助企业完善已经按照CMM建立的科学工作流程,发现企业在软件质量、生产进度以及成本控制等方面可能存在的问题,并且及时予以纠正。

实施CMM对软件企业的发展起着至关重要的作用,CMM过程本身就是对软件企业发展历程的一个完整而准确的描述,企业通过实施CMM,可以更好地规范软件生产和管理流程,使企业组织规范化。

CMM的成功与否,与一个组织内部有关人员的积极参与和创造性活动是密不可分的,而且CMM并未提供实现有关子过程域所需要的具体知识和技能。在国内要想取得过程改进成功,必须做好以下的几点:软件过程改进必须有高级主管的支持与委托,并积极地管理过程改进的进展;中层管理的积极支持;责任分明,过程改进小组的威望高;基层的支持与参与极端重要;利用定量的可观察数据,尽快使过程改进成果可见,从而激励参与者的兴趣;将实施CMM与实施PSP和TSP有机地结合起来;为企业的商业利益服务,并要求同时相符的企业文化变革。

过程改善工作具有一切过程所具有的固有特征,即需要循序渐进,不能一蹴而就;需要持续改善,不能停滞不前;需要联系实际,不能照本宣读;需要适应变革,不能凝固不变。将CMM/PSP/TSP引人软件企业首先要对单位主管和主要开发人员进行系统的培训。另外一个有效的途径是自顶向下的课程培训,即从高层主管依次普及到下面的工程师。培训包括最基本的软件工程和CMM培训知识;专业领域知识等方面的培训;软件过程方面的培训。

CMM模型划分为5个级别,共计18个关键过程域,52个目标,300多个关键实践。每一个CMM等级的评估周期(从准备到完成)约需12-30个月。此期间应抽调企业中有管理能力、组织能力和软件开发能力的骨干人员,成立专门的CMM实施领导小组或专门的机构。同时设立软件工程过程组、软件工程组、系统工程组、系统测试组、需求管理组、软件项目计划组、软件项目跟踪与监督、软件配置管理组、软件质量保证组、培训组。各个小组完成自己的任务同时协调其他小组的工作。然后制定和完善软件过程,
按照CMM规范评估这个过程。CMM正式评估由CMU/SEI授权的主任评估师领导一个评审小组进行,评估过程包括员工培训、问卷调查和统计、文档审查、数据分析、与企业的高层领导讨论和撰写评估报告等,评估结束时由主任评估师签字生效。此后最关键的就是根据评估结果改进软件过程,使CMM评估对于软件过程改进所应具有的作用得到最好的发挥。

你可能感兴趣的:(软件质量保证与测试,cmm,cmmi)