﻿<?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>IT博客网-秋阳的软件测试专栏-随笔分类-01 静态测试</title><link>http://www.cnitblog.com/qiuyangzh/category/375.html</link><description /><language>zh-cn</language><lastBuildDate>Thu, 08 Mar 2007 05:20:58 GMT</lastBuildDate><pubDate>Thu, 08 Mar 2007 05:20:58 GMT</pubDate><ttl>60</ttl><item><title>PolySpace－－能够发现Run-Time Error的静态分析工具</title><link>http://www.cnitblog.com/qiuyangzh/archive/2006/01/18/6241.html</link><dc:creator>qiuyangzh</dc:creator><author>qiuyangzh</author><pubDate>Wed, 18 Jan 2006 08:53:00 GMT</pubDate><guid>http://www.cnitblog.com/qiuyangzh/archive/2006/01/18/6241.html</guid><wfw:comment>http://www.cnitblog.com/qiuyangzh/comments/6241.html</wfw:comment><comments>http://www.cnitblog.com/qiuyangzh/archive/2006/01/18/6241.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnitblog.com/qiuyangzh/comments/commentRss/6241.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/qiuyangzh/services/trackbacks/6241.html</trackback:ping><description><![CDATA[
		<p>一个好朋友给我介绍了一款他们公司代理的软件测试工具——PolySpace。我看了这款软件的功能说明，觉得非常不错，很有新意。<br /><br />  PolySpace是一款静态分析测试工具，它能对被测代码进行静态扫描，查找出可能存在Run-Time Error的代码段。我觉得这个功能可以说是创新性的。传统的静态分析工具，比如Logiscope，只能帮助使用人员分析程序的流程结构，统计程序的复杂性，或者是审查代码的编码规范性；而传统的Run-Time Error工具，比如著名的BoundChecker，以及Purify之类的工具，只能在运行被测代码的情况下，才能进行Run-Time Error的检查。<br /><br />  PolySpace这个工具结合了传统的静态分析工具和动态Run-Time Error工具二者的特点——测试执行方式是静态的，但能够发现Run-Time的错误。这种方式的最大好处就是——省去了我们制定测试用例的工作。因为对于传统的Run-Time Error工具来讲，只有执行到的代码，才能发现其中是否存在问题，对于没有被执行的代码，工具是无法检测其中是否存在Run-Time Error的，也就是要达到相当的代码覆盖率。但如果使用PolySpace这个工具，就不会有这个问题。这个工具的特点，非常适合在编码阶段对代码进行测试，尤其是核心模块。<br /><br />  当然，我现在已经过了对技术存在幻想和过份依赖的时期。我没有实际操作这款软件，但我猜想这款工具工具会存在如下类似的问题：运行时间会比较慢；定位的准确率不会太高，结果需要人工过滤等等。不过我觉得这仍是一款非常不错的软件（因为它解决了我们工作中的问题）。有合适的场合，我会想到它！<br /><br /></p>
<img src ="http://www.cnitblog.com/qiuyangzh/aggbug/6241.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/qiuyangzh/" target="_blank">qiuyangzh</a> 2006-01-18 16:53 <a href="http://www.cnitblog.com/qiuyangzh/archive/2006/01/18/6241.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C++编码规范</title><link>http://www.cnitblog.com/qiuyangzh/archive/2005/07/15/973.html</link><dc:creator>qiuyangzh</dc:creator><author>qiuyangzh</author><pubDate>Fri, 15 Jul 2005 13:30:00 GMT</pubDate><guid>http://www.cnitblog.com/qiuyangzh/archive/2005/07/15/973.html</guid><wfw:comment>http://www.cnitblog.com/qiuyangzh/comments/973.html</wfw:comment><comments>http://www.cnitblog.com/qiuyangzh/archive/2005/07/15/973.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.cnitblog.com/qiuyangzh/comments/commentRss/973.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/qiuyangzh/services/trackbacks/973.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 1 前言本编码规范针对C++语言。制定本规范的目的：提高代码的健壮性，使代码更安全、可靠；提高代码的可读性，使代码易于查看和维护。本文档分别对C++程序的格式、注释、标识符命名、语句使用、函数、类、程序组织、公共变量等方面做出了要求。规范分为两个级别——规则和建议。规则级的规范要求开发人员必须要遵守，建议级的规范开发人员应尽量遵守。各项目组在用C++语言或基于C++语言的开发工...&nbsp;&nbsp;<a href='http://www.cnitblog.com/qiuyangzh/archive/2005/07/15/973.html'>阅读全文</a><img src ="http://www.cnitblog.com/qiuyangzh/aggbug/973.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/qiuyangzh/" target="_blank">qiuyangzh</a> 2005-07-15 21:30 <a href="http://www.cnitblog.com/qiuyangzh/archive/2005/07/15/973.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>RuleChecker编码规范全文</title><link>http://www.cnitblog.com/qiuyangzh/archive/2005/07/15/971.html</link><dc:creator>qiuyangzh</dc:creator><author>qiuyangzh</author><pubDate>Fri, 15 Jul 2005 13:27:00 GMT</pubDate><guid>http://www.cnitblog.com/qiuyangzh/archive/2005/07/15/971.html</guid><wfw:comment>http://www.cnitblog.com/qiuyangzh/comments/971.html</wfw:comment><comments>http://www.cnitblog.com/qiuyangzh/archive/2005/07/15/971.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/qiuyangzh/comments/commentRss/971.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/qiuyangzh/services/trackbacks/971.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 1 前言本文挡详细描述了在Logiscope——Rulechecker中包含的所有编码规范。对每一条编码规范，分别给出了它的名称、规范的内容描述、参数（只针对可设置的规范）、遵守规范的好处以及示例。Rulechecker共包含81条编码规范，其中有30条左右可以对其内容进行定制，对于可定制编码规范的具体定制方法，可参见《RuleChecker可定制规则》。2 Rulechecker规则...&nbsp;&nbsp;<a href='http://www.cnitblog.com/qiuyangzh/archive/2005/07/15/971.html'>阅读全文</a><img src ="http://www.cnitblog.com/qiuyangzh/aggbug/971.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/qiuyangzh/" target="_blank">qiuyangzh</a> 2005-07-15 21:27 <a href="http://www.cnitblog.com/qiuyangzh/archive/2005/07/15/971.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>RuleChecker可定制编码规范</title><link>http://www.cnitblog.com/qiuyangzh/archive/2005/07/15/972.html</link><dc:creator>qiuyangzh</dc:creator><author>qiuyangzh</author><pubDate>Fri, 15 Jul 2005 13:27:00 GMT</pubDate><guid>http://www.cnitblog.com/qiuyangzh/archive/2005/07/15/972.html</guid><wfw:comment>http://www.cnitblog.com/qiuyangzh/comments/972.html</wfw:comment><comments>http://www.cnitblog.com/qiuyangzh/archive/2005/07/15/972.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/qiuyangzh/comments/commentRss/972.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/qiuyangzh/services/trackbacks/972.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 1 前言本文挡描述了在Logiscope——Rulechecker规则集中，可定制编码规则的定制方法。对于这些编码规则的解释说明，可参见《RuleChecker编码规范全文》。2 可定制编码规则集Rulechecker规则集中可定制的编码规则共有30条。通过设置，可以使这些规则更好的适应我们的实际要求。下面逐条对可定制编码规则的定制方法进行介绍。2.1 ansi 函数的声明和定义要...&nbsp;&nbsp;<a href='http://www.cnitblog.com/qiuyangzh/archive/2005/07/15/972.html'>阅读全文</a><img src ="http://www.cnitblog.com/qiuyangzh/aggbug/972.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/qiuyangzh/" target="_blank">qiuyangzh</a> 2005-07-15 21:27 <a href="http://www.cnitblog.com/qiuyangzh/archive/2005/07/15/972.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Logiscope-Audit函数度量元</title><link>http://www.cnitblog.com/qiuyangzh/archive/2005/07/15/966.html</link><dc:creator>qiuyangzh</dc:creator><author>qiuyangzh</author><pubDate>Fri, 15 Jul 2005 13:25:00 GMT</pubDate><guid>http://www.cnitblog.com/qiuyangzh/archive/2005/07/15/966.html</guid><wfw:comment>http://www.cnitblog.com/qiuyangzh/comments/966.html</wfw:comment><comments>http://www.cnitblog.com/qiuyangzh/archive/2005/07/15/966.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/qiuyangzh/comments/commentRss/966.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/qiuyangzh/services/trackbacks/966.html</trackback:ping><description><![CDATA[<H1 style="TEXT-ALIGN: justify"><A name=_Toc26609697><SPAN lang=EN-US>1 前言</SPAN></A></H1>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">本文挡描述的是</SPAN><SPAN lang=EN-US style="FONT-FAMILY: 宋体">Logiscope——Audit中函数作用域常用度量元的具体含义。<SPAN style="COLOR: gray"><?xml:namespace prefix = o /><o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">对每个度量元的解释分为以下几部分：<SPAN lang=EN-US><o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">首先是该度量元的原文名称，后面是该度量元的代号，跟在后面的是<SPAN lang=EN-US>Audit质量模型为该度量元设的参考值（用中括号括起。当然，对于这个范围值，我们可以对它进行修改），再往下就是对该度量元含义的具体解释。</SPAN></SPAN></P>
<H1 style="TEXT-ALIGN: justify"><A name=_Toc26609698><SPAN lang=EN-US>2函数度量元</SPAN></A></H1>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">下面分别介绍函数作用域中各个度量元</SPAN><SPAN style="FONT-FAMILY: 宋体">的具体含义</SPAN><SPAN style="FONT-FAMILY: 宋体">。注意，下面讨论的所有问题都是站在一个函数的角度上的，这一点对于我们理解这些度量元很重要。</SPAN></P>
<H2><A name=_Toc26609699><SPAN lang=EN-US>2.1 "Cyclomatic Number" : ct_vg <SPAN>&nbsp;&nbsp; </SPAN><SPAN>&nbsp;&nbsp; </SPAN>[ 1<SPAN>&nbsp;&nbsp; </SPAN>,<SPAN>&nbsp; </SPAN>10 ]</SPAN></A><SPAN lang=EN-US><SPAN>&nbsp;&nbsp;&nbsp; </SPAN><SPAN>&nbsp;&nbsp; </SPAN></SPAN></H2>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">度量元名称：函数的圈复杂度。</SPAN></P>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">解释说明：</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">函数圈复杂度的计算方法为：将函数流程图中各节点（开始和结束结点除外）的引出边的数量减去一后的值相加，最后再在这个和的基础上加一。可见，当一个函数中条件判断的地方越多时，它的</SPAN><SPAN lang=EN-US>ct_vg</SPAN><SPAN style="FONT-FAMILY: 宋体">就会越大。</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">如果该值过大，会增大函数的复杂性，影响我们对函数的理解。</SPAN></P>
<H2><A name=_Toc26609700><SPAN lang=EN-US>2.2 "Number of Branches" : ct_bran<SPAN> </SPAN><SPAN>&nbsp;&nbsp; </SPAN>[ 0 ,<SPAN>&nbsp;&nbsp; </SPAN>0 ]</SPAN></A><SPAN lang=EN-US><SPAN>&nbsp;&nbsp; </SPAN><SPAN>&nbsp;&nbsp; </SPAN></SPAN></H2>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">度量元名称：函数中非结构化语句的数量。</SPAN></P>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">解释说明：</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">非结构化语句包括：</SPAN><SPAN lang=EN-US>goto</SPAN><SPAN style="FONT-FAMILY: 宋体">语句、在循环中使用的</SPAN><SPAN lang=EN-US>break</SPAN><SPAN style="FONT-FAMILY: 宋体">、</SPAN><SPAN lang=EN-US>continue</SPAN><SPAN style="FONT-FAMILY: 宋体">语句。</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">该度量元是为了使程序编写符合结构化的要求。</SPAN></P>
<H2><A name=_Toc26609701><SPAN lang=EN-US>2.3 "Number of Declared Variables" : dc_lvars<SPAN> </SPAN><SPAN>&nbsp;&nbsp; </SPAN>[<SPAN>&nbsp; </SPAN>0<SPAN>&nbsp; </SPAN>,<SPAN>&nbsp;&nbsp; </SPAN>5 ]</SPAN></A></H2>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">度量元的名称：函数中定义的变量的数量。</SPAN></P>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">解释说明：</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">在函数体内部定义的变量的数量。函数中局部变量定义的过多，会增大代码的复杂性，影响对函数的理解。</SPAN></P>
<H2><A name=_Toc26609702><SPAN lang=EN-US>2.4 "Number of parameters" : ic_param <SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>[ 0<SPAN>&nbsp;&nbsp; </SPAN>,<SPAN>&nbsp;&nbsp; </SPAN>5 ]</SPAN></A></H2>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">度量元的名称：函数参数的数量。</SPAN></P>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">解释说明：</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">函数的参数过多，会使函数易于受外部（其他部分的代码）变化的影响，从而影响维护工作。</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">函数的参数过多也会增大测试的工作量。</SPAN></P>
<H2><A name=_Toc26609703><SPAN lang=EN-US>2.5 "Number of Direct Calls" : dc_calls<SPAN> </SPAN><SPAN>&nbsp;&nbsp; </SPAN>[ 0 ,<SPAN>&nbsp;&nbsp; </SPAN>5 ]</SPAN></A></H2>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">度量元的名称：函数中调用其它函数的数量。</SPAN></P>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">解释说明：</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">在函数体中调用其它函数的数量，对同一函数的多次调用计为一次。</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">该值过大，首先是会使函数易于受外部（其他部分的代码）变化的影响，从而增加维护工作的工作量。</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">其次，该值过大，也会增加阅读程序的人在理解程序上的困难。</SPAN></P>
<H2><A name=_Toc26609704><SPAN lang=EN-US>2.6 "Number of Exits" : ct_exit <SPAN></SPAN><SPAN>&nbsp;&nbsp; </SPAN>[ 0<SPAN>&nbsp; </SPAN>,<SPAN>&nbsp;&nbsp; </SPAN>1]</SPAN></A></H2>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">度量元的名称：函数出口的数量。</SPAN></P>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">解释说明：</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">也就是函数体中退出点的数量。</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">在一个函数中存在一个以上的出口会增加函数出错的可能性，建议单出口。</SPAN></P>
<H2><A name=_Toc26609705><SPAN lang=EN-US>2.7 "Number of Distinct Uses of External Attributes" : ic_varpe<SPAN> </SPAN><SPAN>&nbsp;&nbsp; </SPAN>[ 0<SPAN> </SPAN>,<SPAN>&nbsp; </SPAN>2 ]</SPAN></A></H2>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">度量元的名称：函数中使用其它类的数据成员的数量。</SPAN></P>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">解释说明：</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">所谓函数中使用的其它类的数据成员的数量，也就是在函数体中对外部类（与该函数所属的类不是同一个类）的数据成员的使用数量，对同一数据成员的多次使用计为一次。</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">这个度量元的用意也很好理解，就是为了尽量减少函数与其它类的耦合关系。</SPAN></P>
<H2><A name=_Toc26609706><SPAN lang=EN-US>2.8 "Number of paths" : ct_path<SPAN> </SPAN><SPAN>&nbsp;&nbsp; </SPAN>[ 1<SPAN>&nbsp; </SPAN>,<SPAN>&nbsp;&nbsp; </SPAN>60 ]</SPAN></A></H2>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">度量元的名称：函数中执行路径的数量。</SPAN></P>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">解释说明：</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">函数中执行路径过多，会极大的增大测试的工作量。</SPAN></P>
<H2><A name=_Toc26609707><SPAN lang=EN-US>2.9 "Number of Statement"<SPAN>&nbsp; </SPAN>: lc_stat<SPAN> </SPAN>[<SPAN>&nbsp; </SPAN>1 ,<SPAN>&nbsp; </SPAN>20 ]</SPAN></A></H2>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">度量元的名称：函数中的可执行语句数</SPAN><SPAN lang=EN-US>.</SPAN></P>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">解释说明：</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">函数中的可执行语句数过多，意味着函数的功能可能不单一，同时也会增加函数的复杂性。</SPAN></P>
<H2><A name=_Toc26609708><SPAN lang=EN-US>2.10 "Average size of statements"<SPAN>&nbsp;&nbsp;&nbsp; </SPAN>:<SPAN>&nbsp; </SPAN>AVGS<SPAN>&nbsp;&nbsp;&nbsp; </SPAN>[<SPAN>&nbsp; </SPAN>1.00<SPAN> </SPAN>,<SPAN>&nbsp;&nbsp; </SPAN>9.00 ]</SPAN></A></H2>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">度量元的名称：语句平均承载的信息量。</SPAN></P>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">解释说明：</SPAN><SPAN lang=EN-US> </SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">该度量元计算在一个函数中，平均每个可执行语句所包含的操作符和操作数的数量。</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">该度量元的计算公式为：</SPAN></P>
<P class=MsoNormal style="TEXT-ALIGN: center" align=center><B><SPAN lang=EN-US style="FONT-FAMILY: 黑体">AVGS = (N1 + N2) / (lc_stat )</SPAN><SPAN lang=EN-US><o:p></o:p></SPAN></B></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">其中：</SPAN></P>
<P class=MsoNormal><SPAN lang=EN-US><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN>&nbsp; </SPAN>N1 </SPAN><SPAN style="FONT-FAMILY: 宋体">是该函数中的操作符的数量</SPAN><SPAN lang=EN-US>,</SPAN></P>
<P class=MsoNormal><SPAN lang=EN-US><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN>&nbsp; </SPAN>N2 </SPAN><SPAN style="FONT-FAMILY: 宋体">是该函数中的操作数的数量</SPAN><SPAN lang=EN-US>,</SPAN></P>
<P class=MsoNormal><SPAN lang=EN-US><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN>&nbsp; </SPAN>lc_stat<SPAN>&nbsp; </SPAN></SPAN><SPAN style="FONT-FAMILY: 宋体">是函数中可执行语句的数量</SPAN><SPAN lang=EN-US>.</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">如果平均每个可执行语句所包含的操作符和操作数的数量较多时，也就是说当程序语句比较长时，会增大阅读者理解程序的难度。应该将较长的语句分解为几个较短的语句，以此来降低程序的复杂性。</SPAN></P>
<H2><A name=_Toc26609709><SPAN lang=EN-US>2.11 "Vocabulary frequency":<SPAN>&nbsp; </SPAN>VOCF<SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN>&nbsp;&nbsp; </SPAN><SPAN>&nbsp;&nbsp; </SPAN>[<SPAN>&nbsp; </SPAN>1.00<SPAN>&nbsp;&nbsp; </SPAN>,<SPAN>&nbsp;&nbsp; </SPAN>4.00 ]</SPAN></A></H2>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">度量元的名称：词汇频率。</SPAN><SPAN lang=EN-US> </SPAN></P>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">解释说明：</SPAN> </P>
<P class=MsoNormal><SPAN lang=EN-US><SPAN>&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-FAMILY: 宋体">该度量元表示的是在一个函数中，相同的操作符和操作数出现的频率。</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">该度量元的计算公式为：</SPAN></P>
<P class=MsoNormal style="TEXT-ALIGN: center" align=center><B><SPAN lang=EN-US style="FONT-FAMILY: 黑体">VOCF = (N1+N2) / (n1+n2)</SPAN><SPAN lang=EN-US><o:p></o:p></SPAN></B></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">其中：</SPAN></P>
<P class=MsoNormal><SPAN lang=EN-US><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>N1 </SPAN><SPAN style="FONT-FAMILY: 宋体">是该函数中的操作符的数量，包括重复出现的；</SPAN></P>
<P class=MsoNormal><SPAN lang=EN-US><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>N2 </SPAN><SPAN style="FONT-FAMILY: 宋体">是该函数中的操作数的数量，包括重复出现的；</SPAN></P>
<P class=MsoNormal><SPAN lang=EN-US><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>n1 </SPAN><SPAN style="FONT-FAMILY: 宋体">是该函数中不同的操作符的数量</SPAN><SPAN lang=EN-US>,</SPAN></P>
<P class=MsoNormal><SPAN lang=EN-US><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>n2 </SPAN><SPAN style="FONT-FAMILY: 宋体">是该函数中不同的操作数的数量</SPAN><SPAN lang=EN-US>,</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">当一个函数</SPAN><SPAN lang=EN-US>VOCF</SPAN><SPAN style="FONT-FAMILY: 宋体">的值较高时，说明在这个函数中可能包含重复的或类似的语句。如果确实是这种情况，建议将这些反复使用的语句分离出来，写成一个单独的函数，从而增加了程序的简明、清晰程度，也为以后修改这个函数带来了方便。</SPAN></P>
<H2><A name=_Toc26609710><SPAN lang=EN-US>2.12 "Comments frequency": COMF<SPAN> </SPAN>[<SPAN>&nbsp; </SPAN>0.20<SPAN>&nbsp; </SPAN>， +oo ]</SPAN></A></H2>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">度量元的名称：函数的注释比率。</SPAN></P>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">解释说明：</SPAN><SPAN lang=EN-US> </SPAN></P>
<P class=MsoNormal><SPAN lang=EN-US><SPAN>&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-FAMILY: 宋体">函数中的注释块的数量与函数中的可执行语句的数量之比。</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">该度量元的计算公式为：</SPAN></P>
<P class=MsoNormal style="TEXT-ALIGN: center" align=center><B><SPAN lang=EN-US style="FONT-FAMILY: 黑体">COMF = (lc_bcom + lc_bcob) / (lc_stat )</SPAN><SPAN lang=EN-US><o:p></o:p></SPAN></B></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">其中：</SPAN></P>
<P class=MsoNormal><SPAN lang=EN-US><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>lc_bcom </SPAN><SPAN style="FONT-FAMILY: 宋体">是函数体中注释块的数量</SPAN><SPAN lang=EN-US>,</SPAN></P>
<P class=MsoNormal><SPAN lang=EN-US><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>lc_bcob </SPAN><SPAN style="FONT-FAMILY: 宋体">是函数体前注释块的数量（值只能为</SPAN><SPAN lang=EN-US> 0 </SPAN><SPAN style="FONT-FAMILY: 宋体">或</SPAN><SPAN lang=EN-US> 1</SPAN><SPAN style="FONT-FAMILY: 宋体">）</SPAN><SPAN lang=EN-US>,</SPAN></P>
<P class=MsoNormal><SPAN lang=EN-US><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>lc_stat<SPAN>&nbsp; </SPAN></SPAN><SPAN style="FONT-FAMILY: 宋体">是函数中可执行语句的数量</SPAN><SPAN lang=EN-US>.</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">这个度量元能反映出程序的开发者是否对程序进行了认真的注释。如果函数的注释写的比较充分，那么在我们进行测试工作和维护工作需要理解程序代码时是非常有用的。</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">这个度量元检测的是注释块的数量，而不是注释行的数量，这种注释量的计算方法我认为更科学。</SPAN></P>
<H2><A name=_Toc26609711><SPAN lang=EN-US>2.13 "Number of levels":<SPAN>&nbsp;&nbsp; </SPAN>LEVL = ct_nest + 1<SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN>&nbsp;&nbsp; </SPAN></SPAN></A><SPAN><SPAN lang=EN-US style="FONT-FAMILY: 宋体">[ 1 </SPAN></SPAN><SPAN><SPAN>，</SPAN></SPAN><SPAN><SPAN lang=EN-US style="FONT-FAMILY: 宋体">4 ]</SPAN></SPAN></H2>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">度量元的名称：函数中具有嵌套的控制结构的最大的嵌套层数再加一。</SPAN></P>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">解释说明：</SPAN><SPAN lang=EN-US> </SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">该度量元的计算公式为：</SPAN></P>
<H3><A name=_Toc20813988></A><A name=_Toc26349497></A><A name=_Toc26609712><SPAN><SPAN><SPAN lang=EN-US>LEVL = ct_nest + 1</SPAN></SPAN></SPAN></A></H3>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">其中：</SPAN><SPAN lang=EN-US>ct_nest</SPAN><SPAN style="FONT-FAMILY: 宋体">：函数中控制结构嵌套的最大嵌套层数。</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">函数中具有嵌套的控制结构的最大的嵌套层数再加一。该值越大，说明函数越复杂，越难于理解。</SPAN></P>
<H2><A name=_Toc26609713><SPAN lang=EN-US>2.14 "Fan In": FAN_IN<SPAN>&nbsp; </SPAN><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>[<SPAN>&nbsp; </SPAN>0<SPAN>&nbsp;&nbsp; </SPAN>，4 ]</SPAN></A></H2>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">度量元的名称：</SPAN><SPAN style="FONT-FAMILY: 宋体">扇入</SPAN></P>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">解释说明：</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">该度量元的计算公式为：</SPAN></P>
<H3><A name=_Toc20813990></A><A name=_Toc26349499></A><A name=_Toc26609714><SPAN><SPAN><SPAN lang=EN-US>FAN_IN = ic_usedp + ic_varpi</SPAN></SPAN></SPAN></A></H3>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">其中：</SPAN><SPAN lang=EN-US><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>ic_usedp </SPAN><SPAN style="FONT-FAMILY: 宋体">是函数参数的个数；</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US><SPAN>&nbsp;</SPAN><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>ic_varpi </SPAN><SPAN style="FONT-FAMILY: 宋体">是函数对本类中数据成员的使用次数。</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">这个度量元反映的是函数需要输入的数据量。</SPAN> <SPAN style="FONT-FAMILY: 宋体">如果函数需要输入的数据过多，那么阅读者对函数进行理解时会变的困难，并且外部变化对函数的影响也会较大。</SPAN></P>
<H2><A name=_Toc26609715><SPAN lang=EN-US>2.15 "Fan Out": FAN_OUT<SPAN> </SPAN><SPAN>&nbsp;&nbsp; </SPAN>[<SPAN>&nbsp; </SPAN>0<SPAN>&nbsp; </SPAN>，<SPAN>&nbsp; </SPAN><SPAN>&nbsp;&nbsp; </SPAN>4 ]</SPAN></A></H2>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">度量元的名称：</SPAN><SPAN style="FONT-FAMILY: 宋体">扇出</SPAN><SPAN lang=EN-US> </SPAN></P>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">解释说明：</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">该度量元的计算公式为：</SPAN></P>
<H3><A name=_Toc20813992></A><A name=_Toc26349501></A><A name=_Toc26609716><SPAN><SPAN><SPAN lang=EN-US>FAN_OUT = ic_paradd +ic_varpe</SPAN></SPAN></SPAN></A></H3>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">其中：</SPAN><SPAN lang=EN-US><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>ic_paradd<SPAN>&nbsp; </SPAN></SPAN><SPAN style="FONT-FAMILY: 宋体">是传址参数的个数；</SPAN></P>
<P class=MsoNormal style="MARGIN-LEFT: 21pt; TEXT-INDENT: 21pt"><SPAN lang=EN-US>ic_varpe<SPAN>&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-FAMILY: 宋体">是函数对外部类数据成员的使用次数。</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">这个度量元反映的是函数的输出数据量。如果函数输出的数据量过多，那么对这个函数进行理解分析时会很困难。同时，函数输出的数据量越大，这样的函数对系统的影响也会越大，所以应该加以限制。</SPAN></P>
<H2><A name=_Toc26609717><SPAN lang=EN-US>2.16 " Number of callers ": dc_calling<SPAN>&nbsp;&nbsp; </SPAN>[<SPAN>&nbsp; </SPAN>0<SPAN>&nbsp; </SPAN>， 7 ]</SPAN></A></H2>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">度量元的名称：</SPAN><SPAN style="FONT-FAMILY: 宋体">被调用次数</SPAN></P>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">解释说明：</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">该项度量元表示的是：调用了该函数的函数的个数。</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">一个函数，调用它的函数越多，则对该函数的可靠性要求的越高，它一旦发生问题，引发的后果就越严重。系统中这样的函数越多，出现问题的可能性就越大，所以应该加以限制。</SPAN></P>
<H2><A name=_Toc26609718><SPAN lang=EN-US>2.17 "Number of relative call graph levels": cg_levels<SPAN>&nbsp;&nbsp; </SPAN>[<SPAN>&nbsp; </SPAN>1<SPAN>&nbsp; </SPAN>， 12 ]</SPAN></A></H2>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">度量元的名称：调用层次数</SPAN></P>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">解释说明：</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">该项度量元表示的是：在该函数的调用关系图中，函数调用关系的层次数。</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">比如图</SPAN><SPAN lang=EN-US>2-1</SPAN><SPAN style="FONT-FAMILY: 宋体">的这个的函数调用关系图中，函数</SPAN><SPAN lang=EN-US>Fun2( )</SPAN><SPAN style="FONT-FAMILY: 宋体">的</SPAN><SPAN lang=EN-US>cg_levels</SPAN><SPAN style="FONT-FAMILY: 宋体">的值为</SPAN><SPAN lang=EN-US>3</SPAN><SPAN style="FONT-FAMILY: 宋体">。</SPAN></P>
<DIV style="TEXT-ALIGN: center"><IMG height=235 alt=logiscope80.jpg src="http://www.cnitblog.com/images/cnitblog_com/qiuyangzh/logiscope3/logiscope80.jpg" width=234 border=0><BR><SPAN style="FONT-SIZE: 10.5pt; FONT-FAMILY: 黑体">图<SPAN lang=EN-US> 2-1 函数调用关系图<BR></SPAN></SPAN>
<DIV style="TEXT-ALIGN: left">
<H2><A name=_Toc26609719><SPAN lang=EN-US>2.18 "Relative call graph Hierarchical complexity": cg_hiercpx<SPAN>&nbsp;&nbsp; </SPAN>[<SPAN>&nbsp; </SPAN>1.0<SPAN>&nbsp; </SPAN>， 5.0 ]</SPAN></A></H2>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">度量元的名称：每层平均函数个数</SPAN></P>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">解释说明：</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">该项度量元表示的是：在该函数的调用关系图中，平均每一层上的函数个数。</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">比如图</SPAN><SPAN lang=EN-US>2-1</SPAN><SPAN style="FONT-FAMILY: 宋体">的函数调用关系图中，函数</SPAN><SPAN lang=EN-US>Fun2( )</SPAN><SPAN style="FONT-FAMILY: 宋体">的</SPAN><SPAN lang=EN-US>cg_hiercpx</SPAN><SPAN style="FONT-FAMILY: 宋体">的值为</SPAN><SPAN lang=EN-US>4 / 3 = 1.3</SPAN><SPAN style="FONT-FAMILY: 宋体">。</SPAN></P>
<H2><A name=_Toc26609720><SPAN lang=EN-US>2.19 " Relative call graph Structural complexity ": cg_strucpx<SPAN>&nbsp;&nbsp; </SPAN>[<SPAN>&nbsp; </SPAN>0.0<SPAN>&nbsp; </SPAN>， 3.0 ]</SPAN></A></H2>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">度量元的名称：函数平均调用数量</SPAN></P>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">解释说明：</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">该项度量元表示的是：在函数的调用关系图中，每个函数的平均调用数量。</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">比如图</SPAN><SPAN lang=EN-US>2-1</SPAN><SPAN style="FONT-FAMILY: 宋体">的函数调用关系图中，函数</SPAN><SPAN lang=EN-US>Fun2( )</SPAN><SPAN style="FONT-FAMILY: 宋体">的</SPAN><SPAN lang=EN-US>cg_strucpx</SPAN><SPAN style="FONT-FAMILY: 宋体">的值为</SPAN><SPAN lang=EN-US>3 / 4 = 0.75</SPAN><SPAN style="FONT-FAMILY: 宋体">。</SPAN></P>
<H2><A name=_Toc26609721><SPAN lang=EN-US>2.20 "Number of relative call graph call-paths":IND_CALLS<SPAN>&nbsp;&nbsp; </SPAN>[<SPAN>&nbsp; </SPAN>1<SPAN>&nbsp; </SPAN>， 30 ]</SPAN></A></H2>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">度量元的名称：调用路径数量</SPAN></P>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">解释说明：</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">该项度量元表示的是：在该函数的调用关系图中，从该函数到每个叶子函数的不同路径数量之和。</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">比如图</SPAN><SPAN lang=EN-US>2-1</SPAN><SPAN style="FONT-FAMILY: 宋体">的函数调用关系图中，函数</SPAN><SPAN lang=EN-US>Fun2( )</SPAN><SPAN style="FONT-FAMILY: 宋体">的</SPAN><SPAN lang=EN-US>IND_CALLS</SPAN><SPAN style="FONT-FAMILY: 宋体">的值为</SPAN><SPAN lang=EN-US>2</SPAN><SPAN style="FONT-FAMILY: 宋体">。</SPAN></P>
<H2><A name=_Toc26609722><SPAN lang=EN-US>2.21 "Relative call graph System testability":cg_testab<SPAN>&nbsp;&nbsp; </SPAN>[<SPAN>&nbsp; </SPAN>0.0<SPAN>&nbsp; </SPAN>， 1.0 ]</SPAN></A></H2>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">度量元的名称：函数调用关系的易测性</SPAN></P>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">解释说明：</SPAN></P><SPAN style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体">该项度量元表示的是：对该函数的函数调用关系进行测试时的工作量。<BR><BR></SPAN><SPAN style="FONT-SIZE: 10.5pt; FONT-FAMILY: 黑体"><SPAN lang=EN-US></SPAN></SPAN></DIV></DIV><img src ="http://www.cnitblog.com/qiuyangzh/aggbug/966.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/qiuyangzh/" target="_blank">qiuyangzh</a> 2005-07-15 21:25 <a href="http://www.cnitblog.com/qiuyangzh/archive/2005/07/15/966.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Logiscope-Audit系统度量元</title><link>http://www.cnitblog.com/qiuyangzh/archive/2005/07/15/967.html</link><dc:creator>qiuyangzh</dc:creator><author>qiuyangzh</author><pubDate>Fri, 15 Jul 2005 13:24:00 GMT</pubDate><guid>http://www.cnitblog.com/qiuyangzh/archive/2005/07/15/967.html</guid><wfw:comment>http://www.cnitblog.com/qiuyangzh/comments/967.html</wfw:comment><comments>http://www.cnitblog.com/qiuyangzh/archive/2005/07/15/967.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/qiuyangzh/comments/commentRss/967.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/qiuyangzh/services/trackbacks/967.html</trackback:ping><description><![CDATA[<H1 style="TEXT-ALIGN: justify"><A name=_Toc26351659><SPAN lang=EN-US style="FONT-FAMILY: 黑体">1 前言</SPAN></A><SPAN lang=EN-US style="FONT-FAMILY: 黑体"><?xml:namespace prefix = o /><o:p></o:p></SPAN></H1>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">本文挡描述的是</SPAN><SPAN lang=EN-US style="FONT-FAMILY: 宋体">Logiscope——Audit中常用的系统度量元的具体含义。<o:p></o:p></SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">对每个度量元的解释分为以下几部分：<SPAN lang=EN-US><o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">首先是该度量元的原文名称，后面是该度量元的代号，跟在后面的是<SPAN lang=EN-US>Audit质量模型为该度量元设的参考值（用中括号括起。对于这个范围值，我们可以对它进行修改），再往下就是对该度量元含义的具体解释。</SPAN></SPAN></P>
<H1 style="TEXT-ALIGN: justify"><A name=_Toc26351660><SPAN lang=EN-US style="FONT-FAMILY: 黑体">2系统度量元</SPAN></A><SPAN lang=EN-US style="FONT-FAMILY: 黑体"><o:p></o:p></SPAN></H1>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">下面介绍系统作用域中各个度量元</SPAN><SPAN style="FONT-FAMILY: 宋体">的具体含义</SPAN><SPAN style="FONT-FAMILY: 宋体">。注意，下面讨论的所有问题都是站在整个系统（或子系统）的角度上的，这一点对于我们理解这些度量元很重要。</SPAN></P>
<H2><A name=_Toc26351661><SPAN lang=EN-US>2.1 "Coupling Factor" : ap_cof<SPAN>&nbsp; </SPAN><SPAN>&nbsp;&nbsp; </SPAN>[0.03 ,<SPAN>&nbsp;&nbsp; </SPAN>0.18]</SPAN></A></H2>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">度量元名称：类耦合因素。</SPAN></P>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">解释说明：</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">该度量元的计算方法为：</SPAN></P>
<P class=MsoNormal><SPAN lang=EN-US><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </SPAN></SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">类的总数</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt"><o:p></o:p></SPAN></P>
<P class=MsoNormal><SPAN lang=EN-US>ap_cof = </SPAN><SPAN style="FONT-SIZE: 15pt; FONT-FAMILY: 宋体">（</SPAN><SPAN style="FONT-SIZE: 18pt; FONT-FAMILY: 宋体">∑</SPAN><SPAN style="FONT-SIZE: 18pt"> </SPAN><SPAN lang=EN-US style="FONT-SIZE: 16pt">C</SPAN><B><SPAN lang=EN-US style="FONT-SIZE: 12pt">i</SPAN></B><SPAN style="FONT-FAMILY: 宋体">与其他的类发生耦合关系的数量</SPAN><SPAN style="FONT-SIZE: 15pt; FONT-FAMILY: 宋体">）</SPAN><B><SPAN lang=EN-US style="FONT-SIZE: 16pt">/ </SPAN></B><SPAN style="FONT-FAMILY: 宋体">类的总数</SPAN><SPAN lang=EN-US>*</SPAN><SPAN style="FONT-FAMILY: 宋体">（类的总数</SPAN> <SPAN style="FONT-FAMILY: 宋体">—</SPAN><SPAN lang=EN-US> 1</SPAN><SPAN style="FONT-FAMILY: 宋体">）</SPAN><SPAN lang=EN-US style="FONT-SIZE: 18pt"><o:p></o:p></SPAN></P>
<P class=MsoNormal><SPAN lang=EN-US><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; </SPAN></SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt">i = 1<o:p></o:p></SPAN></P>
<P class=MsoNormal><B><SPAN lang=EN-US style="FONT-FAMILY: 黑体">( 注：Ci表示第i个类 )<BR></SPAN></B></P>
<P class=MsoNormal></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">当某一个类有以下情形之一时，该类与其他类的耦合关系的数量加一：</SPAN></P>
<P class=MsoNormal><SPAN lang=EN-US><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>1 </SPAN><SPAN style="FONT-FAMILY: 宋体">在该类的类函数中调用了另一个类的成员函数。</SPAN></P>
<P class=MsoNormal><SPAN lang=EN-US><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>2 </SPAN><SPAN style="FONT-FAMILY: 宋体">该类通过友员的方法调用另一个类中的可见或不可见的函数。</SPAN></P>
<P class=MsoNormal><SPAN lang=EN-US><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>3 </SPAN><SPAN style="FONT-FAMILY: 宋体">在该类中调用了另一个类的构造</SPAN><SPAN lang=EN-US>/</SPAN><SPAN style="FONT-FAMILY: 宋体">析构函数。</SPAN></P>
<P class=MsoNormal><SPAN lang=EN-US><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>4 </SPAN><SPAN style="FONT-FAMILY: 宋体">该类中将另一个类作为数据成员或作为类函数中的参数。</SPAN></P>
<H2><A name=_Toc26351662><SPAN lang=EN-US>2.2 "Method Inheritance Factor" : ap_mif<SPAN>&nbsp; </SPAN>[ 0.6<SPAN> </SPAN>,<SPAN>&nbsp;&nbsp; </SPAN>0.8]</SPAN></A></H2>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">度量元名称：类函数继承的比率。</SPAN></P>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">解释说明：该度量元是一个比值。</SPAN></P>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">分子为：在系统所有类的成员函数中，由父类继承来的成员函数的数量总和。</SPAN></P>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">分母为：系统所有类的成员函数的总和（包括自己定义的和从父类继承而来的）。</SPAN></P>
<H2><A name=_Toc26351663><SPAN lang=EN-US>2.3 "Attribute Inheritance Factor" : ap_aif<SPAN>&nbsp; </SPAN>[0.3 ,<SPAN>&nbsp; </SPAN>0.6]</SPAN></A></H2>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">度量元名称：类数据成员继承的比率。</SPAN></P>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">解释说明：</SPAN><SPAN lang=EN-US><SPAN>&nbsp; </SPAN></SPAN><SPAN style="FONT-FAMILY: 宋体">该度量元是一个比值。</SPAN></P>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">分子为：在系统所有类的数据成员中，由父类继承来的数据成员的数量总和。</SPAN></P>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">分母为：系统所有类的数据成员的总和（包括自己定义的和从父类继承而来的）。</SPAN></P>
<H2><A name=_Toc26351664><SPAN lang=EN-US>2.4 "Polymorphism Factor" : ap_pof<SPAN>&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>[ 0.3<SPAN> </SPAN>,<SPAN>&nbsp;&nbsp; </SPAN>1.0 ]</SPAN></A></H2>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">度量元名称：类的多态性因素。</SPAN></P>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">解释说明：该度量元是一个比值。</SPAN></P>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">分子为：在系统所有类的成员函数中，重载的函数的数量总和。</SPAN></P>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">分母为：</SPAN></P>
<P class=MsoNormal><SPAN lang=EN-US><SPAN>&nbsp;&nbsp; </SPAN><SPAN>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </SPAN></SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">系统中类的总数</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt"><o:p></o:p></SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 54pt"><SPAN style="FONT-SIZE: 18pt; FONT-FAMILY: 宋体">∑（</SPAN><SPAN lang=EN-US style="FONT-SIZE: 16pt">C</SPAN><B><SPAN lang=EN-US style="FONT-SIZE: 12pt">i</SPAN></B><SPAN style="FONT-FAMILY: 宋体">中未被重载的成员函数的数量</SPAN><SPAN lang=EN-US>* </SPAN><SPAN lang=EN-US style="FONT-SIZE: 16pt">C</SPAN><B><SPAN lang=EN-US style="FONT-SIZE: 12pt">i</SPAN></B><SPAN style="FONT-FAMILY: 宋体">子类的个数</SPAN><SPAN style="FONT-SIZE: 18pt; FONT-FAMILY: 宋体">）</SPAN><SPAN lang=EN-US style="FONT-SIZE: 18pt"><o:p></o:p></SPAN></P>
<P class=MsoNormal><SPAN lang=EN-US><SPAN>&nbsp; </SPAN><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt">i = 1<o:p></o:p></SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 42.05pt"><B><SPAN lang=EN-US style="FONT-FAMILY: 黑体">( 注：Ci表示第i个类 )<o:p></o:p></SPAN></B></P>
<H2><A name=_Toc26351665><SPAN lang=EN-US>2.5<SPAN>&nbsp; </SPAN>"Attribute Hiding Factor" : ap_ahf<SPAN> </SPAN>[0.7<SPAN> </SPAN>1.0 ]</SPAN></A></H2>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">度量元名称：类对其数据成员的保护程度。</SPAN></P>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">解释说明：该度量元是一个比值。</SPAN></P>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">分子为：在系统所有类的数据成员中，属于</SPAN><SPAN lang=EN-US>Private</SPAN><SPAN style="FONT-FAMILY: 宋体">型数据成员的总数。</SPAN></P>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">分母为：系统所有类的数据成员的总和。</SPAN></P>
<H2 style="MARGIN-LEFT: 70pt; TEXT-INDENT: -70pt"><A name=_Toc26351666><SPAN lang=EN-US>2.6 "Average coupling between objects": AVG_CBO<SPAN>&nbsp; </SPAN><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN>[0.0 , 10.0 ]</SPAN></A></H2>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">度量元名称：系统中类耦合的平均值。</SPAN></P>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">解释说明：</SPAN></P>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">计算公式为：</SPAN></P>
<H3><A name=_Toc26351667><SPAN lang=EN-US>AVG_CBO = ap_cbo / ap_clas</SPAN></A></H3>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">其中：</SPAN><SPAN lang=EN-US>ap_cbo </SPAN><SPAN style="FONT-FAMILY: 宋体">的值由以下两部分组成：</SPAN></P>
<P class=MsoNormal><SPAN lang=EN-US>1</SPAN><SPAN style="FONT-FAMILY: 宋体">在一个类的成员函数中调用不属于该类的函数，在系统中，这种情况出现一次，</SPAN><SPAN lang=EN-US>ap_cbo</SPAN><SPAN style="FONT-FAMILY: 宋体">的值加一。</SPAN></P>
<P class=MsoNormal style="MARGIN-LEFT: 63pt; TEXT-INDENT: -63pt"><SPAN lang=EN-US><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>2</SPAN><SPAN style="FONT-FAMILY: 宋体">类中类类型数据成员的数量。在系统中，这种情况出现一次，</SPAN><SPAN lang=EN-US>ap_cbo</SPAN><SPAN style="FONT-FAMILY: 宋体">的值加一。</SPAN></P>
<P class=MsoNormal><SPAN lang=EN-US><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>ap_clas</SPAN><SPAN style="FONT-FAMILY: 宋体">：系统中类的数量。</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">如果该值过高，则说明系统中类与类之间的耦合较强，这会使对系统进行更改工作时变的非常困难。</SPAN></P>
<H2><A name=_Toc26351668><SPAN lang=EN-US>2.7 "Number of Levels in the Inheritance Graph" : ap_inhg_levl<SPAN>&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN>[ 1 ,<SPAN>&nbsp; </SPAN>4 ]</SPAN></SPAN></A></H2>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">度量元名称：<SPAN>类继承图的深度。</SPAN></SPAN><SPAN lang=EN-US><o:p></o:p></SPAN></P>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">解释说明：在系统中所有的<SPAN>类继承图中，最大继承层次的数量。</SPAN></SPAN><I><SPAN lang=EN-US><o:p></o:p></SPAN></I></P>
<H2><A name=_Toc26351669><SPAN lang=EN-US>2.8 "Method Hiding Factor" : ap_mhf <SPAN></SPAN><SPAN>[ 0.1 ， 0.4 ]</SPAN></SPAN></A></H2>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">度量元名称：<SPAN>类成员函数的私有情况。</SPAN></SPAN><SPAN lang=EN-US><o:p></o:p></SPAN></P>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">解释说明：</SPAN></P>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">该度量元</SPAN><SPAN style="FONT-FAMILY: 宋体">的计算公式为：</SPAN></P>
<P class=MsoNormal><SPAN lang=EN-US><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-FAMILY: 宋体">类总数</SPAN><SPAN> </SPAN><SPAN style="FONT-FAMILY: 宋体">类</SPAN><SPAN lang=EN-US>i</SPAN><SPAN style="FONT-FAMILY: 宋体">中函数个数</SPAN><SPAN lang=EN-US><o:p></o:p></SPAN></P>
<P class=MsoNormal style="TEXT-ALIGN: center" align=center><B><SPAN lang=EN-US>ap_mhf =</SPAN></B><B><SPAN style="FONT-SIZE: 15pt; FONT-FAMILY: 宋体">（</SPAN></B><B><SPAN style="FONT-SIZE: 14pt; FONT-FAMILY: 宋体">∑ </SPAN></B><B><SPAN lang=EN-US style="FONT-SIZE: 15pt">[ </SPAN></B><B><SPAN style="FONT-SIZE: 14pt; FONT-FAMILY: 宋体">∑（<SPAN lang=EN-US> 1 – V( m ) ）]）/ </SPAN></SPAN></B><B><SPAN style="FONT-SIZE: 15pt; FONT-FAMILY: 宋体">（</SPAN></B><SPAN style="FONT-FAMILY: 宋体">系统中<SPAN>类成员函数数量的总和</SPAN></SPAN><B><SPAN style="FONT-SIZE: 15pt; FONT-FAMILY: 宋体">）</SPAN><SPAN lang=EN-US><o:p></o:p></SPAN></B></P>
<P class=MsoNormal><B><SPAN lang=EN-US><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </SPAN>i = 1<SPAN>&nbsp; </SPAN>m=1</SPAN></B></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">其中</SPAN><SPAN lang=EN-US style="FONT-FAMILY: 宋体">V( m )的值为：<o:p></o:p></SPAN></P>
<P class=MsoNormal><SPAN lang=EN-US style="FONT-FAMILY: 宋体"><SPAN>&nbsp;&nbsp;&nbsp; </SPAN>当该函数为 public型时，V( m ) = 1<o:p></o:p></SPAN></P>
<P class=MsoNormal><SPAN lang=EN-US style="FONT-FAMILY: 宋体"><SPAN>&nbsp;&nbsp;&nbsp; </SPAN>当该函数为 private型时，V( m ) = 0<o:p></o:p></SPAN></P>
<P class=MsoNormal><SPAN lang=EN-US style="FONT-FAMILY: 宋体"><SPAN>&nbsp;&nbsp;&nbsp; </SPAN>当该函数为 protected型时，V( m ) = ( 由该类派生的类的个数 ) </SPAN><B><SPAN lang=EN-US style="FONT-FAMILY: 宋体">/</SPAN></B><SPAN style="FONT-FAMILY: 宋体">（类总数 <SPAN lang=EN-US>– 1 ）<o:p></o:p></SPAN></SPAN></P>
<H2><A name=_Toc26351670><SPAN lang=EN-US>2.9 "Hierarchical Complexity of the Inheritance Graph" : ap_inhg_cpx <SPAN></SPAN><SPAN>&nbsp;&nbsp; </SPAN><SPAN>[ 1.0 ,<SPAN>&nbsp; </SPAN>2.0 ]</SPAN></SPAN></A></H2>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">度量元名称：类<SPAN>继承图的层次复杂性。</SPAN></SPAN><SPAN lang=EN-US><o:p></o:p></SPAN></P>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">解释说明：</SPAN><SPAN lang=EN-US><o:p></o:p></SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">它的计算公式为：<SPAN lang=EN-US><o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="TEXT-ALIGN: center" align=center><B><SPAN lang=EN-US>ap_inhg_cpx == SUM( N * I )</SPAN></B><B><SPAN lang=EN-US> / </SPAN><SPAN lang=EN-US>SUM( N )<o:p></o:p></SPAN></B></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">其中：</SPAN><B><SPAN lang=EN-US style="FONT-FAMILY: 宋体">SUM</SPAN></B><SPAN style="FONT-FAMILY: 宋体">表示取和，</SPAN><SPAN lang=EN-US><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><B>I</B></SPAN><SPAN style="FONT-FAMILY: 宋体">为类继承图中的层次序号（</SPAN><SPAN lang=EN-US>1</SPAN><SPAN style="FONT-FAMILY: 宋体">，</SPAN><SPAN lang=EN-US>2</SPAN><SPAN style="FONT-FAMILY: 宋体">，</SPAN><SPAN lang=EN-US>3…</SPAN><SPAN style="FONT-FAMILY: 宋体">），</SPAN><B><SPAN lang=EN-US>N</SPAN></B><SPAN lang=EN-US> </SPAN><SPAN style="FONT-FAMILY: 宋体">为继承图中第</SPAN><B><SPAN lang=EN-US>I</SPAN></B><SPAN style="FONT-FAMILY: 宋体">层中的结点个数。例如下面这样的一个继承关系：</SPAN><SPAN lang=EN-US><o:p></o:p></SPAN></P>
<DIV style="TEXT-ALIGN: center"><SPAN lang=EN-US>&nbsp;<IMG height=201 alt=logiscope81.jpg src="http://www.cnitblog.com/images/cnitblog_com/qiuyangzh/logiscope3/logiscope81.jpg" width=298 border=0></SPAN></DIV>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">则</SPAN><SPAN> <B><SPAN lang=EN-US>ap_inhg_cpx = </SPAN></B></SPAN><B><SPAN style="FONT-FAMILY: 宋体">（</SPAN><SPAN lang=EN-US> 1* 1 + 2*3 + 3*1 </SPAN></B><B><SPAN style="FONT-FAMILY: 宋体">）</SPAN></B><B><SPAN lang=EN-US style="FONT-FAMILY: 黑体">/</SPAN><SPAN lang=EN-US> </SPAN></B><B><SPAN style="FONT-FAMILY: 宋体">（</SPAN><SPAN lang=EN-US>1 +<SPAN>&nbsp; </SPAN>3 <SPAN>&nbsp;</SPAN>+ <SPAN>&nbsp;</SPAN>1 </SPAN></B><B><SPAN style="FONT-FAMILY: 宋体">）</SPAN><SPAN lang=EN-US>= 2.0</SPAN></B><SPAN style="FONT-FAMILY: 宋体">。由计算公式可以看出，多继承很影响该度量元的得分，所以尽量避免多重继承。</SPAN><SPAN lang=EN-US><o:p></o:p></SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">该度量元是类继承关系的图形结构的表示，它的目的是测量类继承关系的复杂性。如果改值大于二，则表明类的继承关系过于复杂。</SPAN><SPAN lang=EN-US><o:p></o:p></SPAN></P>
<H2><A name=_Toc26351671><SPAN lang=EN-US>2.10 "Ratio of repeated inheritances in the application": URI_Ratio <SPAN>&nbsp; </SPAN><SPAN>&nbsp;&nbsp; </SPAN><SPAN>&nbsp;</SPAN><SPAN>[ 0.0 ,<SPAN>&nbsp; </SPAN>10.0 ]</SPAN></SPAN></A></H2>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">度量元名称：<SPAN>重复继承的类的数量占系统中类继承关系数量的比率。</SPAN></SPAN><SPAN lang=EN-US><o:p></o:p></SPAN></P>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">解释说明：<SPAN>重复继承的类的数量占系统中类继承关系数量的比率。</SPAN></SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">该度量元的计算公式为：</SPAN></P>
<H3><A name=_Toc20815391></A><A name=_Toc26351672><SPAN><SPAN lang=EN-US style="FONT-FAMILY: 'Times New Roman'">URI_Ratio = (ap_inhg_uri * 100) / ap_inhg_edge</SPAN></SPAN></A><SPAN lang=EN-US style="FONT-FAMILY: 'Times New Roman'"><o:p></o:p></SPAN></H3>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">其中：</SPAN><SPAN lang=EN-US>ap_inhg_uri </SPAN><SPAN style="FONT-FAMILY: 宋体">：系统中重复继承的“类对”的数量。</SPAN><SPAN lang=EN-US><o:p></o:p></SPAN></P>
<P class=MsoNormal><SPAN lang=EN-US><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>ap_inhg_edge</SPAN><SPAN style="FONT-FAMILY: 宋体">：系统中类的继承关系图中边的数量。</SPAN><SPAN lang=EN-US><o:p></o:p></SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">那么，何为重复继承呢？重复继承指某一个类对同一个类继承两次。下面举一个例子。</SPAN><SPAN lang=EN-US><o:p></o:p></SPAN></P>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">比如：</SPAN><SPAN lang=EN-US><o:p></o:p></SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 147pt"><SPAN lang=EN-US><IMG height=212 alt=logiscope82.jpg src="http://www.cnitblog.com/images/cnitblog_com/qiuyangzh/logiscope3/logiscope82.jpg" width=367 border=0><BR>&nbsp;<BR></SPAN><SPAN style="FONT-FAMILY: 宋体">在这个例子中</SPAN><SPAN lang=EN-US>, </SPAN><SPAN style="FONT-FAMILY: 宋体">类</SPAN><SPAN lang=EN-US>E</SPAN><SPAN style="FONT-FAMILY: 宋体">通过类对</SPAN><SPAN lang=EN-US> (B,C)</SPAN><SPAN style="FONT-FAMILY: 宋体">、</SPAN><SPAN lang=EN-US>(C,D)</SPAN><SPAN style="FONT-FAMILY: 宋体">、</SPAN><SPAN lang=EN-US>(B,D)</SPAN><SPAN style="FONT-FAMILY: 宋体">对类</SPAN><SPAN lang=EN-US>A</SPAN><SPAN style="FONT-FAMILY: 宋体">重复继承。则</SPAN><SPAN lang=EN-US>ap_inhg_uri</SPAN><SPAN style="FONT-FAMILY: 宋体">的值为</SPAN><SPAN lang=EN-US>3</SPAN><SPAN style="FONT-FAMILY: 宋体">。</SPAN><SPAN lang=EN-US>ap_inhg_edge</SPAN><SPAN style="FONT-FAMILY: 宋体">的值为</SPAN><SPAN lang=EN-US>6</SPAN><SPAN style="FONT-FAMILY: 宋体">。所以</SPAN><SPAN lang=EN-US>URI_Ratio = (3 * 100) / 6 = 50.0<o:p></o:p></SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">过多的重复继承会导致程序变的复杂，还可能发生函数命名冲突（</SPAN><SPAN> </SPAN><SPAN style="FONT-FAMILY: 宋体">类</SPAN><SPAN lang=EN-US>E</SPAN><SPAN style="FONT-FAMILY: 宋体">中的函数就可能会有命名冲突）。所以在组织程序时，提倡单继承，避免使用多继承类。</SPAN><SPAN lang=EN-US><o:p></o:p></SPAN></P>
<H2><A name=_Toc26351673><SPAN lang=EN-US>2.11 "Percentage of non-member functions": NMM_Ratio </SPAN></A><A name=_Toc529678262><SPAN><SPAN>&nbsp;&nbsp; </SPAN><SPAN lang=EN-US>[ 0.0 ,<SPAN>&nbsp; </SPAN>10.0 ]</SPAN></SPAN></A></H2>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">度量元名称：<SPAN>独立于类的函数的比率。</SPAN></SPAN><SPAN lang=EN-US><o:p></o:p></SPAN></P>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">解释说明：</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">系统中非成员函数（独立于类的函数）占系统中函数总数的比率。</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">该度量元的计算公式为：</SPAN></P>
<P class=MsoToc1><SPAN lang=EN-US>NMM_Ratio =( ( ap_func - ap_nmm ) <SPAN>&nbsp;</SPAN>/ <SPAN>&nbsp;</SPAN>ap_func) * 100<SPAN><o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">其中：</SPAN><SPAN lang=EN-US>ap_func</SPAN><SPAN style="FONT-FAMILY: 宋体">：系统中总的函数数量（包括游离于类之外的全局函数）。</SPAN><SPAN lang=EN-US><o:p></o:p></SPAN></P>
<P class=MsoNormal><SPAN lang=EN-US><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>ap_nmm </SPAN><SPAN style="FONT-FAMILY: 宋体">：系统中各个类的成员函数的数量之和。</SPAN><SPAN lang=EN-US><o:p></o:p></SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">如果该度量元的值过大的话，说明该程序设计不符合面向对象的思想。</SPAN><SPAN lang=EN-US><o:p></o:p></SPAN></P>
<H2><A name=_Toc26351674><SPAN lang=EN-US>2.12<SPAN>&nbsp; </SPAN>"Average of the VG of the application's functions":<SPAN>&nbsp; </SPAN>AVG_VG <SPAN>&nbsp;&nbsp;&nbsp; </SPAN><SPAN>[ 1.0 ,<SPAN>&nbsp; </SPAN>5.0 ]</SPAN></SPAN></A></H2>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">度量元名称：<SPAN>系统中每个函数的平均圈复杂度。</SPAN></SPAN><SPAN lang=EN-US><o:p></o:p></SPAN></P>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">解释说明：</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">该度量元的计算公式为：</SPAN></P>
<P class=MsoNormal style="TEXT-ALIGN: center" align=center><B><SPAN lang=EN-US>AVG_VG = ap_vg / ap_func<SPAN><o:p></o:p></SPAN></SPAN></B></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">其中：</SPAN><SPAN lang=EN-US>ap_vg<SPAN>&nbsp; </SPAN></SPAN><SPAN style="FONT-FAMILY: 宋体">：系统中各函数的圈复杂度的总和（关于函数的圈复杂度的计算方法请参见〈〈</SPAN><SPAN lang=EN-US>Logiscope</SPAN><SPAN style="FONT-FAMILY: 宋体">函数度量元〉〉文挡）。</SPAN><SPAN lang=EN-US><o:p></o:p></SPAN></P>
<P class=MsoNormal><SPAN lang=EN-US><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>ap_func</SPAN><SPAN style="FONT-FAMILY: 宋体">：系统中函数的数量（包括成员函数和非成员函数）</SPAN><SPAN lang=EN-US><o:p></o:p></SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">如果该值过高，则说明系统中有大量函数的圈复杂度的值过高，也就是说系统中有大量过于复杂的函数。由于函数的复杂性过高，对于系统的维护工作是很不利的。</SPAN><SPAN lang=EN-US><o:p></o:p></SPAN></P>
<H2><A name=_Toc26351675><SPAN lang=EN-US>2.13<SPAN>&nbsp; </SPAN>"<SPAN> Ratio of recursive edges on the call graph</SPAN> ":<SPAN style="COLOR: red"><SPAN>&nbsp; </SPAN></SPAN><SPAN>RECU_Ratio</SPAN> <SPAN>&nbsp;&nbsp;&nbsp; </SPAN><SPAN>[ 0.0 ,<SPAN>&nbsp; </SPAN>5.0 ]</SPAN></SPAN></A></H2>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">度量元名称：</SPAN><SPAN> </SPAN><SPAN style="FONT-FAMILY: 宋体">递归调用的百分比。</SPAN><SPAN lang=EN-US><o:p></o:p></SPAN></P>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">解释说明：</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">该度量元的计算公式为：</SPAN></P>
<H3><A name=_Toc20815395></A><A name=_Toc26351676><SPAN><SPAN lang=EN-US style="FONT-FAMILY: 'Times New Roman'">RECU_Ratio = (ap_cg_cycle * 100) / ap_cg_edge</SPAN></SPAN></A><SPAN lang=EN-US style="FONT-FAMILY: 'Times New Roman'"><o:p></o:p></SPAN></H3>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">其中：</SPAN><SPAN lang=EN-US><o:p></o:p></SPAN></P>
<P class=MsoNormal><SPAN lang=EN-US>ap_cg_cycle<SPAN>&nbsp; </SPAN></SPAN><SPAN style="FONT-FAMILY: 宋体">：</SPAN><SPAN style="FONT-FAMILY: 宋体">函数调用流程图中递归调用的数量<SPAN>。</SPAN></SPAN><SPAN lang=EN-US><o:p></o:p></SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US><SPAN>&nbsp;&nbsp;&nbsp; </SPAN>ap_cg_edge<SPAN>&nbsp; </SPAN></SPAN><SPAN style="FONT-FAMILY: 宋体">：</SPAN><SPAN style="FONT-FAMILY: 宋体">函数调用流程图中边的数量<SPAN>。</SPAN></SPAN><SPAN lang=EN-US><o:p></o:p></SPAN></P>
<H2><A name=_Toc26351677><SPAN lang=EN-US>2.14<SPAN>&nbsp; </SPAN>" Number of Levels in the Call Graph ":<SPAN>&nbsp; </SPAN>ap_cg_levl <SPAN>&nbsp;&nbsp;&nbsp; </SPAN><SPAN>[ 2 ,<SPAN>&nbsp; </SPAN>9 ]</SPAN></SPAN></A></H2>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">度量元名称：</SPAN><SPAN> </SPAN><SPAN style="FONT-FAMILY: 宋体">函数调用流程图的最大层次数。</SPAN><SPAN lang=EN-US><o:p></o:p></SPAN></P>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">解释说明：</SPAN></P>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">在系统所有的函数调用流程图中，最大的层次数。<BR></SPAN></P>
<P class=MsoNormal><BR><SPAN style="FONT-FAMILY: 宋体"></SPAN><SPAN lang=EN-US><o:p></o:p></SPAN></P>
<P class=MsoNormal><BR><B><SPAN lang=EN-US style="FONT-FAMILY: 黑体"><o:p></o:p></SPAN></B></P><img src ="http://www.cnitblog.com/qiuyangzh/aggbug/967.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/qiuyangzh/" target="_blank">qiuyangzh</a> 2005-07-15 21:24 <a href="http://www.cnitblog.com/qiuyangzh/archive/2005/07/15/967.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Logiscope-Audit类度量元</title><link>http://www.cnitblog.com/qiuyangzh/archive/2005/07/15/969.html</link><dc:creator>qiuyangzh</dc:creator><author>qiuyangzh</author><pubDate>Fri, 15 Jul 2005 13:24:00 GMT</pubDate><guid>http://www.cnitblog.com/qiuyangzh/archive/2005/07/15/969.html</guid><wfw:comment>http://www.cnitblog.com/qiuyangzh/comments/969.html</wfw:comment><comments>http://www.cnitblog.com/qiuyangzh/archive/2005/07/15/969.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.cnitblog.com/qiuyangzh/comments/commentRss/969.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/qiuyangzh/services/trackbacks/969.html</trackback:ping><description><![CDATA[<H1 style="TEXT-ALIGN: justify"><A name=_Toc26352652><SPAN lang=EN-US style="FONT-FAMILY: 黑体">1 前言</SPAN></A><SPAN lang=EN-US style="FONT-FAMILY: 黑体"><?xml:namespace prefix = o /><o:p></o:p></SPAN></H1>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">本文挡描述的是</SPAN><SPAN lang=EN-US style="FONT-FAMILY: 宋体">Logiscope——Audit中常用的类度量元的具体含义。<o:p></o:p></SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">对每个度量元的解释分为以下几部分：<SPAN lang=EN-US><o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">首先是该度量元的原文名称，后面是该度量元的代号，跟在后面的是<SPAN lang=EN-US>Audit质量模型为该度量元设的参考值（用中括号括起。当然，对于这个范围值，我们可以对它进行修改），再往下就是对该度量元含义的具体解释。</SPAN></SPAN></P>
<H1 style="TEXT-ALIGN: justify"><A name=_Toc26352653><SPAN lang=EN-US style="FONT-FAMILY: 黑体">2类度量元</SPAN></A><SPAN lang=EN-US style="FONT-FAMILY: 黑体"><o:p></o:p></SPAN></H1>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">下面分别介绍类作用域中中各个度量元</SPAN><SPAN style="FONT-FAMILY: 宋体">的具体含义</SPAN><SPAN style="FONT-FAMILY: 宋体">，注意，下面讨论的所有问题都是站在一个类的角度上的，这一点对于我们理解这些度量元很重要。</SPAN></P>
<H2><A name=_Toc26352654><SPAN lang=EN-US>2.1 "Class Comments Frequency": COMFclass<SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>[ 0.2,<SPAN>&nbsp; </SPAN>+oo ]</SPAN></A></H2>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">度量元的名称：类注释频度</SPAN></P>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">解释说明：</SPAN><SPAN lang=EN-US> </SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">该度量元表示类中注释的频度。所谓类的注释，只限于类定义的中的注释，不包括类实现中的注释。</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">该度量元的计算公式为：</SPAN></P>
<P class=MsoNormal><B><SPAN lang=EN-US style="FONT-FAMILY: 黑体">COMFclass = <o:p></o:p></SPAN></B></P>
<P class=MsoNormal><B><SPAN lang=EN-US style="FONT-FAMILY: 黑体">(cl_bcom + cl_bcob) / (cl_func_publ + cl_func_prot + cl_data_prot + cl_data_publ)<o:p></o:p></SPAN></B></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">其中：</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US style="FONT-FAMILY: 黑体">cl_bcom</SPAN><SPAN style="FONT-FAMILY: 宋体">：</SPAN><SPAN lang=EN-US style="FONT-FAMILY: 黑体"><SPAN>&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-FAMILY: 宋体">类前的注释数量（只能为</SPAN><SPAN lang=EN-US>1</SPAN><SPAN style="FONT-FAMILY: 宋体">或</SPAN><SPAN lang=EN-US>0</SPAN><SPAN style="FONT-FAMILY: 宋体">）</SPAN><SPAN lang=EN-US style="FONT-FAMILY: 黑体"><o:p></o:p></SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US style="FONT-FAMILY: 黑体">cl_bcob</SPAN><SPAN style="FONT-FAMILY: 宋体">：</SPAN><SPAN lang=EN-US style="FONT-FAMILY: 黑体"><SPAN>&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-FAMILY: 宋体">类定义中的注释数量</SPAN><SPAN lang=EN-US style="FONT-FAMILY: 黑体"><o:p></o:p></SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US style="FONT-FAMILY: 黑体">cl_func_publ</SPAN><SPAN style="FONT-FAMILY: 宋体">：</SPAN><SPAN style="FONT-FAMILY: 宋体">类中</SPAN><SPAN lang=EN-US>public</SPAN><SPAN style="FONT-FAMILY: 宋体">成员函数的数量</SPAN><SPAN lang=EN-US style="FONT-FAMILY: 黑体"><o:p></o:p></SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US style="FONT-FAMILY: 黑体">cl_func_prot</SPAN><SPAN style="FONT-FAMILY: 宋体">：</SPAN><SPAN style="FONT-FAMILY: 宋体">类中</SPAN><SPAN lang=EN-US>protected</SPAN><SPAN style="FONT-FAMILY: 宋体">成员函数的数量</SPAN><SPAN lang=EN-US style="FONT-FAMILY: 黑体"><o:p></o:p></SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US style="FONT-FAMILY: 黑体">cl_data_prot</SPAN><SPAN style="FONT-FAMILY: 宋体">：</SPAN><SPAN style="FONT-FAMILY: 宋体">类中</SPAN><SPAN lang=EN-US>protected</SPAN><SPAN style="FONT-FAMILY: 宋体">数据成员的数量</SPAN><SPAN lang=EN-US style="FONT-FAMILY: 黑体"><o:p></o:p></SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US style="FONT-FAMILY: 黑体">cl_data_publ</SPAN><SPAN style="FONT-FAMILY: 宋体">：</SPAN><SPAN style="FONT-FAMILY: 宋体">类中</SPAN><SPAN lang=EN-US>public</SPAN><SPAN style="FONT-FAMILY: 宋体">数据成员的数量</SPAN></P><SPAN style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体">类中每一个对外部可用的成员函数和数据成员，都应该加以注释，从而方便于类的使用者。<BR></SPAN>
<H2><A name=_Toc26352655><B><SPAN lang=EN-US>2.2</SPAN></B><SPAN lang=EN-US> "Fan out value of a class":<SPAN>&nbsp;&nbsp; </SPAN>FAN_OUTclass <SPAN>&nbsp;&nbsp;</SPAN>[ 0,<SPAN>&nbsp; </SPAN>20 ]</SPAN></A></H2>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">度量元的名称：</SPAN><SPAN style="FONT-FAMILY: 宋体">类的扇出值。</SPAN></P>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">解释说明：</SPAN><SPAN lang=EN-US> </SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">该度量元的计算公式为：</SPAN></P>
<H3><A name=_Toc26350517></A><A name=_Toc26352656><SPAN><SPAN lang=EN-US>FAN_OUTclass = cl_data_prot + cl_data_publ +cl_usedp + cl_data_vare</SPAN></SPAN></A></H3>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">其中：</SPAN><SPAN lang=EN-US>cl_data_prot</SPAN><SPAN style="FONT-FAMILY: 宋体">：</SPAN> <SPAN style="FONT-FAMILY: 宋体">类中</SPAN><SPAN lang=EN-US>protected</SPAN><SPAN style="FONT-FAMILY: 宋体">数据成员的数量之和，</SPAN></P>
<P class=MsoNormal><SPAN lang=EN-US><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>cl_data_publ</SPAN><SPAN style="FONT-FAMILY: 宋体">：</SPAN> <SPAN style="FONT-FAMILY: 宋体">类中</SPAN><SPAN lang=EN-US>public</SPAN><SPAN style="FONT-FAMILY: 宋体">数据成员的数量之和</SPAN><SPAN lang=EN-US>,</SPAN></P>
<P class=MsoNormal><SPAN lang=EN-US><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>cl_usedp</SPAN><SPAN style="FONT-FAMILY: 宋体">：</SPAN><SPAN lang=EN-US><SPAN>&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-FAMILY: 宋体">类函数所使用的参数的数量之和，</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 52.5pt"><SPAN lang=EN-US>cl_data_vare<SPAN>&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-FAMILY: 宋体">类函数中使用的外部类的数据成员的数量之和。</SPAN></P>
<P class=MsoNormal><SPAN lang=EN-US><SPAN>&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-FAMILY: 宋体">这个度量元反映了类对外的数据输出量，其值越大，就说明这个类对整个系统的影响越大。</SPAN></P>
<H2><A name=_Toc26352657><B><SPAN lang=EN-US>2.3</SPAN></B><SPAN lang=EN-US> "Fan in of a class":<SPAN>&nbsp;&nbsp; </SPAN>FAN_INclass <SPAN>&nbsp;&nbsp; </SPAN><SPAN>&nbsp;&nbsp; </SPAN>[ 0,<SPAN>&nbsp; </SPAN>15 ]</SPAN></A></H2>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">度量元的名称：</SPAN><SPAN style="FONT-FAMILY: 宋体">类的扇入值。</SPAN></P>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">解释说明：</SPAN><SPAN lang=EN-US> </SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">该度量元的计算公式为：</SPAN></P>
<H3><A name=_Toc26350519></A><A name=_Toc26352658><SPAN><SPAN lang=EN-US>FAN_INclass = cl_data_prot + cl_data_publ + cl_usedp + cl_data_vari</SPAN></SPAN></A></H3>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">其中：</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 31.5pt"><SPAN lang=EN-US>cl_data_prot</SPAN><SPAN style="FONT-FAMILY: 宋体">：</SPAN> <SPAN style="FONT-FAMILY: 宋体">类中</SPAN><SPAN lang=EN-US>protected</SPAN><SPAN style="FONT-FAMILY: 宋体">数据成员的数量，</SPAN></P>
<P class=MsoNormal><SPAN lang=EN-US><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>cl_data_publ</SPAN><SPAN style="FONT-FAMILY: 宋体">：</SPAN> <SPAN style="FONT-FAMILY: 宋体">类中</SPAN><SPAN lang=EN-US>public</SPAN><SPAN style="FONT-FAMILY: 宋体">数据成员的数量</SPAN><SPAN lang=EN-US>,</SPAN></P>
<P class=MsoNormal><SPAN lang=EN-US><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>cl_usedp</SPAN><SPAN style="FONT-FAMILY: 宋体">：</SPAN><SPAN lang=EN-US><SPAN>&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-FAMILY: 宋体">类函数所使用的参数的数量之和，</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 31.5pt"><SPAN lang=EN-US>cl_data_vari</SPAN><SPAN style="FONT-FAMILY: 宋体">：</SPAN> <SPAN style="FONT-FAMILY: 宋体">类函数中使用本类的属性的次数之和</SPAN></P>
<P class=MsoNormal><SPAN lang=EN-US><SPAN>&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-FAMILY: 宋体">这个度量元反映了类通过其数据成员和成员函数参数而引进的数据输入量，其值越大，该类日后需要频繁修改的可能性就越大。</SPAN></P>
<H2><A name=_Toc26352659><B><SPAN lang=EN-US>2.4</SPAN></B><SPAN lang=EN-US> "Number of Dependent Methods" : cl_dep_meth <SPAN>&nbsp;</SPAN>[0,<SPAN>&nbsp; </SPAN>6 ]</SPAN></A></H2>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">度量元的名称：类对其他模块的依赖性。</SPAN></P>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">解释说明：</SPAN><SPAN lang=EN-US> </SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">该度量元表示，在一个类中，要依赖于本类之外的其他模块才能实现功能的类函数的个数。符合这样的条件的函数包括：</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 31.5pt"><SPAN lang=EN-US>1 </SPAN><SPAN style="FONT-FAMILY: 宋体">在该函数中调用了其它类的类函数。</SPAN></P>
<P class=MsoNormal><SPAN lang=EN-US><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN>&nbsp; </SPAN>2 </SPAN><SPAN style="FONT-FAMILY: 宋体">在该函数中使用了其它类的数据成员。</SPAN></P>
<P class=MsoNormal><SPAN lang=EN-US><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN>&nbsp; </SPAN>3 </SPAN><SPAN style="FONT-FAMILY: 宋体">在该函数的参数中有其它类的类类型的参数。</SPAN></P>
<P class=MsoNormal><SPAN lang=EN-US><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN>&nbsp; </SPAN>4 </SPAN><SPAN style="FONT-FAMILY: 宋体">在该函数中有一个其它类的类类型的变量。</SPAN></P>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">该度量元的目的是控制类与类之间的耦合程度。</SPAN></P>
<H2><A name=_Toc26352660><B><SPAN lang=EN-US>2.5</SPAN></B><SPAN lang=EN-US> "Number of Base Classes" : in_bases<SPAN> </SPAN><SPAN>&nbsp;&nbsp; </SPAN>[ 0,<SPAN>&nbsp; </SPAN>3 ]</SPAN></A></H2>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">度量元的名称：基类的数量</SPAN></P>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">解释说明：</SPAN><SPAN lang=EN-US> </SPAN></P>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">该类基类的数量，基类包括其类继承图中所有的父类。当</SPAN><SPAN lang=EN-US>MFC</SPAN><SPAN style="FONT-FAMILY: 宋体">类库中的类作为父类时，则该</SPAN><SPAN lang=EN-US>MFC</SPAN><SPAN style="FONT-FAMILY: 宋体">类的基类的数量不再计入其中。在下图中，</SPAN><SPAN lang=EN-US>class 4</SPAN><SPAN style="FONT-FAMILY: 宋体">的</SPAN><SPAN lang=EN-US>in_bases</SPAN><SPAN style="FONT-FAMILY: 宋体">为</SPAN><SPAN lang=EN-US>4</SPAN><SPAN style="FONT-FAMILY: 宋体">。</SPAN></P>
<DIV style="TEXT-ALIGN: center"><IMG height=358 alt=logiscope83.jpg src="http://www.cnitblog.com/images/cnitblog_com/qiuyangzh/logiscope3/logiscope83.jpg" width=398 border=0><BR>
<DIV style="TEXT-ALIGN: left">
<H2><A name=_Toc26352661><B><SPAN lang=EN-US>2.6</SPAN></B><SPAN lang=EN-US> "Weighted Methods Per Class" : cl_wmc<SPAN>&nbsp; </SPAN>[ 0,<SPAN>&nbsp;&nbsp; </SPAN>25 ]</SPAN></A></H2>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">度量元的名称：类的圈复杂度。</SPAN></P>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">解释说明：</SPAN><SPAN lang=EN-US> </SPAN></P>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">类中各个成员函数的圈复杂度的总和<SPAN>（关于函数的圈复杂度的计算方法请参见〈〈</SPAN></SPAN><SPAN lang=EN-US>Logiscope</SPAN><SPAN style="FONT-FAMILY: 宋体">函数度量元〉〉文挡）。</SPAN></P>
<H2><A name=_Toc26352662><B><SPAN lang=EN-US>2.7</SPAN></B><SPAN lang=EN-US> "Specializability":SPECIAL<SPAN> </SPAN>[ 0,<SPAN>&nbsp; </SPAN>25 ]</SPAN></A></H2>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">度量元的名称：类功能的专一性。</SPAN></P>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">解释说明：</SPAN><SPAN lang=EN-US> </SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">该度量元的计算公式为：</SPAN></P>
<P class=MsoNormal><B><SPAN lang=EN-US style="FONT-FAMILY: 黑体">SPECIAL = <SPAN>&nbsp;</SPAN><o:p></o:p></SPAN></B></P>
<P class=MsoNormal><B><SPAN lang=EN-US style="FONT-FAMILY: 黑体">2 * ( cl_data_publ + cl_data_prot ) <SPAN>&nbsp;</SPAN>+<A name=_Toc529676269><SPAN>&nbsp; </SPAN>cl_func_publ + cl_func_prot +</A> <A name=_Toc529676270>10 *in_bases </A></SPAN></B></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">其中：</SPAN><SPAN lang=EN-US>cl_data_publ</SPAN><SPAN style="FONT-FAMILY: 宋体">：类中</SPAN><SPAN lang=EN-US>public</SPAN><SPAN style="FONT-FAMILY: 宋体">型的数据成员的数量。</SPAN></P>
<P class=MsoNormal><SPAN lang=EN-US><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>cl_data_prot</SPAN><SPAN style="FONT-FAMILY: 宋体">：类中</SPAN><SPAN lang=EN-US>protected</SPAN><SPAN style="FONT-FAMILY: 宋体">型的数据成员的数量。</SPAN></P>
<P class=MsoNormal><SPAN lang=EN-US><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>cl_func_publ</SPAN><SPAN style="FONT-FAMILY: 宋体">：类中</SPAN><SPAN lang=EN-US>public</SPAN><SPAN style="FONT-FAMILY: 宋体">型的成员函数的数量。</SPAN></P>
<P class=MsoNormal><SPAN lang=EN-US><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>cl_func_prot<SPAN>&nbsp; </SPAN></SPAN><SPAN style="FONT-FAMILY: 宋体">类中</SPAN><SPAN lang=EN-US>protected</SPAN><SPAN style="FONT-FAMILY: 宋体">型的成员函数的数量。</SPAN></P>
<P class=MsoNormal><SPAN lang=EN-US><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>in_bases</SPAN><SPAN style="FONT-FAMILY: 宋体">：</SPAN><SPAN lang=EN-US><SPAN>&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-FAMILY: 宋体">该类的基类的数量（包括直接基类的基类）。</SPAN></P>
<H2><A name=_Toc26352663><B><SPAN lang=EN-US>2.8</SPAN></B><SPAN lang=EN-US> "Usability": USABLE<SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>[ 0,<SPAN>&nbsp; </SPAN>10 ]</SPAN></A></H2>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">度量元的名称：类的易用性。</SPAN></P>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">解释说明：</SPAN><SPAN lang=EN-US> </SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">该度量元的计算公式为：</SPAN></P>
<H3><A name=_Toc26350525></A><A name=_Toc26352664><SPAN><SPAN lang=EN-US>USABLE = (2 * cl_data_publ) + cl_func_publ</SPAN></SPAN></A></H3>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">其中：</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 31.5pt"><SPAN lang=EN-US>cl_data_publ</SPAN><SPAN style="FONT-FAMILY: 宋体">：</SPAN><SPAN lang=EN-US><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-FAMILY: 宋体">类中</SPAN><SPAN lang=EN-US>public</SPAN><SPAN style="FONT-FAMILY: 宋体">型的数据成员的数量</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 31.5pt"><SPAN lang=EN-US>cl_func_publ</SPAN><SPAN style="FONT-FAMILY: 宋体">：</SPAN><SPAN lang=EN-US><SPAN>&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-FAMILY: 宋体">类中</SPAN><SPAN lang=EN-US>public</SPAN><SPAN style="FONT-FAMILY: 宋体">型的成员函数的数量</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 31.5pt"><SPAN style="FONT-FAMILY: 宋体">该度量元表示了类对外的接口情况，类对外的接口越多，掌握、使用这个类就越困难。</SPAN></P>
<H2><A name=_Toc26352665><B><SPAN lang=EN-US>2.9</SPAN></B><SPAN lang=EN-US> "Encapsulation rules":<SPAN>&nbsp;&nbsp; </SPAN>ENCAP<SPAN> </SPAN><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>[ 0,<SPAN>&nbsp; </SPAN>5 ]</SPAN></A></H2>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">度量元的名称：类的封装性。</SPAN></P>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">解释说明：</SPAN><SPAN lang=EN-US> </SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">该度量元的计算公式为：</SPAN></P>
<H3><A name=_Toc26350527></A><A name=_Toc26352666><SPAN><SPAN lang=EN-US>ENCAP = cl_data_publ + cl_data_vare</SPAN></SPAN></A></H3>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">其中：</SPAN><SPAN lang=EN-US>cl_data_publ</SPAN><SPAN style="FONT-FAMILY: 宋体">：类中</SPAN><SPAN lang=EN-US>public</SPAN><SPAN style="FONT-FAMILY: 宋体">型的数据成员的数量</SPAN><SPAN lang=EN-US> </SPAN></P>
<P class=MsoNormal><SPAN lang=EN-US><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>cl_data_vare</SPAN><SPAN style="FONT-FAMILY: 宋体">：在类成员函数中使用的外部类的数据成员的次数之和</SPAN></P>
<H2><A name=_Toc26352667><B><SPAN lang=EN-US>2.10</SPAN></B><SPAN lang=EN-US> "Number of Direct Users Classes" : cu_cdusers <SPAN></SPAN>[<SPAN>&nbsp; </SPAN>0<SPAN>&nbsp; </SPAN>, <SPAN>&nbsp;&nbsp; </SPAN>4<SPAN>&nbsp; </SPAN>]</SPAN></A></H2>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">度量元的名称：被其他类使用的次数。</SPAN></P>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">解释说明：</SPAN><SPAN lang=EN-US> </SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">该类被其他类使用的次数</SPAN><SPAN lang=EN-US> (</SPAN><SPAN style="FONT-FAMILY: 宋体">被同一个类多次使用计为一次</SPAN><SPAN lang=EN-US>).</SPAN></P>
<H2><A name=_Toc26352668><B><SPAN lang=EN-US>2.11</SPAN></B><SPAN lang=EN-US> "Class Coupling" : cl_cobc <SPAN></SPAN><SPAN>&nbsp;&nbsp; </SPAN>[ 0,<SPAN>&nbsp; </SPAN>12 ]</SPAN></A></H2>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">度量元的名称：类耦合</SPAN></P>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">解释说明：</SPAN><SPAN lang=EN-US> </SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">该度量元的值，包括以下几种情况之和：</SPAN></P>
<P class=MsoNormal><SPAN lang=EN-US><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN>&nbsp;</SPAN>1 </SPAN><SPAN style="FONT-FAMILY: 宋体">该类直接基类的数量</SPAN></P>
<P class=MsoNormal><SPAN lang=EN-US><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN>&nbsp;</SPAN>2 </SPAN><SPAN style="FONT-FAMILY: 宋体">该类中类类型的数据成员的数量</SPAN></P>
<P class=MsoNormal><SPAN lang=EN-US><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN>&nbsp;</SPAN>3 </SPAN><SPAN style="FONT-FAMILY: 宋体">调用了静态成员函数的成员函数的数量的二倍。</SPAN></P>
<P class=MsoNormal><SPAN lang=EN-US><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN>&nbsp;</SPAN>4</SPAN><SPAN style="FONT-FAMILY: 宋体">有类类型参数的类成员函数的数量的二倍。</SPAN></P>
<P class=MsoNormal><SPAN lang=EN-US><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN>&nbsp;</SPAN>5</SPAN><SPAN style="FONT-FAMILY: 宋体">有类类型变量的类函数数量的三倍。</SPAN></P>
<H2><A name=_Toc26352669><B><SPAN lang=EN-US>2.12</SPAN></B><SPAN lang=EN-US> "Number of Children" : in_noc<SPAN>&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>[ 0,<SPAN>&nbsp; </SPAN>2 ]</SPAN></A></H2>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">度量元的名称：派生类数量。</SPAN></P>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">解释说明：从该类派生的类的数量。只计直接派生类的数量，间接派生不算在内。</SPAN></P>
<H2><A name=_Toc26352670><B><SPAN lang=EN-US>2.13</SPAN></B><SPAN lang=EN-US> "Rate of class autonomy ": AUTONOM<SPAN>&nbsp; </SPAN>[30.0,<SPAN>&nbsp; </SPAN>100.0 ]</SPAN></A></H2>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">度量元的名称：类自治的程度。</SPAN></P>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">解释说明：</SPAN><SPAN lang=EN-US> </SPAN></P>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">该度量元的计算方法为：与其它的类没有牵扯关系的类函数和类数据成员的数量之和，再</SPAN><SPAN style="FONT-FAMILY: 宋体">除以</SPAN><SPAN style="FONT-FAMILY: 宋体">类函数和类数据成员的数量之和的百分比<B>。</B></SPAN><B><SPAN lang=EN-US><o:p></o:p></SPAN></B></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">该度量元的计算公式为：</SPAN></P>
<H4><SPAN lang=EN-US>AUTONOM = </SPAN></H4>
<P class=MsoBodyText><SPAN lang=EN-US><SPAN>&nbsp;</SPAN><SPAN>&nbsp;</SPAN>100 * ((cl_func_priv + cl_func_prot + cl_func_publ - cl_dep_meth) +</SPAN></P>
<P class=MsoBodyText><SPAN lang=EN-US><SPAN>&nbsp;</SPAN><SPAN>&nbsp;</SPAN>(cl_data_prot + cl_data_publ + cl_data_priv - cl_data_class)) <SPAN>&nbsp;</SPAN>/ </SPAN></P>
<P class=MsoBodyText style="MARGIN-LEFT: 10.55pt; TEXT-INDENT: -10.55pt"><SPAN lang=EN-US><SPAN>&nbsp; </SPAN>(cl_func_priv + cl_func_prot + cl_func_publ + cl_data_priv + cl_data_prot + cl_data_publ)</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">其中：</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 10.5pt"><SPAN lang=EN-US>cl_func_priv </SPAN><SPAN style="FONT-FAMILY: 宋体">：</SPAN><SPAN lang=EN-US><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-FAMILY: 宋体">类中</SPAN><SPAN lang=EN-US>private</SPAN><SPAN style="FONT-FAMILY: 宋体">型的成员函数的数量。</SPAN></P>
<P class=MsoNormal><SPAN lang=EN-US><SPAN>&nbsp;&nbsp;&nbsp; </SPAN><SPAN>&nbsp;&nbsp;</SPAN>cl_func_prot </SPAN><SPAN style="FONT-FAMILY: 宋体">：</SPAN><SPAN lang=EN-US><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-FAMILY: 宋体">类中</SPAN><SPAN lang=EN-US>protected</SPAN><SPAN style="FONT-FAMILY: 宋体">型的成员函数的数量。</SPAN></P>
<P class=MsoNormal><SPAN lang=EN-US><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>cl_func_publ </SPAN><SPAN style="FONT-FAMILY: 宋体">：</SPAN><SPAN lang=EN-US><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-FAMILY: 宋体">类中</SPAN><SPAN lang=EN-US>public</SPAN><SPAN style="FONT-FAMILY: 宋体">型的成员函数的数量。</SPAN></P>
<P class=MsoNormal><SPAN lang=EN-US><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>cl_data_prot </SPAN><SPAN style="FONT-FAMILY: 宋体">：</SPAN><SPAN lang=EN-US><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-FAMILY: 宋体">类中</SPAN><SPAN lang=EN-US>protected</SPAN><SPAN style="FONT-FAMILY: 宋体">型的数据成员的数量。</SPAN></P>
<P class=MsoNormal><SPAN lang=EN-US><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>cl_data_publ </SPAN><SPAN style="FONT-FAMILY: 宋体">：</SPAN><SPAN lang=EN-US><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-FAMILY: 宋体">类中</SPAN><SPAN lang=EN-US>public</SPAN><SPAN style="FONT-FAMILY: 宋体">型的数据成员的数量。</SPAN></P>
<P class=MsoNormal><SPAN lang=EN-US><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>cl_data_priv </SPAN><SPAN style="FONT-FAMILY: 宋体">：</SPAN><SPAN lang=EN-US><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-FAMILY: 宋体">类中</SPAN><SPAN lang=EN-US>private</SPAN><SPAN style="FONT-FAMILY: 宋体">型的数据成员的数量。</SPAN></P>
<P class=MsoNormal><SPAN lang=EN-US><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>cl_data_class</SPAN><SPAN style="FONT-FAMILY: 宋体">：</SPAN><SPAN lang=EN-US><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-FAMILY: 宋体">类中类类型数据成员的个数</SPAN><SPAN lang=EN-US>.</SPAN></P>
<P class=MsoNormal><SPAN lang=EN-US><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>cl_dep_meth</SPAN><SPAN style="FONT-FAMILY: 宋体">：</SPAN><SPAN lang=EN-US><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-FAMILY: 宋体">类函数中要依赖本类之外的函数的个数，</SPAN> <SPAN style="FONT-FAMILY: 宋体">这样的函数是指：</SPAN></P>
<P class=MsoNormal><SPAN lang=EN-US><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>1 </SPAN><SPAN style="FONT-FAMILY: 宋体">该函数使用了其他类的数据成员</SPAN></P>
<P class=MsoNormal><SPAN lang=EN-US><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>2 </SPAN><SPAN style="FONT-FAMILY: 宋体">在该函数中调用了其他类的函数</SPAN></P>
<P class=MsoNormal><SPAN lang=EN-US><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>3 </SPAN><SPAN style="FONT-FAMILY: 宋体">该函数有一个其他类类型的实体对象的参数</SPAN></P>
<P class=MsoNormal><SPAN lang=EN-US><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>4 </SPAN><SPAN style="FONT-FAMILY: 宋体">该函数中有一个其他类的类类型的变量</SPAN></P>
<H2><A name=_Toc26352671><B><SPAN lang=EN-US>2.14</SPAN></B><SPAN lang=EN-US><SPAN>&nbsp; </SPAN>"Number of used Classes" : cu_cdused <SPAN>&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>[ 0,<SPAN>&nbsp; </SPAN>4 ]</SPAN></A></H2>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">度量元的名称：使用其它类的数量</SPAN></P>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">解释说明：</SPAN><SPAN lang=EN-US> </SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">在该类中直接使用的其它类的数量。多次使用同一个类计为一次。</SPAN></P>
<H2><A name=_Toc26352672><B><SPAN lang=EN-US>2.15</SPAN></B><SPAN lang=EN-US> "Testability": TESTAB <SPAN>&nbsp;&nbsp;&nbsp;</SPAN>[ 0,<SPAN>&nbsp; </SPAN>100 ]</SPAN></A></H2>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">度量元的名称：易于测试性。</SPAN></P>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">解释说明：</SPAN><SPAN lang=EN-US> </SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">该度量元的计算公式为：</SPAN></P>
<P class=MsoBodyText><SPAN lang=EN-US>TESTAB = </SPAN></P>
<P class=MsoNormal><B><SPAN lang=EN-US style="FONT-FAMILY: 黑体"><SPAN>&nbsp;&nbsp;&nbsp; </SPAN>cl_fprot_path + cl_fpriv_path + cl_fpubl_path + cl_data_vare + cl_func_calle</SPAN><SPAN lang=EN-US><o:p></o:p></SPAN></B></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">其中：</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 31.5pt"><SPAN lang=EN-US>cl_fprot_path</SPAN><SPAN style="FONT-FAMILY: 宋体">：</SPAN><SPAN lang=EN-US><SPAN>&nbsp; </SPAN></SPAN><SPAN style="FONT-FAMILY: 宋体">类中所有的</SPAN><SPAN lang=EN-US>protected</SPAN><SPAN style="FONT-FAMILY: 宋体">型函数的执行路径总和，</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 31.5pt"><SPAN lang=EN-US>cl_fpriv_path</SPAN><SPAN style="FONT-FAMILY: 宋体">：</SPAN><SPAN lang=EN-US><SPAN>&nbsp; </SPAN></SPAN><SPAN style="FONT-FAMILY: 宋体">类中所有的</SPAN><SPAN lang=EN-US>private</SPAN><SPAN style="FONT-FAMILY: 宋体">型函数的执行路径总和，</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 31.5pt"><SPAN lang=EN-US>cl_fpubl_path</SPAN><SPAN style="FONT-FAMILY: 宋体">：</SPAN><SPAN lang=EN-US><SPAN>&nbsp; </SPAN></SPAN><SPAN style="FONT-FAMILY: 宋体">类中所有的</SPAN><SPAN lang=EN-US>public</SPAN><SPAN style="FONT-FAMILY: 宋体">型函数的执行路径总和。</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 31.5pt"><SPAN lang=EN-US>cl_data_vare </SPAN><SPAN style="FONT-FAMILY: 宋体">：</SPAN><SPAN lang=EN-US><SPAN>&nbsp; </SPAN></SPAN><SPAN style="FONT-FAMILY: 宋体">类函数中使用的外部类的数据成员的次数之和，</SPAN></P>
<P class=MsoNormal><SPAN lang=EN-US><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>cl_func_calle</SPAN><SPAN style="FONT-FAMILY: 宋体">：</SPAN><SPAN lang=EN-US><SPAN>&nbsp; </SPAN></SPAN><SPAN style="FONT-FAMILY: 宋体">类函数中对类外部的函数的调用次数之和，</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 31.5pt"><SPAN style="FONT-FAMILY: 宋体">通过观察该度量元的各个组成元素，我们会发现这些都是会对我们需要制定测试用例的数量产生重要影响的数据。</SPAN></P><BR></DIV></DIV><img src ="http://www.cnitblog.com/qiuyangzh/aggbug/969.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/qiuyangzh/" target="_blank">qiuyangzh</a> 2005-07-15 21:24 <a href="http://www.cnitblog.com/qiuyangzh/archive/2005/07/15/969.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Logiscope-Audit质量因素、质量标准</title><link>http://www.cnitblog.com/qiuyangzh/archive/2005/07/15/965.html</link><dc:creator>qiuyangzh</dc:creator><author>qiuyangzh</author><pubDate>Fri, 15 Jul 2005 13:23:00 GMT</pubDate><guid>http://www.cnitblog.com/qiuyangzh/archive/2005/07/15/965.html</guid><wfw:comment>http://www.cnitblog.com/qiuyangzh/comments/965.html</wfw:comment><comments>http://www.cnitblog.com/qiuyangzh/archive/2005/07/15/965.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/qiuyangzh/comments/commentRss/965.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/qiuyangzh/services/trackbacks/965.html</trackback:ping><description><![CDATA[<H1 style="TEXT-ALIGN: justify"><A name=_Toc28142696><SPAN lang=EN-US>1前言</SPAN></A></H1>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">本文介绍了</SPAN><SPAN lang=EN-US>Logiscope</SPAN><SPAN style="FONT-FAMILY: 宋体">——</SPAN><SPAN lang=EN-US>Audit</SPAN><SPAN style="FONT-FAMILY: 宋体">对应于软件质量模型，在质量因素级、质量标准级上的具体实现。需要说明的是，文档中描述的质量模型只涉及了可维护性这个质量因素。根据情况，我们可以制做出不同的质量模型。这篇文档的目的是为了能让大家更好的了解</SPAN><SPAN lang=EN-US>Audit</SPAN><SPAN style="FONT-FAMILY: 宋体">对软件质量模型的实现。</SPAN></P>
<H1 style="TEXT-ALIGN: justify"><A name=_Toc28142697><SPAN lang=EN-US>2 质量因素</SPAN></A></H1>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">我们先说质量因素这一级。每个质量因素都由若干个质量标准按权重相加组成。关于这些质量标准的含义，请看本文档第三部分的内容。<SPAN lang=EN-US><?xml:namespace prefix = o /><o:p></o:p></SPAN></SPAN></P>
<H2><A name=_Toc28142698><SPAN lang=EN-US>2．1 函数作用域</SPAN></A></H2>
<H3><A name=_Toc28142699><SPAN lang=EN-US>2.1.1函数的可维护性质量因素</SPAN></A></H3>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">该质量因素表示：对函数进行修改时，为防止引发错误，所需要做的工作的难度。其计算公式为：</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21.1pt"><B><SPAN lang=EN-US>function_MAINTAINABILITY<SPAN>&nbsp; </SPAN>= <SPAN>&nbsp;&nbsp;&nbsp;</SPAN>function_ANALYZABILITY <o:p></o:p></SPAN></B></P>
<P class=MsoNormal style="TEXT-INDENT: 21.1pt"><B><SPAN lang=EN-US><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>+ function_CHANGEABILITY <o:p></o:p></SPAN></B></P>
<P class=MsoNormal style="TEXT-INDENT: 21.1pt"><B><SPAN lang=EN-US><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>+ function_STABILITY <o:p></o:p></SPAN></B></P>
<P class=MsoNormal style="TEXT-INDENT: 21.1pt"><B><SPAN lang=EN-US><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>+ function_TESTABILITY<o:p></o:p></SPAN></B></P>
<H3><A name=_Toc28142700><SPAN lang=EN-US>2.1.2 函数调用复杂性质量因素</SPAN></A></H3>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">该质量因素表示：对函数进行修改时，为防止引发错误，所需要做的工作的难度。其计算公式为：</SPAN><SPAN lang=EN-US style="FONT-FAMILY: 宋体"><o:p></o:p></SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21.1pt"><B><SPAN lang=EN-US>relativeCall_MAINTAINABILITY <SPAN>&nbsp;</SPAN>= <SPAN>&nbsp;&nbsp;</SPAN>relativeCall_ANALYZABILITY<o:p></o:p></SPAN></B></P>
<P class=MsoNormal><B><SPAN lang=EN-US><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN>&nbsp;&nbsp;&nbsp;</SPAN><SPAN>&nbsp;</SPAN>+ relativeCall_STABILITY<o:p></o:p></SPAN></B></P>
<P class=MsoNormal><B><SPAN lang=EN-US><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN>+ relativeCall_TESTABILITY<o:p></o:p></SPAN></B></P>
<H2><A name=_Toc28142701><SPAN lang=EN-US>2．2 类作用域</SPAN></A></H2>
<H3><A name=_Toc28142702><SPAN lang=EN-US>2.2.1 类的可维护性质量因素</SPAN></A></H3>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">该质量因素表示：对类进行修改时，为防止引发错误，所需要做的工作的难度。其计算公式为：</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21.1pt"><B><SPAN lang=EN-US>class_MAINTAINABILITY <SPAN>&nbsp;</SPAN>= <SPAN>&nbsp;&nbsp;</SPAN>class_ANALYZABILITY <o:p></o:p></SPAN></B></P>
<P class=MsoNormal style="TEXT-INDENT: 21.1pt"><B><SPAN lang=EN-US><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>+ class_CHANGEABILITY <o:p></o:p></SPAN></B></P>
<P class=MsoNormal style="TEXT-INDENT: 21.1pt"><B><SPAN lang=EN-US><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>+ class_STABILITY <o:p></o:p></SPAN></B></P>
<P class=MsoNormal style="TEXT-INDENT: 21.1pt"><B><SPAN lang=EN-US><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>+ class_TESTABILITY<o:p></o:p></SPAN></B></P>
<H3><A name=_Toc28142703><SPAN lang=EN-US>2.2.2 类的可复用性质量因素</SPAN></A></H3>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">可复用性是指类是否能够被比较容易的复用。其计算公式为：</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21.1pt"><B><SPAN lang=EN-US>class_REUSABILITY<SPAN>&nbsp; </SPAN>= <SPAN>&nbsp;&nbsp;</SPAN>class_USABILITY <o:p></o:p></SPAN></B></P>
<P class=MsoNormal><B><SPAN lang=EN-US><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN>&nbsp;</SPAN>+ class_SPECIALIZABILITY <o:p></o:p></SPAN></B></P>
<P class=MsoNormal><B><SPAN lang=EN-US><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>+ class_ANALYZABILITY<o:p></o:p></SPAN></B></P>
<H2><A name=_Toc28142704><SPAN lang=EN-US>2．3 系统作用域</SPAN></A></H2>
<H3><A name=_Toc28142705><SPAN lang=EN-US>2.3.1系统的可维护性质量因素</SPAN></A></H3>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">该质量因素表示：对程序代码进行修改时，为防止引发错误，所需要做的工作的难度。其计算公式为：</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21.1pt"><B><SPAN lang=EN-US>application_MAINTAINABILITY<SPAN>&nbsp; </SPAN>=<SPAN>&nbsp; </SPAN>application_ANALYZABILITY <o:p></o:p></SPAN></B></P>
<P class=MsoNormal><B><SPAN lang=EN-US><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN>&nbsp;</SPAN>+ application_CHANGEABILITY <o:p></o:p></SPAN></B></P>
<P class=MsoNormal><B><SPAN lang=EN-US><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN>&nbsp;</SPAN>+ application_STABILITY <o:p></o:p></SPAN></B></P>
<P class=MsoNormal><B><SPAN lang=EN-US><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN>&nbsp;</SPAN>+ application_TESTABILITY<o:p></o:p></SPAN></B></P>
<H1 style="TEXT-ALIGN: justify"><A name=_Toc28142706><SPAN lang=EN-US>3 质量标准</SPAN></A></H1>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">下面我们讨论软件质量模型中质量标准这一级。质量标准组成了我们上面说到的质量因素。每个质量标准都是由若干个质量度量元按权重相加组成的。关于组成各个质量标准的度量元的含义，请看《<SPAN lang=EN-US>Logiscope-Audit函数度量元》、《Logiscope-Audit类度量元》、《Logiscope-Audit系统度量元》这3篇文章的内容。<o:p></o:p></SPAN></SPAN></P>
<H2><A name=_Toc28142707><SPAN lang=EN-US>3．1 函数的质量标准</SPAN></A></H2>
<H3><A name=_Toc28142708><SPAN lang=EN-US>3.1.1 函数易于测试性质量标准</SPAN></A></H3>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">该质量标准表示：函数被修改后，为保证系统不发生错误，需进行测试的工作量。计算公式为：</SPAN></P>
<P class=MsoNormal style="TEXT-ALIGN: center" align=center><B><SPAN lang=EN-US>function_TESTABILITY <SPAN>&nbsp;</SPAN>= <SPAN>&nbsp;</SPAN>dc_calls<SPAN>&nbsp; </SPAN>+ <SPAN>&nbsp;</SPAN>LEVL <SPAN>&nbsp;</SPAN>+ <SPAN>&nbsp;</SPAN>ct_path<SPAN>&nbsp; </SPAN>+ <SPAN>&nbsp;</SPAN>ic_param<o:p></o:p></SPAN></B></P>
<H3><A name=_Toc28142709><SPAN lang=EN-US>3.1.2 函数稳定性质量标准</SPAN></A></H3>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">该质量标准表示：函数之外的代码发生变化之后，导致函数发生错误的可能性。计算公式为：</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21.1pt"><B><SPAN lang=EN-US>function_STABILITY <SPAN>&nbsp;</SPAN>= <SPAN>&nbsp;</SPAN>dc_calling <SPAN>&nbsp;</SPAN>+ <SPAN>&nbsp;</SPAN>ic_varpe <SPAN>&nbsp;</SPAN>+ <SPAN>&nbsp;</SPAN>ct_exit <SPAN>&nbsp;</SPAN><o:p></o:p></SPAN></B></P>
<P class=MsoNormal style="TEXT-INDENT: 125.45pt"><B><SPAN lang=EN-US>+ <SPAN>&nbsp;</SPAN>dc_calls + ic_param<o:p></o:p></SPAN></B></P>
<H3><A name=_Toc28142710><SPAN lang=EN-US>3.1.3 函数适应变化性质量标准</SPAN></A></H3>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">该质量标准表示：当需要更改函数代码、修正函数代码缺陷时，需做的工作量。计算公式为：</SPAN></P>
<P class=MsoNormal style="TEXT-ALIGN: center" align=center><B><SPAN lang=EN-US>function_CHANGEABILITY <SPAN>&nbsp;</SPAN>=<SPAN>&nbsp; </SPAN>ic_param<SPAN>&nbsp; </SPAN>+ <SPAN>&nbsp;</SPAN>dc_lvars<SPAN>&nbsp; </SPAN>+ VOCF <SPAN>&nbsp;</SPAN>+ <SPAN>&nbsp;</SPAN>ct_bran<o:p></o:p></SPAN></B></P>
<H3><A name=_Toc28142711><SPAN lang=EN-US>3.1.4 函数易于分析性质量标准</SPAN></A></H3>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">该质量标准表示：理解函数所需花费的脑力劳动量，也就是函数的复杂程度。计算公式为：</SPAN></P>
<P class=MsoNormal style="TEXT-ALIGN: center" align=center><B><SPAN lang=EN-US>function_ANALYZABILITY <SPAN>&nbsp;</SPAN>= <SPAN>&nbsp;</SPAN>ct_vg <SPAN>&nbsp;</SPAN>+ <SPAN>&nbsp;</SPAN>lc_stat<SPAN>&nbsp; </SPAN>+ <SPAN>&nbsp;</SPAN>AVGS <SPAN>&nbsp;</SPAN>+ <SPAN>&nbsp;</SPAN>COMF<o:p></o:p></SPAN></B></P>
<H3><A name=_Toc28142712><SPAN lang=EN-US>3.1.5 函数调用可分析性质量标准</SPAN></A></H3>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">该质量标准表示：理解函数的相互调用关系所需花费的脑力劳动量。计算公式为：</SPAN></P>
<P class=MsoNormal style="TEXT-ALIGN: center" align=center><B><SPAN lang=EN-US>relativeCall_ANALYZABILITY <SPAN>&nbsp;</SPAN>= <SPAN>&nbsp;</SPAN>cg_strucpx <SPAN>&nbsp;</SPAN>+ <SPAN>&nbsp;</SPAN>cg_levels<o:p></o:p></SPAN></B></P>
<H3><A name=_Toc28142713><SPAN lang=EN-US>3.1.6函数调用稳定性质量标准</SPAN></A></H3>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">该质量标准表示：对程序（包括本函数体中的代码以及其他函数体中的代码）进行修改时，导致引发意想不到的错误的可能性。其计算公式为：</SPAN></P>
<P class=MsoNormal style="TEXT-ALIGN: center" align=center><B><SPAN lang=EN-US>relativeCall_STABILITY<SPAN>&nbsp; </SPAN>= <SPAN>&nbsp;</SPAN>IND_CALLS <SPAN>&nbsp;</SPAN>+<SPAN>&nbsp; </SPAN>cg_hiercpx<o:p></o:p></SPAN></B></P>
<H3><A name=_Toc28142714><SPAN lang=EN-US>3.1.7函数调用易于测试性质量标准</SPAN></A></H3>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">该质量标准表示：为了验证程序的正确性，所需测试工作的工作量。其计算公式为：</SPAN></P>
<P class=MsoNormal style="TEXT-ALIGN: center" align=center><B><SPAN lang=EN-US>relativeCall_TESTABILITY <SPAN>&nbsp;</SPAN>= <SPAN>&nbsp;</SPAN>cg_testab <SPAN>&nbsp;</SPAN>+ <SPAN>&nbsp;</SPAN>IND_CALLS<o:p></o:p></SPAN></B></P>
<H2><A name=_Toc28142715><SPAN lang=EN-US>3．2 类的质量标准</SPAN></A></H2>
<H3><A name=_Toc28142716><SPAN lang=EN-US>3.2.1类可分析性质量标准</SPAN></A></H3>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">该质量标准表示：为了理解类的功能，所需付出的脑力劳动量。其计算公式为：</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21.1pt"><B><SPAN lang=EN-US>class_ANALYZABILITY<SPAN>&nbsp; </SPAN>=<SPAN>&nbsp; </SPAN>cl_wmc<SPAN>&nbsp; </SPAN>+<SPAN>&nbsp; </SPAN>in_bases<SPAN>&nbsp; </SPAN>+<SPAN>&nbsp; </SPAN>cl_dep_meth<SPAN>&nbsp; </SPAN><o:p></o:p></SPAN></B></P>
<P class=MsoNormal style="TEXT-INDENT: 135.85pt"><B><SPAN lang=EN-US>+<SPAN>&nbsp; </SPAN>FAN_Inclass<SPAN>&nbsp; </SPAN>+ <SPAN>&nbsp;</SPAN>FAN_OUTclass <SPAN>&nbsp;</SPAN>+ <SPAN>&nbsp;</SPAN>COMFclass<o:p></o:p></SPAN></B></P>
<H3><A name=_Toc28142717><SPAN lang=EN-US>3.2.2 类适应变化性质量标准</SPAN></A></H3>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">该质量标准表示：当需要对类进行修改时，所需付出的工作量。其计算公式为：</SPAN></P>
<P class=MsoNormal style="TEXT-ALIGN: center" align=center><B><SPAN lang=EN-US>class_CHANGEABILITY <SPAN>&nbsp;</SPAN>= <SPAN>&nbsp;</SPAN>ENCAP <SPAN>&nbsp;</SPAN>+ <SPAN>&nbsp;</SPAN>USABLE <SPAN>&nbsp;</SPAN>+ <SPAN>&nbsp;</SPAN>SPECIAL<o:p></o:p></SPAN></B></P>
<H3><A name=_Toc28142718><SPAN lang=EN-US>3.2.3 类稳定性质量标准</SPAN></A></H3>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">该质量标准表示：当需要对程序进行修改时，为了防止发生错误所需付出的工作量。其计算公式为：</SPAN></P>
<P class=MsoNormal style="TEXT-ALIGN: center" align=center><B><SPAN lang=EN-US>class_STABILITY <SPAN>&nbsp;</SPAN>= <SPAN>&nbsp;</SPAN>AUTONOM <SPAN>&nbsp;</SPAN>+ <SPAN>&nbsp;</SPAN>in_noc<SPAN>&nbsp; </SPAN>+ <SPAN>&nbsp;</SPAN>cl_cobc<SPAN>&nbsp; </SPAN>+ <SPAN>&nbsp;</SPAN>cu_cdusers<o:p></o:p></SPAN></B></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">减少类与类之间的耦合，提高类的封装程度，会提高类的稳定性。</SPAN></P>
<H3><A name=_Toc28142719><SPAN lang=EN-US>3.2.4 类易于测试性质量标准</SPAN></A></H3>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">该质量标准表示：为了验证程序的正确性，所需测试工作的工作量。其计算公式为：</SPAN></P>
<P class=MsoNormal style="TEXT-ALIGN: center" align=center><B><SPAN lang=EN-US>class_TESTABILITY <SPAN>&nbsp;</SPAN>= <SPAN>&nbsp;</SPAN>in_bases<SPAN>&nbsp; </SPAN>+ <SPAN>&nbsp;</SPAN>TESTAB <SPAN>&nbsp;</SPAN>+ <SPAN>&nbsp;</SPAN>cu_cdused<o:p></o:p></SPAN></B></P>
<H3><A name=_Toc28142720><SPAN lang=EN-US>3.2.5 类易于使用性质量标准</SPAN></A></H3>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">该质量标准表示：类是否能被使用者容易的理解和方便、安全的使用。其计算公式为：</SPAN></P>
<P class=MsoNormal style="TEXT-ALIGN: center" align=center><B><SPAN lang=EN-US>class_USABILITY <SPAN>&nbsp;</SPAN>= <SPAN>&nbsp;</SPAN>USABLE <SPAN>&nbsp;</SPAN>+ <SPAN>&nbsp;</SPAN>ENCAP <SPAN>&nbsp;</SPAN>+ <SPAN>&nbsp;</SPAN>AUTONOM<o:p></o:p></SPAN></B></P>
<H3><A name=_Toc28142721><SPAN lang=EN-US>3.2.6<SPAN>&nbsp; </SPAN>类功能专一性质量标准</SPAN></A></H3>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">该质量标准用于检验类的可复用性。其计算公式为：</SPAN></P>
<P class=MsoNormal style="TEXT-ALIGN: center" align=center><B><SPAN lang=EN-US>class_SPECIALIZABILITY <SPAN>&nbsp;</SPAN>= <SPAN>&nbsp;</SPAN>SPECIAL <SPAN>&nbsp;</SPAN>+ <SPAN>&nbsp;</SPAN>ENCAP <SPAN>&nbsp;</SPAN>+ <SPAN>&nbsp;</SPAN>AUTONOM<o:p></o:p></SPAN></B></P>
<H2><A name=_Toc28142722><SPAN lang=EN-US>3．3 系统的质量标准</SPAN></A></H2>
<H3><A name=_Toc28142723><SPAN lang=EN-US>3.3.1 系统可分析性质量标准</SPAN></A></H3>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">该质量标准表示：系统的复杂程度，即系统是否能被较容易的理解。其计算公式为：</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21.1pt"><B><SPAN lang=EN-US>application_ANALYZABILITY <SPAN>&nbsp;</SPAN>= <SPAN>&nbsp;</SPAN>ap_inhg_levl <SPAN>&nbsp;</SPAN>+ <SPAN>&nbsp;</SPAN>AVG_CBO <SPAN>&nbsp;</SPAN>+ <SPAN>&nbsp;</SPAN>ap_aif <SPAN>&nbsp;</SPAN><o:p></o:p></SPAN></B></P>
<P class=MsoNormal style="TEXT-INDENT: 166.85pt"><B><SPAN lang=EN-US>+ <SPAN>&nbsp;</SPAN>ap_mif <SPAN>&nbsp;</SPAN>+ <SPAN>&nbsp;</SPAN>ap_cof <SPAN>&nbsp;</SPAN>+ <SPAN>&nbsp;</SPAN>RECU_Ratio <o:p></o:p></SPAN></B></P>
<H3><A name=_Toc28142724><SPAN lang=EN-US>3.3.2 系统适应变化性质量标准</SPAN></A></H3>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">该质量标准表示：当需要对程序进行修改时，为了防止发生错误所需付出的工作量。其计算公式为：</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21.1pt"><B><SPAN lang=EN-US>application_CHANGEABILITY <SPAN>&nbsp;</SPAN>= <SPAN>&nbsp;</SPAN>ap_inhg_levl<SPAN>&nbsp; </SPAN>+ URI_Ratio + NMM_Ratio <o:p></o:p></SPAN></B></P>
<P class=MsoNormal style="TEXT-INDENT: 166.85pt"><B><SPAN lang=EN-US>+ <SPAN>&nbsp;</SPAN>ap_pof<SPAN>&nbsp; </SPAN>+ <SPAN>&nbsp;</SPAN>ap_mif <o:p></o:p></SPAN></B></P>
<H3><A name=_Toc28142725><SPAN lang=EN-US>3.3.3<SPAN>&nbsp; </SPAN>系统稳定性质量标准</SPAN></A></H3>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">该质量标准表示：当需要对对系统进行修改时，系统发生错误的可能性。其计算公式为：</SPAN></P>
<P class=MsoNormal style="TEXT-ALIGN: center" align=center><B><SPAN lang=EN-US><SPAN>&nbsp;&nbsp; </SPAN>application_STABILITY <SPAN>&nbsp;</SPAN>= <SPAN>&nbsp;</SPAN>AVG_CBO <SPAN>&nbsp;</SPAN>+ <SPAN>&nbsp;</SPAN>ap_inhg_cpx<SPAN>&nbsp; </SPAN>+ <SPAN>&nbsp;</SPAN>ap_mhf<SPAN>&nbsp; </SPAN><o:p></o:p></SPAN></B></P>
<P class=MsoNormal style="TEXT-ALIGN: center" align=center><B><SPAN lang=EN-US><SPAN>&nbsp;&nbsp; </SPAN>+ <SPAN>&nbsp;</SPAN>ap_ahf<SPAN>&nbsp; </SPAN>+ <SPAN>&nbsp;</SPAN>ap_cof<o:p></o:p></SPAN></B></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">系统中的各模块之间的耦合越少，则系统的稳定性越好。</SPAN></P>
<H3><A name=_Toc28142726><SPAN lang=EN-US>3.3.4<SPAN>&nbsp; </SPAN>系统易于测试性质量标准</SPAN></A></H3>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体">该质量标准表示：为了验证系统功能的正确性，所需测试工作的工作量。其计算公式为：</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21.75pt; TEXT-ALIGN: center" align=center><B><SPAN lang=EN-US>application_TESTABILITY <SPAN>&nbsp;</SPAN>= <SPAN>&nbsp;</SPAN>AVG_VG <SPAN>&nbsp;</SPAN>+ <SPAN>&nbsp;</SPAN>NMM_Ratio <SPAN>&nbsp;</SPAN>+ <SPAN>&nbsp;</SPAN>ap_mhf <SPAN>&nbsp;</SPAN><o:p></o:p></SPAN></B></P>
<P class=MsoNormal style="TEXT-INDENT: 21.75pt; TEXT-ALIGN: center" align=center><B><SPAN lang=EN-US><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>+ <SPAN>&nbsp;</SPAN>ap_ahf <SPAN>&nbsp;</SPAN>+ <SPAN>&nbsp;</SPAN>ap_cg_levl<o:p></o:p></SPAN></B></P><img src ="http://www.cnitblog.com/qiuyangzh/aggbug/965.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/qiuyangzh/" target="_blank">qiuyangzh</a> 2005-07-15 21:23 <a href="http://www.cnitblog.com/qiuyangzh/archive/2005/07/15/965.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Logiscope使用说明书</title><link>http://www.cnitblog.com/qiuyangzh/archive/2005/07/15/955.html</link><dc:creator>qiuyangzh</dc:creator><author>qiuyangzh</author><pubDate>Fri, 15 Jul 2005 13:22:00 GMT</pubDate><guid>http://www.cnitblog.com/qiuyangzh/archive/2005/07/15/955.html</guid><wfw:comment>http://www.cnitblog.com/qiuyangzh/comments/955.html</wfw:comment><comments>http://www.cnitblog.com/qiuyangzh/archive/2005/07/15/955.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.cnitblog.com/qiuyangzh/comments/commentRss/955.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/qiuyangzh/services/trackbacks/955.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 1前言本文挡介绍了测试工具Logiscope的使用方法，包括以下内容：1 安装、配置Logiscope。2 Logiscop三大功能Audit、RuleChecker、TestChecker的使用。3 其它相关问题。2 Logiscope的使用Logiscope 有三项独立的功能，以3个独立的工具的形式出现，即Audit、RuleChecker、TestChecker，它们...&nbsp;&nbsp;<a href='http://www.cnitblog.com/qiuyangzh/archive/2005/07/15/955.html'>阅读全文</a><img src ="http://www.cnitblog.com/qiuyangzh/aggbug/955.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/qiuyangzh/" target="_blank">qiuyangzh</a> 2005-07-15 21:22 <a href="http://www.cnitblog.com/qiuyangzh/archive/2005/07/15/955.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>编码规范检测报告模板</title><link>http://www.cnitblog.com/qiuyangzh/archive/2005/07/15/1013.html</link><dc:creator>qiuyangzh</dc:creator><author>qiuyangzh</author><pubDate>Fri, 15 Jul 2005 13:20:00 GMT</pubDate><guid>http://www.cnitblog.com/qiuyangzh/archive/2005/07/15/1013.html</guid><wfw:comment>http://www.cnitblog.com/qiuyangzh/comments/1013.html</wfw:comment><comments>http://www.cnitblog.com/qiuyangzh/archive/2005/07/15/1013.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/qiuyangzh/comments/commentRss/1013.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/qiuyangzh/services/trackbacks/1013.html</trackback:ping><description><![CDATA[<H1 style="TEXT-ALIGN: justify"><A name=_Toc25138065></A><A name=_Toc26333729><SPAN><SPAN lang=EN-US>1</SPAN></SPAN></A><SPAN><SPAN><SPAN style="FONT-FAMILY: 黑体">前言</SPAN></SPAN></SPAN></H1>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体">依照《xx公司编码规范》的要求，测试中心对<SPAN lang=EN-US style="COLOR: blue">[被测系统或模块的名称]</SPAN>编码的规范性进行检查。对于编码中不符合《xx公司编码规范》要求的地方，进行报告。</SPAN></P>
<P class=MsoNormalIndent style="TEXT-INDENT: 21.1pt; TEXT-ALIGN: center" align=center><B><SPAN style="FONT-FAMILY: 黑体">表<SPAN lang=EN-US>1-1 </SPAN></SPAN></B><B><SPAN style="FONT-FAMILY: 黑体">背景说明<SPAN lang=EN-US><?xml:namespace prefix = o /><o:p></o:p></SPAN></SPAN></B></P>
<DIV align=center>
<TABLE style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; BORDER-LEFT: medium none; BORDER-BOTTOM: medium none; BORDER-COLLAPSE: collapse" cellSpacing=0 cellPadding=0 border=1>
<TBODY>
<TR>
<TD style="BORDER-RIGHT: black 0.75pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: black 2.25pt double; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: black 2.25pt double; WIDTH: 77.4pt; PADDING-TOP: 0cm; BORDER-BOTTOM: black 0.75pt solid" vAlign=top width=103>
<P class=MsoNormal><SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 10.5pt; TEXT-TRANSFORM: uppercase; FONT-FAMILY: 宋体">测试人员<SPAN lang=EN-US><o:p></o:p></SPAN></SPAN></P></TD>
<TD style="BORDER-RIGHT: black 0.75pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: black 2.25pt double; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: medium none; WIDTH: 144pt; PADDING-TOP: 0cm; BORDER-BOTTOM: black 0.75pt solid" vAlign=top width=192>
<P class=MsoNormal><SPAN lang=EN-US style="FONT-SIZE: 10.5pt; TEXT-TRANSFORM: uppercase; FONT-FAMILY: 宋体"><o:p><FONT face="Times New Roman" size=3></FONT></o:p></SPAN>&nbsp;</P></TD>
<TD style="BORDER-RIGHT: black 0.75pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: black 2.25pt double; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: medium none; WIDTH: 54pt; PADDING-TOP: 0cm; BORDER-BOTTOM: black 0.75pt solid" vAlign=top width=72>
<P class=MsoNormal><SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体">设计人员<SPAN lang=EN-US style="TEXT-TRANSFORM: uppercase"><o:p></o:p></SPAN></SPAN></P></TD>
<TD style="BORDER-RIGHT: black 2.25pt double; PADDING-RIGHT: 5.4pt; BORDER-TOP: black 2.25pt double; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: medium none; WIDTH: 150.7pt; PADDING-TOP: 0cm; BORDER-BOTTOM: black 0.75pt solid" vAlign=top width=201>
<P class=MsoNormal><SPAN lang=EN-US style="FONT-SIZE: 10.5pt; TEXT-TRANSFORM: uppercase; FONT-FAMILY: 宋体"><o:p><FONT face="Times New Roman" size=3></FONT></o:p></SPAN>&nbsp;</P></TD></TR>
<TR>
<TD style="BORDER-RIGHT: 0.75pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: 2.25pt double; WIDTH: 77.4pt; PADDING-TOP: 0cm; BORDER-BOTTOM: 2.25pt double" vAlign=top width=103>
<P class=MsoNormal><SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 10.5pt; TEXT-TRANSFORM: uppercase; FONT-FAMILY: 宋体">测试日期</SPAN><SPAN lang=EN-US style="FONT-WEIGHT: normal; FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体"><o:p></o:p></SPAN></P></TD>
<TD style="BORDER-RIGHT: 2.25pt double; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: medium none; WIDTH: 348.7pt; PADDING-TOP: 0cm; BORDER-BOTTOM: 2.25pt double" vAlign=top width=465 colSpan=3>
<P class=MsoNormal><SPAN lang=EN-US style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体"><o:p><FONT face="Times New Roman" size=3></FONT></o:p></SPAN>&nbsp;</P></TD></TR></TBODY></TABLE></DIV>
<H1 style="TEXT-ALIGN: justify"><A name=_Toc26333730><SPAN lang=EN-US style="FONT-FAMILY: 黑体">2</SPAN></A><SPAN><SPAN style="FONT-FAMILY: 黑体">检测结果</SPAN></SPAN><SPAN></SPAN><SPAN lang=EN-US style="FONT-FAMILY: 黑体"><o:p></o:p></SPAN></H1>
<P class=MsoNormalIndent><SPAN style="FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;下面</SPAN><SPAN style="FONT-FAMILY: 宋体">以表格的形式</SPAN><SPAN style="FONT-FAMILY: 宋体">分别列出各个程序文件中违反</SPAN><SPAN style="FONT-FAMILY: 宋体">《xx公司编码规范》的代码。其中，“</SPAN><SPAN style="FONT-FAMILY: 宋体">编码规范编号”、“编码规范名”指的是该规范在</SPAN><SPAN style="FONT-FAMILY: 宋体">《xx公司编码规范》中的编号和名称，“</SPAN><SPAN style="FONT-FAMILY: 宋体">行号”指违反规范的代码在程序文件中的行号。</SPAN><SPAN lang=EN-US style="FONT-FAMILY: 宋体"><o:p></o:p></SPAN></P>
<H2><A name=_Toc26333731><SPAN lang=EN-US>2.1文件1</SPAN></A></H2>
<P class=MsoNormalIndent style="TEXT-ALIGN: center" align=center><B><SPAN style="FONT-FAMILY: 黑体">表<SPAN lang=EN-US>2-1 文件1中违反编码规范之处<o:p></o:p></SPAN></SPAN></B></P>
<DIV align=center>
<TABLE style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; BORDER-LEFT: medium none; BORDER-BOTTOM: medium none; BORDER-COLLAPSE: collapse" cellSpacing=0 cellPadding=0 border=1>
<TBODY>
<TR>
<TD style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 40.8pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 0.5pt solid" vAlign=top width=54>
<P class=MsoNormalIndent style="TEXT-INDENT: 0cm; TEXT-ALIGN: center" align=center><SPAN style="FONT-FAMILY: 宋体">序号</SPAN></P></TD>
<TD style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: medium none; WIDTH: 81.45pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 0.5pt solid" vAlign=top width=109>
<P class=MsoNormalIndent style="TEXT-INDENT: 0cm; TEXT-ALIGN: center" align=center><SPAN style="FONT-FAMILY: 宋体">编码规范编号</SPAN></P></TD>
<TD style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: medium none; WIDTH: 214pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 0.5pt solid" vAlign=top width=285>
<P class=MsoNormalIndent style="TEXT-INDENT: 0cm; TEXT-ALIGN: center" align=center><SPAN style="FONT-FAMILY: 宋体">编码规范名</SPAN></P></TD>
<TD style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: medium none; WIDTH: 93.2pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 0.5pt solid" vAlign=top width=124>
<P class=MsoNormalIndent style="TEXT-INDENT: 0cm; TEXT-ALIGN: center" align=center><SPAN style="FONT-FAMILY: 宋体">行号</SPAN></P></TD></TR>
<TR>
<TD style="BORDER-RIGHT: 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: 0.5pt solid; WIDTH: 40.8pt; PADDING-TOP: 0cm; BORDER-BOTTOM: 0.5pt solid" vAlign=top width=54>
<P class=MsoNormalIndent style="TEXT-INDENT: 0cm"><SPAN lang=EN-US><o:p></o:p></SPAN>&nbsp;</P></TD>
<TD style="BORDER-RIGHT: 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: medium none; WIDTH: 81.45pt; PADDING-TOP: 0cm; BORDER-BOTTOM: 0.5pt solid" vAlign=top width=109>
<P class=MsoNormalIndent style="TEXT-INDENT: 0cm"><SPAN lang=EN-US><o:p></o:p></SPAN>&nbsp;</P></TD>
<TD style="BORDER-RIGHT: 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: medium none; WIDTH: 214pt; PADDING-TOP: 0cm; BORDER-BOTTOM: 0.5pt solid" vAlign=top width=285>
<P class=MsoNormalIndent style="TEXT-INDENT: 0cm"><SPAN lang=EN-US><o:p></o:p></SPAN>&nbsp;</P></TD>
<TD style="BORDER-RIGHT: 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: medium none; WIDTH: 93.2pt; PADDING-TOP: 0cm; BORDER-BOTTOM: 0.5pt solid" vAlign=top width=124>
<P class=MsoNormalIndent style="TEXT-INDENT: 0cm"><SPAN lang=EN-US><o:p></o:p></SPAN>&nbsp;</P></TD></TR>
<TR>
<TD style="BORDER-RIGHT: 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: 0.5pt solid; WIDTH: 40.8pt; PADDING-TOP: 0cm; BORDER-BOTTOM: 0.5pt solid" vAlign=top width=54>
<P class=MsoNormalIndent style="TEXT-INDENT: 0cm"><SPAN lang=EN-US><o:p></o:p></SPAN>&nbsp;</P></TD>
<TD style="BORDER-RIGHT: 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: medium none; WIDTH: 81.45pt; PADDING-TOP: 0cm; BORDER-BOTTOM: 0.5pt solid" vAlign=top width=109>
<P class=MsoNormalIndent style="TEXT-INDENT: 0cm"><SPAN lang=EN-US><o:p></o:p></SPAN>&nbsp;</P></TD>
<TD style="BORDER-RIGHT: 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: medium none; WIDTH: 214pt; PADDING-TOP: 0cm; BORDER-BOTTOM: 0.5pt solid" vAlign=top width=285>
<P class=MsoNormalIndent style="TEXT-INDENT: 0cm"><SPAN lang=EN-US><o:p></o:p></SPAN>&nbsp;</P></TD>
<TD style="BORDER-RIGHT: 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: medium none; WIDTH: 93.2pt; PADDING-TOP: 0cm; BORDER-BOTTOM: 0.5pt solid" vAlign=top width=124>
<P class=MsoNormalIndent style="TEXT-INDENT: 0cm"><SPAN lang=EN-US><o:p></o:p></SPAN>&nbsp;</P></TD></TR></TBODY></TABLE></DIV>
<H2><A name=_Toc26333732><SPAN lang=EN-US>2.2文件2</SPAN></A></H2>
<P class=MsoNormalIndent style="TEXT-ALIGN: center" align=center><B><SPAN style="FONT-FAMILY: 黑体">表<SPAN lang=EN-US>2-2 文件2中违反编码规范之处<o:p></o:p></SPAN></SPAN></B></P>
<DIV align=center>
<TABLE style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; BORDER-LEFT: medium none; BORDER-BOTTOM: medium none; BORDER-COLLAPSE: collapse" cellSpacing=0 cellPadding=0 border=1>
<TBODY>
<TR>
<TD style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 40.8pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 0.5pt solid" vAlign=top width=54>
<P class=MsoNormalIndent style="TEXT-INDENT: 0cm; TEXT-ALIGN: center" align=center><SPAN style="FONT-FAMILY: 宋体">序号</SPAN></P></TD>
<TD style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: medium none; WIDTH: 81.45pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 0.5pt solid" vAlign=top width=109>
<P class=MsoNormalIndent style="TEXT-INDENT: 0cm; TEXT-ALIGN: center" align=center><SPAN style="FONT-FAMILY: 宋体">编码规范编号</SPAN></P></TD>
<TD style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: medium none; WIDTH: 153.6pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 0.5pt solid" vAlign=top width=205>
<P class=MsoNormalIndent style="TEXT-INDENT: 0cm; TEXT-ALIGN: center" align=center><SPAN style="FONT-FAMILY: 宋体">编码规范名</SPAN></P></TD>
<TD style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: medium 