程序切片的起源与发展
程序切片技术是一种分解程序的程序分析技术。其常用于软件测试、运行维护等方面。
-
产生
1979年,美国Mark Weise首次在他的博士论文中提出了程序切片思想。 -
用途
程序切片技术在计算机学科的很多方面都产生了丰硕的结果;此外在软件开发的各个阶段、各种计算机语言的分析、形式化模型的分析以及软件测试方面都发挥了不可低估的作用。 -
原理
通过对源代码进行规划,可识别由于受到修改而影响的代码。 -
发展
程序切片的起源与发展将按照如下图1所示顺序进行介绍
初始定义
对程序P的切片准则C=(N,V)得到的切片S是从P中删去与N点处变量无关的指令和控制谓词所剩下的部分。
切片S与源程序P对于切片准则C的语义是一致的。
基础方法
M.Weiser提出程序切片的基本概念以后,接下来是如何计算程序切片。于是M.Weiser在当时比较流行的程序控制流图(CFG)的基础上建立了数据流方程。通过求解数据流方程来获得相应的程序切片;称为数据流方程算法。
1984年,K.J.Ottenstein 和 L.M.Ottenstein进一步改进(具体缘由后面给予说明),提出了程序依赖图(PDG),产生了基于PDG的图可达性算法;后来进一步改进,提出了系统依赖图(SDG),提出了基于SDG的两步遍历图可达性算法。基础算法的发展如图2所示。