Now I want to go back to a more abstract view of program slicing.
I want to try to answer the question "What is needed for program slicing?".
The first point is that program slicing is based on the source code of a program. We cannot perform program slicing on an application of which we do not have the source code any more. The technical reason is that we perform static analysis on the source code, the pragmatic reason is that we want to assist the programmer during program development, program debugging and program maintenance. Program slicing is therefore a tool for the programmer who naturally has access to his source code.
The second point is that we need interaction with the user. The user decides what he or she is interested in. The program slicer then performs slicing with respect the the userïs slicing criteria. By exploiting the user-feedback we can perform semi-dynamic analysis which goes beyond pure static anylsis and conceptually restricts the program to one possible use case that the programmer has in mind.