关于CMM的问题
的有关信息介绍如下:什么是CMM 日前,国务院发布的《鼓励软件产简知业和集成电路产业发展的若干政策》中第17条中表示,将对软件出口型企业CMM认证费用予以适当支持,那么CMM是什么呢? CMM是能力成熟度模型(capabilityMaturityModel)的缩写,是一种用于评价软件承包能力并帮助其改善软件质量的方法,侧重于软件开发过程的管理及工程能力的提高与评估。CMM分为五个等级:一级为初始级,二级为可重复级,三级为已定义级,四级为已管理级,五级为优化级。 CMM是由美国卡内基梅隆大学软件工程研究所1987年研制成功的,是目前国际上最流行最实用的软件生产过程标准和软件企业成熟度等级认证标准。目前,我国已有软件企业通过了CMM标准认证。 ********************************************CMM是软件过程能力成熟度模型(Capacity Maturity Model)不过这东西被上一期csdn杂志上一篇文章鄙视过。CMM简介 CMM是软件过程能力成熟度模型(Capacity Maturity Model)的简称,是卡内基-梅隆大学软件工程研究院为了满足美国联腔咐大邦政府评估软件供应 商能力的要求,于1986年开始研究的模型,并于1991年正式推出了CMM 1.0 版。CMM自问世以来备受关注,在一些发达国家和地区得到了广泛应用,成为衡量软件公司软件开发管理水平的重要参考因素和软件过程改进事实上的工业标准。据了解,美国、印度、日本等国家已有数十家公司通过了CMM不同等级的认证。 1986年11月,SEI应美国联邦政府的要求,在Mitre公司的协助下,于1987年9月开发了一套软件能力成熟度框架和一套软件成熟度问卷,用来评估软件供应商的能力。这就是最早用于探索软件过程成熟度的一个工具。四年以后,也就是1991年,SEI自己总结了CMM成熟度框架和初版成熟度问卷的实践经验,并以此为基础推出民用CMM1.0版。CMM1.0版合用两年之后,1992年4月,SEI举行了CMM一个的研讨会,参加研讨会的有大约200名富有经验的软件专家。SEI在广泛听取他们的意见之后,又于1993年推出 CMM1.1版。这也是目前世界上比较流行和通用的CMM版本。十几年来,此项工作一直在不断进行。按照SEI原来的计划,CMM的改进版本2.0应该在1997年11月完成,然后在取得版本2.0得实践反馈意见之后,在1999年完成准CMM2.0版本。但是,美国国防部办公室要求SEI推迟发布CMM2.0版本,而要先完成一个更为紧迫得项目CMMI。 CMMI(Capability Maturity Model Integration)即能力成熟度模型集成,这也是美国国防部的一个设想,他们想把现在所有的以及将被发展出来的各种能力成熟度模型,集成到一个框架中去。这个框架有两个功能,第一,软件获取方法的改革;第二,建立一种从集成产品与过程发展的角度出发、包含健全的系统开发原则的过程改进。随着人们对CMM研究的不断深入,其他学科也结合本系统的特点,陆续推出了自己的CMM模型。例如,人力资源能力成熟度模型、系统工程能力成熟度模型等等。为了以示区别,国内外很多资料把CMM叫做SW-CMM。 软件过程成熟度的提高是一个渐进的过程,需要一个长远的、可持续发展的过程作为保证。为建立一个面向过程持续提高的基础和文化,有些软件企业可能要花费很大的精力和时间。但是这种努力对任何一个软件企业来说都是非常必要的。CMM目前代表着软件发展的一种思路,一种提高软件过程能力的途径。尽管它存在着某些不足。例如,成熟级别、关键过程域、公共属性和关键实践伍竖还需要在软件行业进一步深入地讨论和修订,但它确实为软件行业的发展提供了一个良好的框架,而且是浓度软件过程能力提高的有用工具。 增强我国软件企业的竞争力,提高国产软件的水平是国人的共同愿望,但目前我国软件水平,尤其是软件开发能力和软件生产能力还很差,这也是不争的事实。那么,如何提高我国软件的开发和生产能力,从而提高软件整体水平?软件企业实施CMM也许不失为一条有效的途径。 一个企业的软件能力更取决于该企业的过程能力,特别是在软件开发和生产中的成熟度。其过程能力越是成熟,该企业的软件生产能力 就越有保证。目前,我国已有一些软件企业正在尝试实施CMM。 当然,CMM不是万能的,并不一定对所有的软件企业都适合,实施CMM的企业也有失败的例子。我们希望通过本专栏能使更多的企业了解CMM,尽快找到适合本企业的发展之路,从而提高中国软件企业的竞争力。**********************************************画一个图吧:(CMM的五层结构图) ----------------- / 优 化 级 / / (5) / ----------------- ↑ | 不断改进的过程 | ----------------- / 可 管 理 级 / / (4) / ----------------- ↑ | 能预见的过程 | ----------------- / 确 定 级 / / (3) / ----------------- ↑ | 标准一致的过程 | ----------------- / 可 重 复 级 / / (2) / ----------------- ↑ | 有纪律的过程 | ----------------- / 初 始 级 / / (1) / ----------------- ********************************************* 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年发布。 CMM致力于软件开发过程的管理及工程能力的提高与评估。该模型在美国和北美地区已得到广泛应用同时正在被越来越多的欧洲和亚洲等国家的大型信息技术企业所采纳,实际上已成为软件开发过程改进与评估的事实上的工业标准。 CMM将软件过程的成熟度分为5个等级,以下是5个等级的软件机构的特征: (1)初始级(initial) 工作无序,项目进行过程中常放弃当初的计划。管理无章,缺乏健全的管理制度。开发项目成效不稳定,优秀管理人员的管理方法可能取得有效,但他一离去,工作秩序面目全非,产品的性能和质量依赖于个人能力和行为。 (2)可重复级(Repeatable) 管理制度化,建立了基本的管理制度和规程,管理工作有章可循。 初步实现标准化,开发工作较好地实施标准。 变更依法进行,做到基线化。稳定可跟踪,新项目的计划和管理基于过去的实践经验,具有重复以前成功项目的环境和条件。 (3)已定义级(Defined) 开发过程,包括技术工作和管理工作,均已实现标准化、文档化。 建立了完善的培训制度和专家评审制度 全部技术活动和管理活动均可控制 对项目进行中的过程、岗位和职责均有共同的理解 。 (4)已管理级(Managed) 产品和过程已建立了定量的质量目标。过程中活动的生产率和质量是可量度的。已建立过程数据库。已实现项目产品和过程的控制。可预测过程和产品质量趋势,如预测偏差,实现及时纠正。 (5)优化级(Optimizing) 可集中精力改进过程,采用新技术、新方法。拥有防止出现缺陷、识别薄弱环节以及加以改进的手段。可取得过程有效性的统计数据,并可据进行分析,从而得出最佳方法。 软件大国印度,十分重视软件开发过程的管理及与其相关的理论与标准的发展。据统计,在印度的2000多家软件公司中有75家软件公司通过了ISO9000认证, 60多家软件公司通过了CMM认证,其中达到CMM5级一家,4级三家,3级4家。CMM与ISO9000的区别主要有以下几点:1.CMM是专门针对软件产品开发及服务的,而ISO9000则有宽得多的范围。2.CMM强调软件开发过程的成熟度,即过程的不断改进和提高,而ISO9000则仅描述可接收的质量体系的最低标准。3.CMM3级的覆盖范围要大于ISO9000的覆盖范围 引进CMM的意义:1. 对软件企业:提高软件开发的管理能力:CMM提供了软件企业自我评估的方法和自我提高的手段 提高软件生产率 加强软件生产的国际竞争力2. 对软件项目发包单位和软件用户:提供了对软件开发商开发管理水平的评估手段,有助于软件开发项目的风险识别。 ***********************************************随着人们对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) 人力资源能力成熟度模型 为了以示区别,国内外很多资料把CMM叫做SW-CMM。按照SEI原来的计划,CMM的改进版本2.0应该在1997年11月完成,然后在取得版本2.0得实践反馈意见之后,在1999年完成准CMM2.0版本。但是,美国国防部办公室要求SEI推迟发布CMM2.0版本,而要先完成一个更为紧迫的项目CMMI。 CMMI(Capability Maturity Model Integration)即能力成熟度集成模型,这也是美国国防部的一个设想,他们想把现在所有的以及将被发展出来的各种能力成熟度模型,集成到一个框架中去。这个框架有两个功能,第一,软件采购方法的改革;第二,建立一种从集成产品与过程发展的角度出发、包含健全的系统开发原则的过程改进。就软件而言,CMMI是SW-CMM的修订本。它兼收了SW-CMM 2.0版C稿草案和SPA中更合理、更科学和更周密的优点。SEI在发表CMMI-SE/SW 1.0版时,宣布大约用两年的时间完成从CMM到CMMI的过渡。 CMMI项目更为工业界和政府部门提供了一个集成的产品集,其主要目的是消除不同模型之间的不一致和重复,降低基于模型改善的成本。CMMI将以更加系统和一致的框架来指导组织改善软件过程,提高产品和服务的开发、获取和维护能力 *********************************************CMM的发展过程 1984年美国国防部为降低采购风险,委托卡耐基—梅隆大学软件工程研究院(SEI)制定了软件过程改进、评估模型,也称为SEI SW-CMM。该模型于1991年正式推出,迅速得到广大软件企业及其顾客的认可。从1987年SEI推出SW-CMM框架开始,1991年推出 CMM 1.0 版,1993年推出CMM 1.1 版,2000年推出CMMI-SE/SW 1.0版。我国也于2001年4月发布了《SJ/T 11234-2001 软件过程能力评估模型》和《SJ/T 11235-2001 软件能力成熟度模型》两个标准。我国政府一直重视软件产业的规范和发展,国务院于2000年6月颁发的“18号文件”第五章第十七条明确提出鼓励软件出口型企业通过ISO9000系列质量保证体系认证和CMM认证,其认证费用通过中央外贸发展基金适当予以支持。目前各省市、高新区、软件园都有对通过CMM的企业给予资金奖励的制度。********************************************** CMM的含义与作用 CMM是Capability Maturity Model for Software的简称,中文叫“软件能力成熟度模型”,是对组织软件过程能力的描述。CMM的核心是把软件开发视为一个过程,并根据这一原则对软件开发和维护进行过程监控和研究,以使其更加科学化、标准化,使企业能够更好的实现商业目标。它侧重于软件过程开发的管理及软件工程能力的改进与评估,因此CMM被用作评价软件承包商能力并帮助组织改善软件过程质量,是目前国际上最流行、最实用的一种软件过程改进模型,成为当今企业从事规模软件生产不可缺少的一项内容。CMM的目的是帮助软件企业对软件工程过程进行管理和改进,增强开发与改进能力,从而能按时地、不超预算地开发出高质量的软件。企业实施CMM模型并评估可为企业带来如下好处:指导软件组织提高软件开发管理能力;降低软件承包商和采购者的风险;评估软件承包商的软件开发管理能力;帮助软件企业识别开发和维护软件的有效过程和关键实践;帮助软件企业识别为达到CMM更高成熟等级所必须的关键实践;增加软件企业的国际竞争能力。**********************************************什么是CMM的核心?这是长期在有志于软件工程与过程改进的人中存在的一个问题。本人在一次CMM培训中准备了一个案例,希望能够生动而浅显地解释这个问题,在此与大家共享,也希望大家能提出更多问题。如要转载,请顺手给我发个Email:JennyLi@netease.com,非常感谢。案例背景:有一间房子,里面有一些人,一些杯子和水壶,以及用于烧水的用具,所有的人都需要喝开水。CMM 1级:过程:找到杯子和水壶倒水喝问题:找不到杯子,没水喝找不到水壶,没水喝水壶没水——不知道该怎么办一天要喝多少水——不知道倒一杯水要花多少时间,每个人每天为倒水花多少时间——不知道思考:买个饮水机能解决问题吗?CMM 2级:过程:杯子放在茶几上水壶放在餐台上如果水壶没水,在厨房烧水杯子用完要清洗,并放回茶几培训:厨房烧水,清洗杯子度量一天要烧几壶水,每个人每次/每天倒水要花多少时间有人检查是否所有人用完杯子后都清洗并放回餐台管理者关注这些活动的执行状态与成效问题:烧水太花时间水要等凉了才能喝效率不稳定:有人每天花20分钟倒水,有人每天花80分钟思考:买个饮水机能有帮助吗?CMM 3级:过程:所有人都先在茶几取杯子,再去餐台倒水统一用大杯子每人每次倒两杯水,与人分享指派专人定时烧水,放在凉水壶里指派专人定时收集和清洗杯子问题:怎样才能做得更好?思考:买个饮水机划算吗?CMM 4级:过程:建立评价模型:节省1分钟=节省1元钱,如果每人每天节省1分钟,则100个人1个月(30天)可以节省3000元——只要每月花费不超过3000元,我们就可以尝试新过程定义量化的管理目标:3个月内将每人每天用于倒水的时间减少2分钟以现在每人每天用于倒水的时间建立基线:平均10分钟,最少5分钟,最多20分钟每个人为自己制定优于平均值的目标:本人每天用于倒水的时间不超过6分钟度量并监控每天用于倒水的时间,一旦超过6分钟,要分析根本原因,并制定调整措施;最后结果是8分钟,超出预定的目标,但比平均值要好3个月后调整基线:平均8分钟,最低4分钟,最高15分钟问题:不改进不行了!思考:买个饮水机是最好的方案吗?CMM 5级:过程:发现问题的根本原因:倒水的时间之所以不能再少,是因为房间太大,走到餐台太远找出能够解决根本原因的所有方法,用评价模型进行评价选择一种方法,并制定改进的目标:买10个饮水机放在客厅里,每人每天节省2分钟制定相应的过程:如果买饮水机,则需要定期定购桶装水,定期对饮水机出水口进行清洗和消毒,请人及时更换空水桶试行过程:先找几个人试用,看看是否能达到预期目标推广:让所有人都用饮水机继续发现其它的根本原因……问题:怎样发现更多根本原因怎样引进更多新方法思考:还有什么比饮水机更好的方法吗? 比喻二: 一级:一群人没有经过训练,也不知道有没有经验,下水之后乱扑腾,有的人浮起来,有的人沉下去了。这就是一级的无序状态,结果是不可知的二级:大家都在游泳池或者小池塘里下过几次水,基本上在这样的条件下不会出事了。但是动作乱七八糟,有狗刨有说不出名字的动作。也就是二级的能够重复以前的成功经验三级:经过研究,确定了几种标准泳姿,知道自由泳最快,蛙泳最省力等等。这就是三级,有了标准的过程定义四级:大家都掌握标准动作之后,互相之间的成绩就可以比较了。通过测量大家的游泳成绩(当然不同泳姿的成绩要分开)、肌肉力量等等,分析特别好的和特别差的,找出好的原因和差的原因,大家的技术水平不断提高。这就是四级的量化控制,通过数据来管理和改进五级:大家的技术水平都很高了,动作都很完美。我们就通过创造新的泳姿,引入新式游泳衣等等创新来提高成绩。这就是五级的持续改进 **********************************************CMM的结构 SW-CMM为软件企业的过程能力提供了一个阶梯式的进化框架,阶梯共有五级。第一级实际上是一个起点,任何准备按CMM质进化的企业一般都处于这个起点上,并通过这个起点向第二级迈进。除第一级外,每一级都设定了一组目标,如果达到了这组目标,则表明达到了这个成熟级别,可以向下一个级别迈进。CMM系不主张跨越级别的进化,因为从第二级起,每一个低的级别实现均是高的级别实现的基础。SW-CMM提供阶梯式的进化框架 1.初始级 初始级的软件过程是未加定义的随意过程,项目的执行是随意甚至是混乱的。也许,有些企业制定了一些软件工程规范,但若这些规范未能覆盖基本的关键过程要求,且执行没有政策、资源等方面的保证时,那么它仍然被视为初始级。2.可重级 根据多年的经验和教训,人们总结出软件开发的首要问题不是技术问题而是管理问题。因此,第二级的焦点集中在软件管理过程上。一个可管理的过程则是一个可重级的过程,一个可重级的过程则能逐渐进化和成熟。第二级的管理过程包括了需求管理、项目管理、质量管理、配置管理和子合同管理五个方面。其中项目管理分为计划过程和跟踪监控过程两个过程。通过实施这些过程,从管理角度可以看到一个按计划执行的且阶段可控的软件开发过程。3.定义级 在第二级仅定义了管理的基本过程,而没有定义执行的步骤标准。在第三级则要求制定企业范围的工程化标准,而且无论是管理还是工程开发都需要一套文档化的标准,并将这些标准集成到企业软件开发标准过程中去。所有开发的项目需根据这个标准过程,剪裁出该项目的过程,并执行这些过程。过程的剪裁不是随意的,在使用前需经过企业有关人员的批准。4.管理级 第四级的管理是量化的管理。所有过程需建立相应的度量方式,所有产品的质量(包括工作产品和提交给用户的产品)需有明确的度量指标。这些度量应是详尽的,且可用于理解和控制软件过程和产品,量化控制将使软件开发真正变成为工业生产活动。 5.优化级 第五级的目标是达到一个持续改善的境界。所谓持续改善是指可根据过程执行的反馈信息来改善下一步的执行过程,即优化执行步骤。如果一个企业达到了这一级,那么表明该企业能够根据实际的项目性质、技术等因素,不断调整软件生产过程以求达到最佳。 从效果而言,在上述不同阶段,软件开发生产的成熟程度给软件企业带来了完全不同的效果。第一阶段到第五个阶段,软件开发生产的计划精度越来越高,每单位工程的生产周期越来越短,每单位工程的成本越来越低。 关键过程域(KPA) 除第一级外,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体系的宗旨。