﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-乱游的空间-文章分类-软件能力成熟度模型 - Capability Maturity Model(CMM)</title><link>http://www.blogjava.net/tammytian/category/25359.html</link><description /><language>zh-cn</language><lastBuildDate>Tue, 28 Aug 2007 20:35:53 GMT</lastBuildDate><pubDate>Tue, 28 Aug 2007 20:35:53 GMT</pubDate><ttl>60</ttl><item><title>探讨软件成熟度模型(部分摘自软件世界-徐瑞恩)  </title><link>http://www.blogjava.net/tammytian/articles/140611.html</link><dc:creator>乱游</dc:creator><author>乱游</author><pubDate>Tue, 28 Aug 2007 10:03:00 GMT</pubDate><guid>http://www.blogjava.net/tammytian/articles/140611.html</guid><wfw:comment>http://www.blogjava.net/tammytian/comments/140611.html</wfw:comment><comments>http://www.blogjava.net/tammytian/articles/140611.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/tammytian/comments/commentRss/140611.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tammytian/services/trackbacks/140611.html</trackback:ping><description><![CDATA[<p class=content style="FONT-SIZE: 10pt"><strong>软件能力成熟度</strong>是属于软件质量和软件生产组织管理问题。<br>这里，先给出软件质量概念；然后讨论软件质量模型；最后评论软件质量控制方法。<br><br><strong>1.软件质量概念和问题<br></strong>&nbsp;&nbsp;&nbsp;软件质量是一模糊的、捉摸不定的概念。对于什么是产品质量，可以从以下几个观点来看：<br>* 透明性观点:质量是产品一种可以认识但不可定义的性质;<br>* 使用者观点:质量是产品满足使用目的之程度;<br>* 制造者观点:质量是产品性能和规格要求的符合度;<br>* 产品观点:质量是联结产品固有性能的纽带; <br>* 基于价值观点:质量依赖于顾客愿意付给产品报酬的数量。<br><br>&nbsp;&nbsp;&nbsp;&nbsp; 概括地说，有<strong>三类方法来改进软件质量:</strong>控制软件生产过程、提高软件生产者组织性和软件生产者个人能力，已经应用的著名的方法有： <br>＊ <strong>净化软件工程(Clearnroom Software Engineering)</strong>：这是把软件生产过程，放在统计质量控制下的软件工程管理过程。其特点是:劳动质量管理、重视生产过程和定量分析。这一方法的本质是干干净净生产，以求提高产品质量。<br>＊ 评估软件能力成熟度：用<strong>软件能力成熟度模型（CMM：Capability Maturity Model）</strong>来评估软件生产组织研制软件能力的成熟度。CMM是从软件生产组织过程角度，来评估其生产能力和技术水平。软件能力成熟度分5级，当前一般的软件生产组织的软件能力成熟度水平没超过3级。<br>＊ 提高软件生产力和个人技能：用<strong>人事软件过程（PSP：Personal Software Process）</strong>作为一个工具和方法，它给软件工程师提供了测量和分析的工具，并帮助他（她）们理解自己的软件生产水平和技巧的高低，以求得到提高。<br><br>&nbsp;&nbsp;&nbsp;&nbsp; 软件质量和很多研究领域及实际问题有关，<strong>主要相关领域和因素</strong>有：<br>&nbsp;&nbsp;&nbsp;&nbsp; <strong>需求工程(RE：Requirements Engineering), </strong>理论上，需求工程是应用已被证明的原理、技术和工具，帮助系统分析人员理解问题或描述产品的外在行为。<br>&nbsp;&nbsp;&nbsp;&nbsp; <strong>软件复用(SR：Software Reuse), </strong>定义为利用工程知识或方法，由一已存在的系统，来建造一新系统, 这种技术，可改进软件产品质量和生产率。还有软件检查、软件计量、软件可靠性、软件可维修性、软件工具评估和选择等。 <br><br><strong>2.软件质量模型</strong>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp; <strong>McCall模型<br></strong>&nbsp;&nbsp;&nbsp;&nbsp; McCall，J.A. 等人对软件质量因素进行了研究，将软件需求按照3个纬度对11个软件质量因素进行分类。其模型分为三层：因素、准则、计量。这就是说，软件质量是正确性、可靠性、效率&#8230;&#8230;的函数。正确性、可靠性、效率&#8230;&#8230;称之为软件质量因素，或软件质量特征。每一因素又由一些准则来衡量，例如正确性由跟踪性、完全性、相容性来判断；而每一准则又有一些定量化指标来计量。McCall模型可用下图表达。 </p>
<p style="FONT-SIZE: 10pt"><img height=295 src="http://www.uml.org.cn/cmm/images/deepcmm-1.jpg" width=338>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;<img height=230 alt="" src="http://www.blogjava.net/images/blogjava_net/tammytian/1.JPG" width=355 border=0>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp; 软件质量特征，在国际标准化组织<strong>软件质量测量标准（ISO9126）</strong>&#8220;信息技术----软件产品评估----和应用指南&#8221;中，给出了一些定义（和McCall，J.A. 等人软件质量因素不尽相同）如下表1。<br><img height=258 alt="" hspace=8 src="http://www.blogjava.net/images/blogjava_net/tammytian/2.JPG" width=528 border=0><br><br></p>
<p style="FONT-SIZE: 10pt">&nbsp;&nbsp;&nbsp;&nbsp; 还有人提出了<strong>软件质量计量模型（SQM：Software Quality Metrics Model)</strong>。软件质量计量模型是把软件质量因素-准则-计量三者综合的软件质量结构模型；其思路如图2示。 <br>图2<img height=176 src="http://www.uml.org.cn/cmm/images/deepcmm-2.jpg" width=472>&nbsp;&nbsp; </p>
<p style="FONT-SIZE: 10pt">&nbsp;&nbsp;&nbsp;&nbsp; 可把SQM改为<strong>目标规则检查计量层次结构（GRCM）模型</strong>：例如评估可读性、可扩充性。<br>&nbsp;&nbsp;&nbsp;&nbsp; 规则1:可读性----目的在于理解类结构，界面和方法。&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp; 规则2:可扩性----目的在于可以扩充，保持先进性。&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp; 要进行：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 可读性检查.1<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 查看在一个类中方法数目是否小于20 * 计量1.1 方法个数(NIS)&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 可读性检查.2<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 查看在一个类层次机构层次数是否小于6 * 计量2.1 层次结构的层数(HNL) (从底层开始数)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 可读性检查.3&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;查看在一个子类服务于子类是否合理 * 计量3.1 方法不理会需求的个数(NMO) <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#8230;&#8230;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 一般的思路是：<br>&nbsp;&nbsp;&nbsp;&nbsp; 在GRCM结构中，因素（Factor）对应于目的（Goal）；准则（Criteria）对应于规则（Rules）。关于计量（Metric）可以参考[2]。<br><br>&nbsp;&nbsp;&nbsp;&nbsp; <strong>SQM综合模型和ISO9216对比</strong>如图3所示：<br>&nbsp; 图3<img style="WIDTH: 472px; HEIGHT: 183px" height=183 alt="" hspace=8 src="http://www.uml.org.cn/cmm/images/deepcmm-3.jpg" width=472 border=0></p>
<p style="FONT-SIZE: 10pt">&nbsp;&nbsp;&nbsp;&nbsp; <strong>GRCM模型在软件工程过程中的作用和地位</strong>如图4所示：</p>
<p style="FONT-SIZE: 10pt">图4<img height=169 src="http://www.uml.org.cn/cmm/images/deepcmm-4.jpg" width=472></p>
<p style="FONT-SIZE: 10pt"><br>实际上，软件质量特性通过有形的质量载体性质表达。而这可由一些计量（定量化）指标表示。</p>
<p style="FONT-SIZE: 10pt"><span style="COLOR: #000000"><strong>软件生产部门能力成熟模型</strong></span> <strong style="COLOR: #000000"><font color=#002c99>Capability Maturity Model(CMM)</font><br></strong>1993年，美国防部设在卡内基-梅隆大学的软件研究所（SEI）正式发表了能力成熟度模型。这是评估软件生产部门（组织、厂家）软件生产能力成熟度的模型，是从软件生产组织过程角度，来评估其达到的水平级别。它分5级（如图5），当前我国一般的软件生产组织的水平没超过3级。&nbsp;</p>
<p style="FONT-SIZE: 10pt"><img height=295 src="http://www.uml.org.cn/cmm/images/deepcmm-5.jpg" width=423><br>图5<br><br>&nbsp;&nbsp;&nbsp;&nbsp; <strong>这5个级别包含18项内容</strong>：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong>5（优化）</strong>：过程变化管理、技术变化管理、缺点防止；<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong>4（管理）</strong>：软件质量管理、过程定量化管理；&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong>3（确定）</strong>：仔细观察、整体协调、软件生产工程、集成软件管理、训练规划、组织过程确定、组织过程中心点；<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong>2（重复）</strong>：软件构形管理、软件质量保证、软件合同管理、软件工程跟踪和统筹、软件工程计划、需求管理；<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong>1（初始）</strong>：经验和个人行为。<br><br>&nbsp;&nbsp;&nbsp;&nbsp; 还可以进一步分解,例如：软件工程跟踪和统筹可分解为13项活动。软件生产组织的这13项活动水平，可进行评分；0分；1分;2分&#8230;&#8230;9分；10分。比如第6项，软件计划费用跟踪并采取修正。评分标准是0～10，分为：差－0分；弱－2分；中等－4分；基本合格－6分；合格－8分；优秀－10分。事实上，每一级别、每一项内容都有丰富的内涵，为CMM实施奠定了基础。<br>&nbsp;&nbsp;&nbsp;&nbsp; 目前，SEI研制和保有的能力成熟度模型有： <br>* 软件集成能力成熟度模型（CMMISM： CMM IntegrationSM ）；<br>* 软件能力成熟度模型（SW-CMM ：Capability Maturity Model(r) for Software）； <br>* 人力能力成熟度模型（ P-CMM ：People Capability Maturity Model ）；<br>* 软件采办能力成熟度模型（SA-CMM：Software Acquisition Capability Maturity Model ）；<br>* 系统工程能力成熟度模型（SE-CMM： Systems Engineering Capability Maturity Model ）；<br>* 一体化生产研制能力成熟度模型（ IPD-CMM ：Integrated Product Development Capability Maturity Model ）。<br>建立这些模型的指导思想和方法论，都是一样的：评估能力，发现问题，帮助改进。</p>
<p style="FONT-SIZE: 10pt"><strong>3.软件质量</strong>—系统工程问题和系统方法<br>&nbsp;&nbsp;&nbsp;&nbsp; 软件质量是一复杂系统工程问题，它必需用系统方法（Systems Approach）来研究。软件研制是一过程，是以个人智力为基础的有组织的团队性生产活动。这一过程可用水滴模型或螺旋模型来描述，基本内容是：需求、设计、编程、测试、运用，如图6所示。 <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 图6<img height=295 src="http://www.uml.org.cn/cmm/images/deepcmm-6.jpg" width=411></p>
<p style="FONT-SIZE: 10pt">&nbsp;&nbsp;&nbsp;&nbsp; 用全面质量管理思想方法，把软件研制和运用过程全寿命全系统科学的管理，这就是我们的软件质量管理观点和思路，可称之为软件质量系统管理。这是保证软件质量的必由之路。根本原因在于，影响软件质量的因素太多、太复杂。软件质量系统管理，是要把上述水滴模型的每一阶段、每一步骤都管起来。例如，对设计、编程和测试活动的质量保证，如图7所示。 <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 图7<img height=295 src="http://www.uml.org.cn/cmm/images/deepcmm-7.jpg" width=424></p>
<p style="FONT-SIZE: 10pt">&nbsp;&nbsp;&nbsp;&nbsp; 图7中，拿显微镜这位老专家，代表质量系统管理组，根据质量管理规范、程序和方法，实施其质量管理职责。重要的问题在于质量管理规范、程序和方法制定与选择，必需从三个方面进行研究和实施： <br>* 软件生产组织；<br>* 软件生产过程；<br>* 软件生产者个人。&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp; 给定软件生产组织环境和个人水平，研究软件生产规律，通过生产过程质量特性计量，反过来对软件质量进行控制。把软件质量控制和软件可靠性、可维修性、测试和监控接合起来。当前，对软件生产组织可用CMM方法，评估其能力成熟程度; 用个人能力软件评价其软件生产水平。然后，再深入软件生产过程中，研究软件计量（定量）和质量控制方法，就能够取得成功。</p>
<p style="FONT-SIZE: 10pt"></p>
<!-- #EndEditable -->
<p class=content style="FONT-SIZE: 10pt"><br></p>
<img src ="http://www.blogjava.net/tammytian/aggbug/140611.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tammytian/" target="_blank">乱游</a> 2007-08-28 18:03 <a href="http://www.blogjava.net/tammytian/articles/140611.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>