"What is Program Slicing?" is the first question that I want to try to answer.
First of all, it is an interactive method for debugging, the process of localising bugs, a method for program understanding, and a method for program maintenance. Many fields of application have been investigated for program slicing but nevertheless program slicing is not yet available as a tool in many programming environments.
Program Slicing is a program reduction technique. As the name çslicingá suggests, a program slicer tries to cut down a program into pieces. We want to reduce the program to the interesting parts or to the relevant parts.
The process of program slicing is inherently interactive since only the user knows what çinterestingá or çrelevantá really mean. So the user has to give some directives and the program slicer will then try to reduce the program according to these directives and thereby point the user to the relevant parts.
Program Slicing can be implemented by means of control flow analysis and data flow analysis. Both areas have been well investigated by compiler writers. On the other hand, information that has been derived by program slicing tools can be exploited by optimizing compilers.