Amorphous program slicing

M Harman, D Binkley, S Danicic

Research output: Contribution to journalArticlepeer-review

79 Citations (Scopus)

Abstract

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 formal 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. (71 References).
Original languageEnglish
Pages (from-to)45 - 64
Number of pages20
JournalJournal of Systems and Software
Volumeol.68
Issue number.1
Publication statusPublished - 15 Oct 2003

Fingerprint

Dive into the research topics of 'Amorphous program slicing'. Together they form a unique fingerprint.

Cite this