软件能力成熟度模型(Capability maturity model for software,简称CMM),是1987年美国国防部委托卡内基·梅隆大学软件工程研究所(CMU/SEI)主持开发的。
1级———初始级。软件过程无序,进度、预算、功能、质量不可预测,企业一般不具备稳定的软件开发与维护环境。遇到问题时,常常放弃原定的计划, 而只专注于编程与测试。成功来自于杰出个人行为而非组织行为,因此,它不可重复,更换人员后成功便难以维持。
2级———可重复级。建立了管理软件项目的策略以及实现这些策略的过程。基于以往成功的项目经验来计划与管理新的项目,软件过程已制度化。项目计划和跟踪是确定且有效的,项目的软件过程是可控的,已有的成功经验是可重复的。
3级———已定义级。软件工程和管理活动被集成一个有机整体。建立了专门小组负责制定和实施标准软件过程;结合具体项目的特点,标准软件过程可经裁剪,形成项目定义软件过程。软件过程已实现了标准化,更具稳定性、重复性和可控性。
4级———已管理级。企业对产品与过程确立了定量的质量目标,并且度量清楚、连续。对所有项目的重要过程都进行生产率和质量度量。因此,软件产品具有可预期的高质量。达到该级的企业已实现了过程定量化。
5级———优化级。软件企业已把重点放在对过程的持续改进上,有意识地找出过程的弱点与不足,以达到预防缺陷的目标。同时,分析有关过程的有效性信息,对新技术进行成本与收益分析,提出对过程的改进建议。该级软件过程可自行不断改进,改进途径有两个:一个是对已有过程的渐进式改进;另一个则是有选择地使用新技术和新方法进行革新。软件过程的持续改进已作为日常业务加以策划和管理。
上述不同等级成熟度反映了软件过程能力的大小,从第1级到第5级,软件开发的计划精度越来越高,单位项目的生产周期越来越短,而单位成本则不断下降。SEI统计显示,达到CMM5级的软件企业,第1000行源程序代码的平均缺陷,仅为1级的8%;软件项目的开发周期约是1级的36%;而生产成本则是1级的19%。
根据软件产业的发展目标,研究CMM标准需注意以下问题:
(1)它仅指明该做什么,而没有指明如何做,它不是方法论,但我们在学习CMM时,可以从中学到分析问题的方法。
(2)它仅指明该做的关键内容,仅描述软件过程的本质属性,而非面面俱到。抓问题的主要方面的思想贯穿在整个CMM模型中。
(3)软件过程是指软件工程过程、软件管理过程和软件组织的过程三者的有机结合。软件工程过程是我们理解的常规的软件的需求分析、设计、编码、测试等过程; 软件管理过程是指为使软件工程过程顺利进行而实施的管理活动的集合。上述两个过程是以软件工程组为主的活动。软件组织的过程是企业级的对软件的组织活动, 是以企业为主的活动。
(4)它是从软件过程的角度考虑问题,而并非关注软件开发工具, 与框架软件生存周期无关, 也与所采用的开发技术无关。
(5)CMM为改善整个企业的软件过程提供了指南, 而并非针对某个具体项目。CMM并不能保证在这个过程框架下, 产品开发百分之百的成功。产品的成功是多种因素的组合,例如市场等因素。
(6)CMM1.1是针对大型软件企业(500人以上)的,对小型的软件企业(50人以下)需要裁减。
(7)CMM认为过程的不断改进基于许多小的、步骤的进化而不是革命性的创新。
(8)基于CMM的过程改善投资力度大、周期大,而技术投资则可能在短期内有较快回报。单独依靠技术改进可能在短期内取得较快回报, 但最终可能一无所获。
和ISO9001对比
ISO 9001与CMM均可作为软件企业的过程改进框架,其不同之处是,一个是“泛用”,一个是“专用”。ISO 9001标准面向合同环境,站在用户立场,要求对质量要素进行控制,规定了质量体系的最低标准。而CMM标准则强调软件开发过程的成熟度,即内部过程的不断改进和提高。在形式上,ISO9001审核只有“通过”和“不通过”两个结论,而CMM评定则是一个动态过程,软件组织在通过低级别评估后,可根据高级别的要求确定改进方略。
ISO 9001广泛适用于各个专业领域,而CMM是专门为软件组织设计的。按照学术界的看法,通过ISO 9001认证的软件企业,至少能满足CMM标准第2级的大部分要求,以及第3级的一部分要求。
和ISO/IEC 15504对比
ISO/IEC 15504是软件过程评估的国际标准,提供了一个软件过程评估的框架。名字中也可能加上TR,表示Technical Report。(TS表示Technical specification)
ISO/IEC 联合信息技术委员会(ISO/IEC JOINT TECHNICAL COMMITTEE FOR INFORMATION TECHNOLOGY )是国际标准化组织(ISO)和国际电工委员会(IEC)联合组建的第一个标准化技术委员会,其编号为JTC1。它在ISO和IEC共同领导下,承担信息技术领域国际标准制定工作,其重要性和影响力非同一般。
从英文翻译而来-名为“信息技术”的ISO / IEC JTC 1是国际标准化组织和国际电工委员会的联合技术委员会。其目的是制定,维护和促进信息和通信技术领域的标准。JTC 1负责许多关键的IT标准,从联合图像专家组的图像格式和运动图像专家组的音频和视频格式到C和C ++编程语言。
ISO/IEC JTC 1, entitled "Information technology", is a joint technical committee (JTC) of the International Organization for Standardization (ISO) and the International Electrotechnical Commission (IEC).
Its purpose is to develop, maintain and promote standards in the fields of information and communications technology (ICT).
国际标准化组织和国际电工委员会这两大国际顶尖的标准化机构,长期以来,形成了即有明确的业务分工,同时相互协作的良性互动关系,具体的说,IEC负责电工技术领域的国际标准制定工作,其它领域则由ISO负责。
能力成熟度模型(CMM)和ISO/IEC 15504是国际上关于软件过程能力评价的两个主要标准, 它们分别从不同的角度为组织的软件过程改进提供了方向. CMM着重于组织整体的软件过程能力, 为组织指引了一条软件过程改进的阶段性道路. ISO/IEC 15504则提供了一个两维的框架模型,通过软件过程和过程能力的定义,为过程能力改进设计了一条连续性的道路.
参考:
https://en.wikipedia.org/wiki/ISO/IEC_JTC_1