Program slicing is a source-to-source transformation that has applications in construction, analysis, testing and debugging of programs. A program slice contains the portion of a program that captures some subset of the program behavior. Algorithms are available for constructing slices for a particular execution of a program (dynamic slices) as well as to approximate a subset of the behavior over all possible executions of a program (static slices). As the behavior of a program is determined by the semantics of the language, it is reasonable to expect a semantic justification for the practice of program slicing. Program slices have been used in several applications but there is no single notion of a slice that is useful for all applications. This paper identifies and categorizes different notions of a program slice available in the literature as well as several new notions. The various notions are formalized in a denotational framework. Extending the work by Cartwright and Felleisen [2] on the semantics of program dependence, a semantic justification is provided for the process of program slicing using program dependence graphs.
CITATION STYLE
Venkatesh, G. A. (1991). The semantic approach to program slicing. In Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI) (pp. 107–119). Association for Computing Machinery. https://doi.org/10.1145/113445.113455
Mendeley helps you to discover research relevant for your work.