版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、IT Education & TIT Education & Training 掌握代码转流程图以及数据流图 掌握圈复杂度的计算 熟悉Visio的使用本次课的目标IT Education & Training ftp:/ TNJHR-TCKQC-VCDKM-YY4TV-QPCFM http:/ Visio下载IT Education & Training43. 静态分析 静态分析的目的是发现文档中的缺陷或可能存在缺陷的地方。 不过,静态分析经常通过工具来完成。 使用静态分析进行检查的文档必须是正式文档,并以一定的结构来组织。程序代码常常是软件开发过程中唯一可以进
2、行。IT Education & Training5静态分析和评审 静态分析和评审是紧密联系的。假如在评审之前进行了静态分析,可以发现很多缺陷,从而评审时需要检查的地方就可以明显地减少。由于静态测试通常是工具支持的,因此其工作量会比评审少得多。IT Education & Training6 通过静态分析可以发现以下缺陷和结构可能会导致程序产生的错误:p违背语法规则p违背编程规范和标准p控制流异常p数据流异常IT Education & Training7 静态分析可以用来发现安全性问题,很多安全性漏洞是由于使用了易产生错误的程序结构,并且没有进行必要的检查而产生的。比
3、如确实缓冲区溢出保护,或者没有检查输入数据越界等。 工具可以发现这种类型的缺陷,因为他们有标准的格式来查找和发现这种缺陷。IT Education & Training83.1 编译器做为静态分析工具 通过静态分析工具可以发现编程语言语法错误,并且以故障或警告的方式进行报告。IT Education & Training9静态分析工具可以发现的语法错误: 产生不同程序元素的交叉引用列表(变量、函数) 检查编程语言中数据和变量的数据类型的正确性 检查没有声明的变量 检查不可达代码 检查域边界的上溢或下溢(静态选择) 检查接口的一致性 检查所有作为跳转开始或跳转结束标签的使用IT
4、Education & Training103.2 检查和规范、标准的一致性 通过工具可以检查测试对象是否与规范、标准相一致。比如是否遵循了大部分的编程规则和标准。 工具检查还有一个优点,假如编程人员知道代码需要按照编程规范进行检查,他们会比没有这种自动化测试时更乐于按照编程规范来工作。 checkStylehttp:/ Education & Training113.3 数据流分析(data flow analysis) 数据流分析是指通过在程序代码经过的路径上检查数据的用法而发现缺陷的一种测试方法。 具体而言,就是在不运行程序的情况下,对变量的定义、引用进行分析,以检测数据
5、的赋值与引用之间是否出现了不合理的现象,如引用未赋值的变量,对以前未曾引用变量的再次赋值等数据流异常现象。IT Education & Training12数据流分析方法将程序中变量的出现分为变量的定义和引用。 若语句k执行时改变了程序变量v的值,则称k定义了变量v; 若语句k执行时引用了变量v的值,则称k引用了变量v.IT Education & Training13例如 语句 V=Y+Z 定义了变量V,引用了变量Y和Z 语句 if (YZ) then 则引用了变量Y和Z 输入语句 input X 定义了变量X 输出语句 output Y 则引用了变量YIT Educatio
6、n & Training14对以上变量的定义及引用做如下定义: 已定义的(d):变量已经赋值 引用的(r):读取或使用变量的值 没有定义的(u):变量没有定义具体的值IT Education & Training15数据异常的三种情况 ur异常:程序路径上读取了没有定义的变量 du异常:变量被赋值,但这个变量已经变成无效的或者未定义的状态,同时未被引用 dd异常:变量接收了第二个值,同时,第一个值未被使用IT Education & Training16例:函数exchange(int& Min, int& Max)void exchange(int&a
7、mp; Min, int& Max) Int Help;if (Min Max) Max = Help;Max = Min;Help = Min;HelpHelpMaxMaxHelpHelpHelp的ur异常Max的dd异常Help的du异常IT Education & Training173.4 控制流图 控制流图分析是描述程序控制流的一种图示方法。 在控制流图中,每一个圆称为流图的结点,代表一条或多条语句。流图中的箭头称为边或连接,代表控制流。IT Education & Training18控制流图的基本符号顺序判断WhileuntilcaseIT Educati
8、on & Training19 通过控制流图的清楚描述,程序结构顺序很容易理解,同时可以发现一些可能的控制流异常,如跳出循环体,或程序结构有多个出口。IT Education & Training20将流程图映射成控制流图IT Education & Training213.5 圈复杂度 圈复杂度也称圈数、环路复杂度、回路复杂度 圈复杂度可用来估算程序代码的可测试性和可维护性 圈复杂度是一种为程序逻辑复杂性提供定量测度的软件度量,该度量用于计算程序的基本的独立路径数目,为确保所有语句至少执行一次的测试数量的上界。独立路径必须包含一条在定义之前不曾用到的边。 圈复杂度计算
9、的基础是程序控制流图IT Education & Training22圈复杂度的计算(1) V(G) = e n + 2其中V(G)为控制流图G的圈复杂度,e为控制流图中的边,n为控制流图的节点数。 V(G) = 12 9 + 2 = 5IT Education & Training23(2) 计算独立路径数,从控制流图来看,一条独立路径就是包含一条在其他独立路径中从没有用过的边的路径。 IT Education & Training24 方法三:计算控制流图中区域的数量,简单来说就是闭合环路+外面的区域。这个题是4+1=5 IT Education & Tra
10、ining25随堂练习 计算以下控制流图的圈复杂度IT Education & Training26随堂练习1. 为以下代码画出控制流图,并计算圈复杂度void Method(bool condition) if (condition) Console.WriteLine(Hello World!); IT Education & Training27随堂练习2. 为以下代码画出控制流图,并计算圈复杂度void CycleSampleTwo(int value) if (value != 0) if (value 0)value += 1;elseif (value = 999
11、) /special value value = 0;else value -= 1; IT Education & Training28圈复杂度的计算方法 基本上,圈复杂度的计算方法是向以下项加 1: 分支数(如 if、while 和 do) switch 中的 case 语句数摘自- MSDN Visual Studio Team System 2008 Development Developer Center IT Education & TrainingIT Education & Training30基于圈复杂度的风险分析圈复杂度与之联系的风险1 10低风险的
12、简单程序11 20中等的复杂度和风险21 50高复杂度和风险50+非常高的风险/不可测试IT Education & Training原子条件 原子条件指条件中不包含与、或、非运算的条件IT Education & Training画控制流图时注意 当程序中判定条件为复合条件时应将复合条件分解成原子条件后,再画出控制流图,进行圈复杂度计算IT Education & Training例:IT Education & Training例:闰年public boolean isLeapYear(int year)boolean result = false;if( ( 0 = year%400 ) | ( 0 != year%100 & 0 = year%4)result = true;return result;IT Education & Training练习要求: 画出如下代码的流程图和控制流图,并计算圈复杂度IT Education & Training练习1-循
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 世界视力日主题阅读课件
- 军团菌肺炎楼宇供水系统风险管控课件
- 世界精神卫生日:学生情绪管理课件
- 冬至节气:冬至大如年课件
- 2026年安徽蚌埠市高职单招语文试题含答案
- 2026年安徽省安庆市某中学高一数学分班考试真题含答案
- 2025年妇幼保健院工作总结暨下一步工作计划
- 2026国家司法考试真题试卷(+答案)
- 2026第一季度医保知识培训考试复习试卷及答案
- 2026成都市二十中高一数学分班考试真题含答案
- 2026年初级会计职称考试基础试题(含解答)及答案
- 限制类医疗技术临床应用自我评估报告x
- 中国电动两轮车换电行业市场现状及投资态势分析报告(智研咨询)
- 2026年上海高考英语春考试卷及参考答案(完整版)
- 2025年法考客观题考试真题及答案
- 消防水池有限空间监理细则
- 智能教室设备安装与调试方案
- 雨课堂学堂在线学堂云《创新思维与创业实验(东南)》单元测试考核答案
- 2026年大连理工大学经济管理学院MBA面试含答案
- 2025年初级会计考试真题及答案(完整版)
- 卫星通信原理课件
评论
0/150
提交评论