Forward computation of dynamic program slices

A dynamic program slice is an executable part of the program whose behavior is identical, for the same program input, to that of the original program with respect to a variable(s) of interest at some execution position. It has been shown that dynamic slicing is useful for the purpose of debugging, testing and software maintenance. The existing methods of dynamic slice computation are based on “backward” analysis, i.e., after the execution trace of the program is first recorded, the dynamic slice algorithm traces backwards the execution trace to derive dynamic dependence relations that are then used to compute dynamic slices. For many programs, during their execution extremely high volume of information may be recorded that may prevent accurate dynamic slice computation. In this paper we present a novel approach of dynamic slice computation, referred to as forward approach of dynamic slice computation. In this method, dynamic slices are computed during program execution without major recording of the execution trace. The major advantage of the forward approach is that space complexity is bounded as opposed to the backward methods of slice computation.

[1]  Bogdan Korel,et al.  PELAS - Program Error-Locating Assistant System , 1988, IEEE Trans. Software Eng..

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

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

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

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

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

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

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

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

[10]  Roger Clark Ferguson Test data generation for sequential and distributed programs , 1993 .

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

[12]  Bogdan Korel The Program Dependence Graph in Static Program Testing , 1987, Inf. Process. Lett..

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

[14]  Bogdan Korel Identifying Faulty Modifications in Software Maintenance , 1993, AADEBUG.

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

[16]  R. M. Balzer EXDAMS-Extendible Debugging and Monitoring Systems , 1899 .

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

[18]  Bogdan Korel,et al.  Automated Software Test Data Generation , 1990, IEEE Trans. Software Eng..

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

[20]  Nahid Shahmehri,et al.  Interprocedural dynamic slicing applied to interprocedural data flow testing , 1993, 1993 Conference on Software Maintenance.

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

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

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

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