程序切片有两个含义:
1、一般地,把只与某个输出有关的语句和谓词构成的程序称为源程序的一种静态切片。
2、计算程序切片的过程。
程序切片是一种用于分解程序的程序分析技术,它的原理和方法是由M.Weiser于1979年在他的博士论文中首次建立。
计算程序切片的方法主要有两种:根据数据流方程计算和根据依赖图关系计算。
可分为静态、有条件和动态切片,各种切片都有各自的优势与劣势,对软件逆向工程方面有一定的帮助。
实例:
int i; int sum =0; int product =1; for(i =0; i < N;++i){ sum = sum + i; product = product *i; } write(sum); write(product);
在以write(sum) 为准则进行后向切片时,将得到如下结果:
int i; int sum =0; for(i =0; i < N;++i){ sum = sum + i; } write(sum);