陈林 - cs.nju.edu.cn · 简介 软件测试 数据流测试...
TRANSCRIPT
![Page 1: 陈林 - cs.nju.edu.cn · 简介 软件测试 数据流测试 要进行定义-使用对的计算:某个变量(内存空间) 的定义与使用的关联关系](https://reader038.vdocuments.net/reader038/viewer/2022102600/5ac56b707f8b9ae06c8dc109/html5/thumbnails/1.jpg)
陈林
数据流分析
![Page 2: 陈林 - cs.nju.edu.cn · 简介 软件测试 数据流测试 要进行定义-使用对的计算:某个变量(内存空间) 的定义与使用的关联关系](https://reader038.vdocuments.net/reader038/viewer/2022102600/5ac56b707f8b9ae06c8dc109/html5/thumbnails/2.jpg)
提纲 简介
数据流问题
迭代数据流分析
其他种类的数据流分析
DU、UD链
![Page 3: 陈林 - cs.nju.edu.cn · 简介 软件测试 数据流测试 要进行定义-使用对的计算:某个变量(内存空间) 的定义与使用的关联关系](https://reader038.vdocuments.net/reader038/viewer/2022102600/5ac56b707f8b9ae06c8dc109/html5/thumbnails/3.jpg)
简介 编译优化
可用表达式
![Page 4: 陈林 - cs.nju.edu.cn · 简介 软件测试 数据流测试 要进行定义-使用对的计算:某个变量(内存空间) 的定义与使用的关联关系](https://reader038.vdocuments.net/reader038/viewer/2022102600/5ac56b707f8b9ae06c8dc109/html5/thumbnails/4.jpg)
简介 编译优化
常量传播
a = c + 10 (如果c是常量)
需要进行可达定义的计算: c的定义能否到达该表达式
![Page 5: 陈林 - cs.nju.edu.cn · 简介 软件测试 数据流测试 要进行定义-使用对的计算:某个变量(内存空间) 的定义与使用的关联关系](https://reader038.vdocuments.net/reader038/viewer/2022102600/5ac56b707f8b9ae06c8dc109/html5/thumbnails/5.jpg)
简介 软件测试
数据流测试
要进行定义-使用对的计算:某个变量(内存空间)的定义与使用的关联关系
![Page 6: 陈林 - cs.nju.edu.cn · 简介 软件测试 数据流测试 要进行定义-使用对的计算:某个变量(内存空间) 的定义与使用的关联关系](https://reader038.vdocuments.net/reader038/viewer/2022102600/5ac56b707f8b9ae06c8dc109/html5/thumbnails/6.jpg)
简介 软件调试
如果变量a在某个表达式中被赋以错误的值
a = c + y
需要进行数据依赖的计算:哪些变量的值会影响到a?
![Page 7: 陈林 - cs.nju.edu.cn · 简介 软件测试 数据流测试 要进行定义-使用对的计算:某个变量(内存空间) 的定义与使用的关联关系](https://reader038.vdocuments.net/reader038/viewer/2022102600/5ac56b707f8b9ae06c8dc109/html5/thumbnails/7.jpg)
简介 数据流分析
通过计算不同程序点上各种类型数据的流动信息,为不同的软件工程任务提供帮助
结构化程序:数据流分析可以在AST上进行计算,通常,可以在CFG上计算
大部分问题的精确解都是不可判定的 依赖于输入
依赖于条件语句
依赖于循环
一般只计算近似解
![Page 8: 陈林 - cs.nju.edu.cn · 简介 软件测试 数据流测试 要进行定义-使用对的计算:某个变量(内存空间) 的定义与使用的关联关系](https://reader038.vdocuments.net/reader038/viewer/2022102600/5ac56b707f8b9ae06c8dc109/html5/thumbnails/8.jpg)
简介 近似分析
保守的近似分析(overestimate) 结果包含所有真实信息以及一些可疑信息
结果是安全的保守的
激进的近似分析(underestimate) 结果可能不包含所有信息
结果是不安全的
不同的应用需求 优化
软件工程的其它任务,如测试
数据流分析的最大挑战:provide safe but precise (i.e., minimize the spurious information) information in an efficient way
![Page 9: 陈林 - cs.nju.edu.cn · 简介 软件测试 数据流测试 要进行定义-使用对的计算:某个变量(内存空间) 的定义与使用的关联关系](https://reader038.vdocuments.net/reader038/viewer/2022102600/5ac56b707f8b9ae06c8dc109/html5/thumbnails/9.jpg)
简介:实例
数据流计算
语句1中对I的赋值能到达哪些语句?
语句2中被计算的表达式能到达哪些语句?
从基本块B1结尾出发,变量J的使用能到达哪些语句?
语句3之后,变量I的值还是活跃的吗?
关注点:基本块前后的变化
![Page 10: 陈林 - cs.nju.edu.cn · 简介 软件测试 数据流测试 要进行定义-使用对的计算:某个变量(内存空间) 的定义与使用的关联关系](https://reader038.vdocuments.net/reader038/viewer/2022102600/5ac56b707f8b9ae06c8dc109/html5/thumbnails/10.jpg)
可达定义
![Page 11: 陈林 - cs.nju.edu.cn · 简介 软件测试 数据流测试 要进行定义-使用对的计算:某个变量(内存空间) 的定义与使用的关联关系](https://reader038.vdocuments.net/reader038/viewer/2022102600/5ac56b707f8b9ae06c8dc109/html5/thumbnails/11.jpg)
![Page 12: 陈林 - cs.nju.edu.cn · 简介 软件测试 数据流测试 要进行定义-使用对的计算:某个变量(内存空间) 的定义与使用的关联关系](https://reader038.vdocuments.net/reader038/viewer/2022102600/5ac56b707f8b9ae06c8dc109/html5/thumbnails/12.jpg)
![Page 13: 陈林 - cs.nju.edu.cn · 简介 软件测试 数据流测试 要进行定义-使用对的计算:某个变量(内存空间) 的定义与使用的关联关系](https://reader038.vdocuments.net/reader038/viewer/2022102600/5ac56b707f8b9ae06c8dc109/html5/thumbnails/13.jpg)
![Page 14: 陈林 - cs.nju.edu.cn · 简介 软件测试 数据流测试 要进行定义-使用对的计算:某个变量(内存空间) 的定义与使用的关联关系](https://reader038.vdocuments.net/reader038/viewer/2022102600/5ac56b707f8b9ae06c8dc109/html5/thumbnails/14.jpg)
![Page 15: 陈林 - cs.nju.edu.cn · 简介 软件测试 数据流测试 要进行定义-使用对的计算:某个变量(内存空间) 的定义与使用的关联关系](https://reader038.vdocuments.net/reader038/viewer/2022102600/5ac56b707f8b9ae06c8dc109/html5/thumbnails/15.jpg)
![Page 16: 陈林 - cs.nju.edu.cn · 简介 软件测试 数据流测试 要进行定义-使用对的计算:某个变量(内存空间) 的定义与使用的关联关系](https://reader038.vdocuments.net/reader038/viewer/2022102600/5ac56b707f8b9ae06c8dc109/html5/thumbnails/16.jpg)
![Page 17: 陈林 - cs.nju.edu.cn · 简介 软件测试 数据流测试 要进行定义-使用对的计算:某个变量(内存空间) 的定义与使用的关联关系](https://reader038.vdocuments.net/reader038/viewer/2022102600/5ac56b707f8b9ae06c8dc109/html5/thumbnails/17.jpg)
![Page 18: 陈林 - cs.nju.edu.cn · 简介 软件测试 数据流测试 要进行定义-使用对的计算:某个变量(内存空间) 的定义与使用的关联关系](https://reader038.vdocuments.net/reader038/viewer/2022102600/5ac56b707f8b9ae06c8dc109/html5/thumbnails/18.jpg)
![Page 19: 陈林 - cs.nju.edu.cn · 简介 软件测试 数据流测试 要进行定义-使用对的计算:某个变量(内存空间) 的定义与使用的关联关系](https://reader038.vdocuments.net/reader038/viewer/2022102600/5ac56b707f8b9ae06c8dc109/html5/thumbnails/19.jpg)
![Page 20: 陈林 - cs.nju.edu.cn · 简介 软件测试 数据流测试 要进行定义-使用对的计算:某个变量(内存空间) 的定义与使用的关联关系](https://reader038.vdocuments.net/reader038/viewer/2022102600/5ac56b707f8b9ae06c8dc109/html5/thumbnails/20.jpg)
可达使用
![Page 21: 陈林 - cs.nju.edu.cn · 简介 软件测试 数据流测试 要进行定义-使用对的计算:某个变量(内存空间) 的定义与使用的关联关系](https://reader038.vdocuments.net/reader038/viewer/2022102600/5ac56b707f8b9ae06c8dc109/html5/thumbnails/21.jpg)
![Page 22: 陈林 - cs.nju.edu.cn · 简介 软件测试 数据流测试 要进行定义-使用对的计算:某个变量(内存空间) 的定义与使用的关联关系](https://reader038.vdocuments.net/reader038/viewer/2022102600/5ac56b707f8b9ae06c8dc109/html5/thumbnails/22.jpg)
![Page 23: 陈林 - cs.nju.edu.cn · 简介 软件测试 数据流测试 要进行定义-使用对的计算:某个变量(内存空间) 的定义与使用的关联关系](https://reader038.vdocuments.net/reader038/viewer/2022102600/5ac56b707f8b9ae06c8dc109/html5/thumbnails/23.jpg)
![Page 24: 陈林 - cs.nju.edu.cn · 简介 软件测试 数据流测试 要进行定义-使用对的计算:某个变量(内存空间) 的定义与使用的关联关系](https://reader038.vdocuments.net/reader038/viewer/2022102600/5ac56b707f8b9ae06c8dc109/html5/thumbnails/24.jpg)
![Page 25: 陈林 - cs.nju.edu.cn · 简介 软件测试 数据流测试 要进行定义-使用对的计算:某个变量(内存空间) 的定义与使用的关联关系](https://reader038.vdocuments.net/reader038/viewer/2022102600/5ac56b707f8b9ae06c8dc109/html5/thumbnails/25.jpg)
![Page 26: 陈林 - cs.nju.edu.cn · 简介 软件测试 数据流测试 要进行定义-使用对的计算:某个变量(内存空间) 的定义与使用的关联关系](https://reader038.vdocuments.net/reader038/viewer/2022102600/5ac56b707f8b9ae06c8dc109/html5/thumbnails/26.jpg)
可达定义、可达使用 变量v的定义是?
变量v的使用是?
定义D可到达某个程序点P,当……
U的使用从程序点P可达……
![Page 27: 陈林 - cs.nju.edu.cn · 简介 软件测试 数据流测试 要进行定义-使用对的计算:某个变量(内存空间) 的定义与使用的关联关系](https://reader038.vdocuments.net/reader038/viewer/2022102600/5ac56b707f8b9ae06c8dc109/html5/thumbnails/27.jpg)
数据依赖图
数据依赖图:每个变量(基本块)有一个节点,每条边表示两个节点之间的数据流
称DU-pair的流向为数据依赖
![Page 28: 陈林 - cs.nju.edu.cn · 简介 软件测试 数据流测试 要进行定义-使用对的计算:某个变量(内存空间) 的定义与使用的关联关系](https://reader038.vdocuments.net/reader038/viewer/2022102600/5ac56b707f8b9ae06c8dc109/html5/thumbnails/28.jpg)
![Page 29: 陈林 - cs.nju.edu.cn · 简介 软件测试 数据流测试 要进行定义-使用对的计算:某个变量(内存空间) 的定义与使用的关联关系](https://reader038.vdocuments.net/reader038/viewer/2022102600/5ac56b707f8b9ae06c8dc109/html5/thumbnails/29.jpg)
![Page 30: 陈林 - cs.nju.edu.cn · 简介 软件测试 数据流测试 要进行定义-使用对的计算:某个变量(内存空间) 的定义与使用的关联关系](https://reader038.vdocuments.net/reader038/viewer/2022102600/5ac56b707f8b9ae06c8dc109/html5/thumbnails/30.jpg)
DU-Pairs, DU-Chains, UD-Chains
定义-使用链(DU-chain):连接变量v的定义D和所有D能到达的v的使用
使用-定义链(UD-chain):连接变量的使用U和所有U能到达的v的定义
![Page 31: 陈林 - cs.nju.edu.cn · 简介 软件测试 数据流测试 要进行定义-使用对的计算:某个变量(内存空间) 的定义与使用的关联关系](https://reader038.vdocuments.net/reader038/viewer/2022102600/5ac56b707f8b9ae06c8dc109/html5/thumbnails/31.jpg)
![Page 32: 陈林 - cs.nju.edu.cn · 简介 软件测试 数据流测试 要进行定义-使用对的计算:某个变量(内存空间) 的定义与使用的关联关系](https://reader038.vdocuments.net/reader038/viewer/2022102600/5ac56b707f8b9ae06c8dc109/html5/thumbnails/32.jpg)
![Page 33: 陈林 - cs.nju.edu.cn · 简介 软件测试 数据流测试 要进行定义-使用对的计算:某个变量(内存空间) 的定义与使用的关联关系](https://reader038.vdocuments.net/reader038/viewer/2022102600/5ac56b707f8b9ae06c8dc109/html5/thumbnails/33.jpg)
其他数据流问题 活跃变量 (live variable)
可达定义 (reachable definition)
可用表达式 (available expression)
支配节点 (dominator)
![Page 34: 陈林 - cs.nju.edu.cn · 简介 软件测试 数据流测试 要进行定义-使用对的计算:某个变量(内存空间) 的定义与使用的关联关系](https://reader038.vdocuments.net/reader038/viewer/2022102600/5ac56b707f8b9ae06c8dc109/html5/thumbnails/34.jpg)
活跃变量
![Page 35: 陈林 - cs.nju.edu.cn · 简介 软件测试 数据流测试 要进行定义-使用对的计算:某个变量(内存空间) 的定义与使用的关联关系](https://reader038.vdocuments.net/reader038/viewer/2022102600/5ac56b707f8b9ae06c8dc109/html5/thumbnails/35.jpg)
可达定义
![Page 36: 陈林 - cs.nju.edu.cn · 简介 软件测试 数据流测试 要进行定义-使用对的计算:某个变量(内存空间) 的定义与使用的关联关系](https://reader038.vdocuments.net/reader038/viewer/2022102600/5ac56b707f8b9ae06c8dc109/html5/thumbnails/36.jpg)
可用表达式
![Page 37: 陈林 - cs.nju.edu.cn · 简介 软件测试 数据流测试 要进行定义-使用对的计算:某个变量(内存空间) 的定义与使用的关联关系](https://reader038.vdocuments.net/reader038/viewer/2022102600/5ac56b707f8b9ae06c8dc109/html5/thumbnails/37.jpg)
支配节点
![Page 38: 陈林 - cs.nju.edu.cn · 简介 软件测试 数据流测试 要进行定义-使用对的计算:某个变量(内存空间) 的定义与使用的关联关系](https://reader038.vdocuments.net/reader038/viewer/2022102600/5ac56b707f8b9ae06c8dc109/html5/thumbnails/38.jpg)
支配节点
![Page 39: 陈林 - cs.nju.edu.cn · 简介 软件测试 数据流测试 要进行定义-使用对的计算:某个变量(内存空间) 的定义与使用的关联关系](https://reader038.vdocuments.net/reader038/viewer/2022102600/5ac56b707f8b9ae06c8dc109/html5/thumbnails/39.jpg)
![Page 40: 陈林 - cs.nju.edu.cn · 简介 软件测试 数据流测试 要进行定义-使用对的计算:某个变量(内存空间) 的定义与使用的关联关系](https://reader038.vdocuments.net/reader038/viewer/2022102600/5ac56b707f8b9ae06c8dc109/html5/thumbnails/40.jpg)