A survey of empirical results on program slicing

Abstract A program slice extracts a semantically meaningful portion of a program, based upon a user-selected slicing criterion. As the study of program slicing has matured, a growing body of empirical data has been gathered on the size of slices, slicing tools and techniques, the applications of slicing, and the beneficial psychological effects of slices on the programmers who use them. Empirical work on these topics is surveyed, highlighting trends and areas where additional empirical investigation is desirable, either because of contradictory findings or scarcity of results in the existing body of empirical knowledge.

[1]  David W. Binkley,et al.  Precise executable interprocedural slices , 1993, LOPL.

[2]  Mark Harman,et al.  Results from a large-scale study of performance optimization techniques for source code analyses based on graph reachability algorithms , 2003, Proceedings Third IEEE International Workshop on Source Code Analysis and Manipulation.

[3]  William G. Griswold,et al.  Effective whole-program analysis in the presence of pointers , 1998, SIGSOFT '98/FSE-6.

[4]  Mark Harman,et al.  Using program slicing to assist in the detection of equivalent mutants , 1999, Softw. Test. Verification Reliab..

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

[6]  David W. Binkley,et al.  A large-scale empirical study of forward and backward static slice size and context sensitivity , 2003, International Conference on Software Maintenance, 2003. ICSM 2003. Proceedings..

[7]  Peter Fritzson,et al.  Evaluation of Program Slicing tools , 1995, AADEBUG.

[8]  Donglin Liang,et al.  Reuse-driven interprocedural slicing in the presence of pointers and recursion , 1999, Proceedings IEEE International Conference on Software Maintenance - 1999 (ICSM'99). 'Software Maintenance for Business Change' (Cat. No.99CB36360).

[9]  Gerardo Canfora,et al.  An Integrated Environment for Reuse Reengineering C Code , 1996, SEKE.

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

[11]  Sumit Kumar,et al.  Better Slicing of Programs with Jumps and Switches , 2002, FASE.

[12]  Mark Harman,et al.  Syntax-Directed Amorphous Slicing , 2004, Automated Software Engineering.

[13]  A. De Lucia Program slicing: methods and applications , 2001, Proceedings First IEEE International Workshop on Source Code Analysis and Manipulation.

[14]  Gregg Rothermel,et al.  System-dependence-graph-based slicing of programs with arbitrary interprocedural control flow , 1999, Proceedings of the 1999 International Conference on Software Engineering (IEEE Cat. No.99CB37002).

[15]  David W. Binkley,et al.  Computing amorphous program slices using dependence graphs , 1999, SAC '99.

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

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

[18]  Lars Ole Andersen,et al.  Program Analysis and Specialization for the C Programming Language , 2005 .

[19]  Bogdan Korel Black-box understanding of COTS components , 1999, Proceedings Seventh International Workshop on Program Comprehension.

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

[21]  Mark Harman,et al.  A new algorithm for slicing unstructured programs , 1998, J. Softw. Maintenance Res. Pract..

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

[23]  Paolo Tonella,et al.  Using a Concept Lattice of Decomposition Slices for Program Understanding and Impact Analysis , 2003, IEEE Trans. Software Eng..

[24]  Michael Hind,et al.  Pointer analysis: haven't we solved this problem yet? , 2001, PASTE '01.

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

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

[27]  Susan Horwitz,et al.  Effective, automatic procedure extraction , 2003, 11th IEEE International Workshop on Program Comprehension, 2003..

[28]  Gregor Snelting,et al.  Concept analysis—a new framework for program understanding , 1998, PASTE '98.

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

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

[31]  Shinji Kusumoto,et al.  Call-mark slicing: an efficient and economical way of reducing slice , 1999, Proceedings of the 1999 International Conference on Software Engineering (IEEE Cat. No.99CB37002).

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

[33]  Phil Pfeiffer,et al.  Dependence analysis for pointer variables , 1989, PLDI '89.

[34]  Arun Lakhotia,et al.  CHALLENGES IN GETTING ‘FORMAL’ WITH VIRUSES , 2003 .

[35]  Alessandro Orso,et al.  Effects of pointers on data dependences , 2001, Proceedings 9th International Workshop on Program Comprehension. IWPC 2001.

[36]  Liang Guo,et al.  Evaluating explicitly context-sensitive program slicing , 2001, PASTE '01.

[37]  Mark Harman,et al.  Program simplification as a means of approximating undecidable propositions , 1999, Proceedings Seventh International Workshop on Program Comprehension.

[38]  Mark Harman,et al.  An empirical study of predicate dependence levels and trends , 2003, 25th International Conference on Software Engineering, 2003. Proceedings..

[39]  Markus Mock,et al.  Dynamic points-to sets: a comparison with static analyses and potential applications in program understanding and optimization , 2001, PASTE '01.

[40]  Frank Tip,et al.  Parametric program slicing , 1995, POPL '95.

[41]  Mark Harman,et al.  Unions of slices are not slices , 2003, Seventh European Conference onSoftware Maintenance and Reengineering, 2003. Proceedings..

[42]  Arun Lakhotia,et al.  Restructuring programs by tucking statements into functions , 1998, Inf. Softw. Technol..

[43]  William G. Griswold,et al.  A Qualitative Study of Two Whole-Program Slicers for C , 2000 .

[44]  Donglin Liang,et al.  Efficient points-to analysis for whole-program analysis , 1999, ESEC/FSE-7.

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

[46]  Markus Mock,et al.  Improving program slicing with dynamic points-to data , 2002, SIGSOFT '02/FSE-10.

[47]  Jens Krinke,et al.  Evaluating context-sensitive slicing and chopping , 2002, International Conference on Software Maintenance, 2002. Proceedings..

[48]  James M. Bieman,et al.  Measuring Functional Cohesion , 1994, IEEE Trans. Software Eng..

[49]  Aniello Cimitile,et al.  RE2: Reverse-engineering and reuse re-engineering , 1994, J. Softw. Maintenance Res. Pract..

[50]  David W. Binkley,et al.  Semantics Guided Regression Test Cost Reduction , 1997, IEEE Trans. Software Eng..

[51]  Mark Harman,et al.  Code extraction algorithms which unify slicing and concept assignment , 2002, Ninth Working Conference on Reverse Engineering, 2002. Proceedings..

[52]  Thomas W. Reps,et al.  Demand interprocedural dataflow analysis , 1995, SIGSOFT FSE.

[53]  Susan Horwitz,et al.  Using Slicing to Identify Duplication in Source Code , 2001, SAS.

[54]  Marvin V. Zelkowitz,et al.  Experimental Validation of New Software Technology , 2003, Lecture Notes on Empirical Software Engineering.

[55]  Michael D. Ernst Practical Fine-Grained Static Slicing of Optimized Code , 1994 .

[56]  Shinji Kusumoto,et al.  Experimental Evaluation of Program Slicing for Fault Localization , 2002, Empirical Software Engineering.

[57]  Mark Harman,et al.  An interprocedural amorphous slicer for WSL , 2002, Proceedings. Second IEEE International Workshop on Source Code Analysis and Manipulation.

[58]  Bjarne Steensgaard,et al.  Points-to analysis in almost linear time , 1996, POPL '96.

[59]  Robert J. Hall Automatic extraction of executable program subsets by simultaneous dynamic program slicing , 2004, Automated Software Engineering.

[60]  Alessandro Orso,et al.  Incremental slicing based on data-dependences types , 2001, Proceedings IEEE International Conference on Software Maintenance. ICSM 2001.

[61]  William G. Griswold,et al.  Implementation techniques for efficient data-flow analysis of large programs , 2001, Proceedings IEEE International Conference on Software Maintenance. ICSM 2001.

[62]  Aniello Cimitile,et al.  Conditioned program slicing , 1998, Inf. Softw. Technol..

[63]  Mark David Weiser,et al.  Program slices: formal, psychological, and practical investigations of an automatic program abstraction method , 1979 .

[64]  Spencer Rugaber,et al.  The value of slicing while debugging , 2001, Sci. Comput. Program..

[65]  Thomas W. Reps,et al.  Speeding up slicing , 1994, SIGSOFT '94.

[66]  Mark Harman,et al.  An empirical study of amorphous slicing as a program comprehension support tool , 2000, Proceedings IWPC 2000. 8th International Workshop on Program Comprehension.

[67]  Spencer Rugaber,et al.  The relationship of slicing and debugging to program understanding , 1999, Proceedings Seventh International Workshop on Program Comprehension.

[68]  Susan Horwitz,et al.  Semantics-preserving procedure extraction , 2000, POPL '00.

[69]  Jens Krinke,et al.  Advanced slicing of sequential and concurrent programs , 2003, 20th IEEE International Conference on Software Maintenance, 2004. Proceedings..

[70]  Wuu Yang,et al.  The Semantics of Program Slicing , 1988 .

[71]  John W. Daly,et al.  Statistical power and its subcomponents - missing and misunderstood concepts in empirical software engineering research , 1997, Inf. Softw. Technol..

[72]  Mark Harman,et al.  Amorphous program slicing , 1997, Proceedings Fifth International Workshop on Program Comprehension. IWPC'97.

[73]  Susan Horwitz,et al.  The Effects of the Precision of Pointer Analysis , 1997, SAS.

[74]  Jong-Deok Choi,et al.  Static slicing in the presence of goto statements , 1994, TOPL.

[75]  David Binkley,et al.  Unravel:: a case tool to assist evaluation of high integrity software , 1995 .

[76]  Mark Harman,et al.  Using program slicing to assist in the detection of equivalent mutants , 1999, Softw. Test. Verification Reliab..

[77]  Hiralal Agrawal On slicing programs with jump statements , 1994, PLDI '94.

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

[79]  David W. Binkley,et al.  An implementation of and experiment with semantic differencing , 2001, Proceedings IEEE International Conference on Software Maintenance. ICSM 2001.

[80]  Barbara G. Ryder,et al.  An incremental flow- and context-sensitive pointer aliasing analysis , 1999, Proceedings of the 1999 International Conference on Software Engineering (IEEE Cat. No.99CB37002).

[81]  Mark Harman,et al.  An overview of program slicing , 2001, Softw. Focus.

[82]  Thomas W. Reps,et al.  Pointer analysis for programs with structures and casting , 1999, PLDI '99.

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