{品质管理品质知识}03质量评审

上传人:冯** 文档编号:140019683 上传时间:2020-07-26 格式:PPTX 页数:51 大小:559.52KB
返回 下载 相关 举报
{品质管理品质知识}03质量评审_第1页
第1页 / 共51页
{品质管理品质知识}03质量评审_第2页
第2页 / 共51页
{品质管理品质知识}03质量评审_第3页
第3页 / 共51页
{品质管理品质知识}03质量评审_第4页
第4页 / 共51页
{品质管理品质知识}03质量评审_第5页
第5页 / 共51页
点击查看更多>>
资源描述

《{品质管理品质知识}03质量评审》由会员分享,可在线阅读,更多相关《{品质管理品质知识}03质量评审(51页珍藏版)》请在金锄头文库上搜索。

1、质量评审,质量评审特点,质量评审能力,检查多个代码复杂性度量元 圈复杂度 结点度量 LCSAJ 控制流(测试路径) 识别死代码和不可测试代码 提供功能强大的结构化化简工具 结构化程序验证 将你的代码化简到基本复杂度 使用工业标准或自定义质量模型 提供边界检查 产生定量评估 将所有结果总结成顶层的度量指标 清晰性/测试性/维护性 提供直观的报告和代码可视化工具,复杂性,通常检查多余的复杂性是非常困难的 程序的复杂性并不可怕,但是多余的复杂性会引起软件出问题,度量元,度量元是软件度量的基础,就象“米”是对长度的度量 注意度量结果本身并不能直接就反应出质量好坏 在质量评审中使用度量源元时,相互的关联

2、是最重要的,质量评审 代码评价度量,复杂度度量,控制流结点 圈复杂度 基本结点和基本圈复杂度 循环嵌套 函数扇入和扇出 不可达性,结点分类,跳转分为下列几类: 向上(向后)跳转 向下(向前)跳转 结点根据跳转类型可以分为: 下-下结点 上-下结点 上-上结点,引起结点的C结构,下列编程结构会引起结点: for while switch 可利用基本结点度量消除这些局限性,引起结点的Ada结构,下列编程结构会引起结点: IF THEN ELSE CASE GOTO Exceptions 可利用基本结点度量消除这些局限性,圈复杂度,从有向图G,计算圈复杂度V(G): V(G) = No. edges

3、(边数) - No. nodes(节点数) + 2 这样也正确: V(G) = No. predicates (判定节点数) + 1 Case 结构(有N 种选择)是个例外,计算为 N 1 V(G) = No. regions(区域数) 假如G是个连接的平面图,圈复杂度,例子 12 条边 9 个节点 VG = 12 - 9 + 2 = 5,1,2,3,4,5,6,7,8,9,10,11,12,圈复杂度,例子 3 个判定结点计算为 4 case 计算为 2 VG = 4 + 1 = 5,3-1,圈复杂度,例子 5 个区域 VG = 5,3,2,4,5,1,结点和圈复杂度,此有向图可表示为右边两种

4、程序结构。,V(G) = 6 - 5 + 2 = 3,V(G) = 6 - 5 + 2 = 3,Knots = 4,Knots = 1,结点和圈复杂度,圈复杂度和结点度量是互补的两个指标 总之, 程序结构化度量量化了软件的属性 圈复杂度用于表明程序复杂性 结点度量用于表明程序实施时附加的复杂性,循环的复杂性度量,由流程图研究源代码的循环结构 用于度量复杂性和代码优化 识别循环结构 不被源代码结构所影响 函数度量: 函数入口和出口(扇入扇出) 循环总数 循环最大深度,C+ OO实现,类的数目 子类的数目 每个类的方法 继承深度 数据成员的数据 类外的函数调用 其他Chidamber和Kemere

5、r度量,程序结构化验证,程序结构化验证,通过匹配程序结构模版执行结构化验证,模版使用源代码基本块的流程图表示 使用检查工具自动运行 检查下列结构: if -then - endif if - then - else - endif do - while while for case 可配置成识别其他结构,程序结构化确认,由于使用非正确的结构形式,C 语言非常容易产生错误: 需要 switch,case,default 和 break 语句的case语句 if - then 语句也容易产生错误 for 循环结构也容易产生错误,SPV建议,如果检测到非结构化的代码,这部分代码应该由程序员重新编写,

6、这不包括为了解决某些特殊问题而有意使用的非结构化编程 除了允许以修改非结构化程序会带来不必要的复杂为理由以外,建议管理者可以先怀疑任何非结构化编程的使用 流程图看起来很混乱,并不总是意味着代码是非结构化的。绘制流程图的算法可能会误导程序是高度复杂的 通常程序的非结构化是由于代码内部错误引起的,SPV流程图,SPV流程图,图形化地显示设计良好的程序结构中节点的化简过程,代码评审流程图,基本结点度量,将所有的结构化的程序结构进行化简后,计算剩余的节点数就得到基本结点度量 对于一个结构化的程序: 基本结点数 = 0 基本结点是非结构化程序引起的复杂性的度量,基本圈复杂度,某些结构化的编程结构会引起很

7、高的圈复杂度 这个局限性可用基本度量克服 定义: EV(G) = V(G) - M 这里M 是有唯一入口和出口节点的子图G的数目 对于一个结构化的程序: EV(G) = 1,SPV度量总结,如果一个模块通过SPV化简之后是结构化的,它有: 基本结点为0 基本圈复杂度为1 非结构化的程序含有很高的基本度量值 这两个度量是对代码中存在的结构缺陷的度量,复杂度分析标准,复杂度分析标准违反情况 位于代码评审报告中 用于强制源代码执行特定的质量特性 1 C Cyclomatic Complexity greater than * 2 C Procedure is not reducible in ter

8、ms of intervals 3 C Procedure contains essential knots 4 C Procedure is not structured 5 C Procedure contains infinite loop,LCSAJs线性代码序列及跳转,LCSAJs,维护性度量指标 检测不可达代码 识别不可测试(或不合理)代码 强制用于欧洲安全苛刻性军用航空电子项目 路径测试的覆盖度量基础 最高级别的代码覆盖率度量,LCSAJ三要素,根据定义和LDRA的代码重格式化策略,LCSAJs能描述成三要素的形式: 1.起始点 一个线性代码序列 2.结束点 3.目标点,LCSA

9、J起始点,LCSAJs开始于: 程序的第一行可执行代码 A的第一行可执行代码,A可以是: 功能 程序 方法 任何控制流跳转的目标行: 标号 else语句 endif语句 switch语句的子句 循环 函数调用的返回.,LCSAJ跨度,LCSAJ跨度是程序中的最小分割,任何LCSAJ的线型代码序列都完全包含在LCSAJ的跨度中 LCSAJ跨度的第一行可以是程序的开始,或者是前面的LCSAJ序列不能到达的那一行 LCSAJ跨度的终止行可以是程序的结束行,或者是控制流不能经过其下一行的代码行,Span FINISH 82 else 1 - START 83 1 84 mess = Hello The

10、re; 1 85 1 START 86 2 START 87 3 START 88 printf ( %d %d %d %20sn, i, j, k, mess ); 4 FINISH 89 4 - START FINISH 90 1,LCSAJ密度,LCSAJ密度是维护性度量元 如果某一行代码作了修改,LCSAJ密度会告诉用户由于此代码修改影响到多少条LCSAJ 如果密度越高,那么就越会降低对于所有的LCSAJ此改变都是正确的信心,因此必须增加需要的回归测试数目,Code “LCSAJ” LinesDensity a=b2 if2 (a=x)2 1 b=y;1 1 print (“ok”);

11、2,不可达的LCSAJs,如果从程序开始没有任何路径到达指定的代码行,那么代码将被标为不可达(或死代码) 这种现象通常出现在紧跟着goto语句的代码行中,典型例子如右面最后一行代码 不可达的 LCSAJs标记显示在下面的例子中,if I=0 then go to label: end if;,FINISH 235 goto l6 ; 2 - 236 z = 5 ; 0 UNREACHABLE * 237 z = 9 ; 0 UNREACHABLE * START 238 l6 : 1 239 z = 10 ; 1 FINISH 240 1,不可测试的LCSAJs,LCSAJ是一路径片段,通常在

12、它的线性代码序列中包含许多条件 如果LCSAJ的执行依赖于程序中的某些条件,而且永远不会满足这些条件,那么LCSAJ可能是不可测试的(因此是不可执行的),LCSAJ报告,总结部分 详细的代码清单: LCSAJs出现的地方 源代码内的位置 LCSAJ三要素列表 不可达的LCSAJs列表 通过追踪局部的控制流分支,任何不可达的代码都会在报告中着重显示,LCSAJ(路径测试)流程图,质量评审报告,度量的解释,像大多数其他的物理度量一样,度量的大小并不能表明事物的好或者坏 通常认为最好要保证函数符合这样的度量,这增加了程序的可读性和可维护性,质量评审报告,显示复杂度度量和源代码的信息 显示函数级别的复

13、杂度度量和整体源代码的复杂度度量 许多结果也能够以图形化的方式显示,可用的度量包括: 圈复杂度度量 源代码基本块 结点度量 函数的入口出口 循环数目和嵌套深度 程序结构化验证,质量评审报告,质量评审-质量模型,质量评审报告,Reformatted Code Information for File Total reformatted Lines, Total comments in ref. Code, Executable ref. Lines, Non-executable ref. Lines Number of Procedures, Total source Lines, Expan

14、sion Factor. Comments Associated with Procedures (% of total) Total Comments, Comments in Headers, Comments in Declarations, Comments in Executable Code Blank Lines. Ratio of Comments to Executable lines (%) Total Comments/Exe. Lines, Header Comments/Exe. Lines, Declaration Comments/Exe. Lines, Code

15、 Comments/Exe. Lines Halsteads Metrics Total Operators, Total Operands, Unique Operators, Unique Operands Vocabulary, Length, Volume. LCSAJ and Unreachability Total LCSAJs, Reachable LCSAJs, Unreachable LCSAJs, Maximum LCSAJ Density Unreachable Lines, Unreachable Branches. File Based C+ OO Metrics Total Structured Types Declared, Total Objects Created. Class Level C+ OO Metrics O

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 企业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号