Exploiting the empirical characteristics of program dependences for improved forward computation of dynamic slices

Forward computing algorithms for dynamic slicing operate in tandem with program execution and generally do not require a previously stored execution trace, which make them suitable for interactive debugging and online analysis of long running programs. Both the time and space requirements of such algorithms are generally high due to the fact that they compute and maintain in memory the dynamic slices associated with all variables defined during execution. In this paper we empirically identify several characteristics of program dependences that we exploit to develop a memoization-based forward computing dynamic slicing algorithm whose runtime cost is better than that of any existing algorithm in its class. We also conduct an empirical comparative study contrasting the performance of our new algorithm to the performance of four other algorithms. One is a well known basic algorithm, and the remaining three, use reduced ordered binary decision diagrams (roBDDs) to maintain dynamic slices. Our results indicate that the new memoization-based algorithm is: (1) considerably more time and space efficient than the basic algorithm and one of the roBDD-based algorithms designed to be suitable for online analysis; and (2) comparable in terms of time efficiency but consistently more space efficient than the remaining two roBDD-based algorithms.

[1]  David W. Binkley,et al.  Program slicing , 2008, 2008 Frontiers of Software Maintenance.

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

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

[4]  Scott F. Smith,et al.  Refactoring programs to secure information flows , 2006, PLAS '06.

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

[6]  Xiangyu Zhang,et al.  Precise dynamic slicing algorithms , 2003, 25th International Conference on Software Engineering, 2003. Proceedings..

[7]  Andy Podgurski,et al.  Dynamic information flow analysis, slicing and profiling , 2005 .

[8]  A. Beszedes,et al.  Dynamic slicing method for maintenance of large C programs , 2001, Proceedings Fifth European Conference on Software Maintenance and Reengineering.

[9]  Xiangyu Zhang,et al.  Cost effective dynamic program slicing , 2004, PLDI '04.

[10]  Mark Harman,et al.  Using program slicing to simplify testing , 1995, Softw. Test. Verification Reliab..

[11]  Xiangyu Zhang,et al.  Efficient forward computation of dynamic slices using reduced ordered binary decision diagrams , 2004, Proceedings. 26th International Conference on Software Engineering.

[12]  Christophe Bidan,et al.  An Improved Reference Flow Control Model for Policy-Based Intrusion Detection , 2003, ESORICS.

[13]  David Leon,et al.  Detecting and debugging insecure information flows , 2004, 15th International Symposium on Software Reliability Engineering.

[14]  Christophe Bidan,et al.  Experimenting with a policy-based HIDS based on an information flow control model , 2003, 19th Annual Computer Security Applications Conference, 2003. Proceedings..

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

[16]  Dorothy E. Denning,et al.  A lattice model of secure information flow , 1976, CACM.

[17]  Gregg Rothermel,et al.  Supporting Controlled Experimentation with Testing Techniques: An Infrastructure and its Potential Impact , 2005, Empirical Software Engineering.

[18]  Andy Podgurski,et al.  Memoized Forward Computation of Dynamic Slices , 2006, 2006 17th International Symposium on Software Reliability Engineering.

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

[20]  David W. Binkley,et al.  The application of program slicing to regression testing , 1998, Inf. Softw. Technol..

[21]  Ron Patton,et al.  Software Testing , 2000 .

[22]  Ronald L. Rivest,et al.  Introduction to Algorithms , 1990 .

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

[24]  Christoph Meinel,et al.  Algorithms and Data Structures in VLSI Design: OBDD - Foundations and Applications , 2012 .

[25]  Bogdan Korel,et al.  Program slicing in understanding of large programs , 1998, Proceedings. 6th International Workshop on Program Comprehension. IWPC'98 (Cat. No.98TB100242).

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