Dynamic program slicing methods

Abstract A dynamic program slice is that part of a program that “affects” the computation of a variable of interest during program execution on a specific program input. Dynamic program slicing refers to a collection of program slicing methods that are based on program execution and may significantly reduce the size of a program slice because run-time information, collected during program execution, is used to compute program slices. Dynamic program slicing was originally proposed only for program debugging, but its application has been extended to program comprehension, software testing, and software maintenance. Different types of dynamic program slices, together with algorithms to compute them, have been proposed in the literature. In this paper we present a classification of existing dynamic slicing methods and discuss the algorithms to compute dynamic slices. In the second part of the paper, we compare the existing methods of dynamic slice computation.

[1]  Thomas W. Reps,et al.  The use of program dependence graphs in software engineering , 1992, International Conference on Software Engineering.

[2]  Bogdan Korel,et al.  Computation Of Dynamic Slices For Programs With Arbitrary Control-Flow , 1995, AADEBUG.

[3]  Joe D. Warren,et al.  The program dependence graph and its use in optimization , 1987, TOPL.

[4]  Thomas Ball,et al.  Slicing Programs with Arbitrary Control-flow , 1993, AADEBUG.

[5]  Frank Tip,et al.  A survey of program slicing techniques , 1994, J. Program. Lang..

[6]  Hiralal Agrawal,et al.  Towards automatic debugging of computer programs , 1992 .

[7]  Mariam Kamkar,et al.  Interprocedural dynamic slicing with applications to debugging and testing , 1993, Linköping studies in science and technology dissertations.

[8]  Karl J. Ottenstein,et al.  The program dependence graph in a software development environment , 1984 .

[9]  Takao Shimomura,et al.  Program Slicing Technique and Its Application to Testing, Debugging and Maintenance , 1992 .

[10]  Bernard Carré,et al.  Information-flow and data-flow analysis of while-programs , 1985, TOPL.

[11]  David W. Binkley,et al.  Interprocedural slicing using dependence graphs , 1990, TOPL.

[12]  Rajiv Gupta,et al.  Distributed Slicing and Partial Re-execution for Distributed Programs , 1992, LCPC.

[13]  Keith Brian Gallagher,et al.  Using Program Slicing in Software Maintenance , 1991, IEEE Trans. Software Eng..

[14]  Peter Fritzson,et al.  Three approaches to interprocedural dynamic slicing , 1993, Microprocess. Microprogramming.

[15]  Joseph Robert Horgan,et al.  Dynamic program slicing , 1990, PLDI '90.

[16]  Jong-Deok Choi,et al.  Techniques for debugging parallel programs with flowback analysis , 1991, TOPL.

[17]  Bogdan Korel,et al.  Dynamic program slicing in understanding of program execution , 1997, Proceedings Fifth International Workshop on Program Comprehension. IWPC'97.

[18]  R. Gopal,et al.  Dynamic program slicing based on dependence relations , 1991, Proceedings. Conference on Software Maintenance 1991.

[19]  B. Korel Computation of Dynamic Program Slices for Unstructured Programs , 1997, IEEE Trans. Software Eng..

[20]  Hareton K. N. Leung,et al.  On the edge. Regression testability , 1992, IEEE Micro.

[21]  Mariam Kamkar,et al.  Dynamic slicing of distributed programs , 1995, Proceedings of International Conference on Software Maintenance.

[22]  Mark Weiser,et al.  Programmers use slices when debugging , 1982, CACM.

[23]  G. A. Venkatesh,et al.  Experimental results from dynamic slicing of C programs , 1995, TOPL.

[24]  Rajiv Gupta,et al.  An approach to regression testing using slicing , 1992, Proceedings Conference on Software Maintenance 1992.

[25]  Thomas Reps,et al.  Interprocedural slicing using dependence graphs (with retrospective) , 1988, ACM-SIGPLAN Symposium on Programming Language Design and Implementation.

[26]  Jong-Deok Choi,et al.  Techniques for Debugging Parallel with Flowback Analysis , 1991 .

[27]  Janusz W. Laski,et al.  Dynamic slicing of computer programs , 1990, J. Syst. Softw..

[28]  Mark Weiser,et al.  Program Slicing , 1981, IEEE Transactions on Software Engineering.

[29]  Gregg Rothermel,et al.  Selecting tests and identifying test coverage requirements for modified software , 1994, ISSTA '94.

[30]  Bogdan Korel,et al.  Application of Dynamic Slicing in Program Debugging , 1997, AADEBUG.

[31]  Jingde Cheng,et al.  Slicing Concurrent Programs - A Graph-Theoretical Approach , 1993, AADEBUG.

[32]  Bogdan Korel,et al.  Forward computation of dynamic program slices , 1994, ISSTA '94.

[33]  Eugene H. Spafford,et al.  Debugging with dynamic slicing and backtracking , 1993, Softw. Pract. Exp..

[34]  Janusz W. Laski,et al.  Dynamic Program Slicing , 1988, Inf. Process. Lett..