质量评审培训课件.ppt

上传人:F****n 文档编号:96490656 上传时间:2019-08-27 格式:PPT 页数:51 大小:543KB
返回 下载 相关 举报
质量评审培训课件.ppt_第1页
第1页 / 共51页
质量评审培训课件.ppt_第2页
第2页 / 共51页
质量评审培训课件.ppt_第3页
第3页 / 共51页
质量评审培训课件.ppt_第4页
第4页 / 共51页
质量评审培训课件.ppt_第5页
第5页 / 共51页
点击查看更多>>
资源描述

《质量评审培训课件.ppt》由会员分享,可在线阅读,更多相关《质量评审培训课件.ppt(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. 目标点,

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

10、o There“; 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” Lines Density a=b 2 if 2 (a=x) 2 1 b=y; 1 1

11、print (“ok”); 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,L

12、CSAJ是一路径片段,通常在它的线性代码序列中包含许多条件 如果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 sourc

14、e Lines, Expansion 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 Comments/Exe. Lines Halsteads Metrics Total Operators, Total Operands, Unique Operators, Unique Operands Vocabulary, Length, Volume. LCSAJ and Unreachability Total LCSAJs, Reachable LCSAJs, Unreachabl

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

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