Amorphous program slicing

Mark Harman, David Binkley, Sebastian Danicic
2003 Journal of Systems and Software  
Traditional, syntax-preserving program slicing simplifies a program by deleting components (e.g., statements and predicates) that do not affect a computation of interest. Amorphous slicing removes the limitation to component deletion as the only means of simplification, while retaining the semantic property that a slice preserves the selected behaviour of interest from the original program. This leads to slices which are often considerably smaller than their syntax-preserving counterparts. A
more » ... mal framework is introduced to define and compare amorphous and traditional program slicing. After this definition, an algorithm for computing amorphous slices, based on the System Dependence Graph, is presented. An implementation of this algorithm is used to demonstrate the utility of amorphous slicing with respect to code-level analysis of array access safety. The resulting empirical study indicates that programmers' comprehension of array safety is improved by amorphous slicing.
doi:10.1016/s0164-1212(02)00135-8 fatcat:ylgtn56ru5eilc3uxmuxyjvm24