Tan's Blog.

程序切片方法

字数统计: 783阅读时长: 2 min
2019/06/21 Share

程序切片

切片的基一般过程

1.程序依赖关系提取
程序依赖关系提取主要是从程序中提取各类信息,包括控制流和数据流信息,形成程序依赖图。
2.切片规则制定
依据具体的程序分析需求设计切片准则
3.切片生成
依据前述的切片准则选择相应的程序切片方法,然后对第一步中提取的依赖关系进行分析处理,从而生成程序切片。

静态程序切片

静态切片技术是指在计算程序切片时 使用的是静态的数据流和控制流分析方法。该技术对程序的输入不做任何假设,所 做的分析完全以程序的静态信息为依据。使用该技术的工作量较大,因为要分析程 序所有可能的执行轨迹,所以相对于动态切片技术,静态切片技术一般用于程序理解与软件维护方面。

基于数据流方程的切片方法

基于数据流方程进行切片的方法主要是通过迭代计算控制流图中的每个节点的相关变量集合,迭代分析语句间的数据依赖关系和控制依赖关系,最终获得每条语句中与切片准则C相关的变量的集合。
Mark Weiser数据流切片算法是基于数据流方程的切片方法中的经典算法。

基于图可达性的切片方法

首先需要计算出目标程序的控制依赖关系和数据依赖关系,构建程序依赖图。然后从切片准则所对应的节点出发沿着数据依赖边和控制依赖边进行图遍历,所有遍历可达的节点都加入到切片中。

动态程序切片

动态切片技术使用的是动态的数据流和控制流分析方法,因此切片的计算过程 依赖于程序的具体输入。采用这一技术,每一次的计算工作量较小,但每一次的计算 都不尽相同,因此动态切片技术多用于程序调试、测试方面。

基于程序依赖图的动态切片方法

1.构造程序依赖图
2.依据切片准则的数据I0得到程序动态执行历史。
3.在程序依赖图中删除在执行历史中不存在的节点。
4.对于当前依赖图中剩余节点之间的每一条边,如果这条边对应的控制和数据依赖关系并没有在执行历史中出现,则将这条边删除。
5.从切片准则对应的节点开始进行图的遍历,将所有可达的节点加入到切片中。

基于动态依赖图的动态切片方法

动态依赖图不但能够表示静态程序依赖关系,同时也能表示程序的动态执行过程。

CATALOG
  1. 1. 程序切片
    1. 1.1. 切片的基一般过程
  2. 2. 静态程序切片
    1. 2.1. 基于数据流方程的切片方法
    2. 2.2. 基于图可达性的切片方法
  3. 3. 动态程序切片
    1. 3.1. 基于程序依赖图的动态切片方法
    2. 3.2. 基于动态依赖图的动态切片方法