程式切片是一種用於分解程式的程式分析技術,它的原理和方法是由M.Weiser於1979年在他的博士論文中首次建立。
程式切片有兩個含義:
1、一般地,把只與某個輸出有關的語句和謂詞構成的程式稱為源程式的一種靜態切片。
2、計算程式切片的過程。
計算程式切片的方法主要有兩種:根據數據流方程計算和根據依賴圖關係計算。
可分為靜態、有條件和動態切片,各種切片都有各自的優勢與劣勢,對軟體逆向工程方面有一定的幫助。
實例():
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);