Program Slicing

Program slicing is a method for automatically decomposing programs by analyzing their data flow and control flow. Starting from a subset of a program's behavior, slicing reduces that program to a minimal form which still produces that behavior. The reduced program, called a ``slice,'' is an independent program guaranteed to represent faithfully the original program within the domain of the specified subset of behavior. Some properties of slices are presented. In particular, finding statement-minimal slices is in general unsolvable, but using data flow analysis is sufficient to find approximate slices. Potential applications include automatic slicing tools for debuggng and parallel processing of slices.

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

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

[3]  Stephen N. Zilles,et al.  Specification techniques for data abstractions , 1975 .

[4]  J. Rosenberg,et al.  Implementing data abstraction features in a stack‐based language , 1979, Softw. Pract. Exp..

[5]  James C. Browne,et al.  FAST: A second generation program analysis system , 1978, ICSE '78.

[6]  Birol Omer Aygun Dynamic-analysis of execution: possibilities, techniques and problems. , 1974 .

[7]  Matthew S. Hecht,et al.  Flow Analysis of Computer Programs , 1977 .

[8]  D. L. Parnas,et al.  On the criteria to be used in decomposing systems into modules , 1972, Software Pioneers.

[9]  Susan L. Gerhart,et al.  Correctness-preserving program transformations , 1975, POPL '75.

[10]  Alfred V. Aho,et al.  Principles of Compiler Design , 1977 .

[11]  James F. Stay HIPO and Integrated Program Design , 1976, IBM Syst. J..

[12]  Brenda S. Baker,et al.  An Algorithm for Structuring Flowgraphs , 1977, J. ACM.

[13]  J ArsacJacques Syntactic source to source transforms and program manipulation , 1979 .

[14]  William E. Weihl,et al.  Interprocedural data flow analysis in the presence of pointers, procedure variables, and label variables , 1980, POPL '80.

[15]  Peter J. Denning,et al.  Certification of programs for secure information flow , 1977, CACM.

[16]  Ben Wegbreit Goal-Directed Program Transformation , 1976, IEEE Trans. Software Eng..

[17]  Marvin V. Zelkowitz,et al.  Principles of software engineering and design , 1979 .

[18]  David C. Luckham,et al.  Verification of Array, Record, and Pointer Operations in Pascal , 1979, TOPL.

[19]  Anas N. Al-Rabadi,et al.  A comparison of modified reconstructability analysis and Ashenhurst‐Curtis decomposition of Boolean functions , 2004 .

[20]  Robert E. Tarjan,et al.  A fast algorithm for finding dominators in a flowgraph , 1979, TOPL.

[21]  Robert E. Tarjan Prime subprogram parsing of a program , 1980, POPL '80.

[22]  J. D. Ichbiah,et al.  Preliminary Ada reference manual , 1979, SIGP.

[23]  Victor R. Basili,et al.  An Investigation of Human Factors in Software Development , 1979, Computer.

[24]  David B. Loveman,et al.  Program Improvement by Source-to-Source Transformation , 1977, J. ACM.

[25]  Craig Schaffert,et al.  Abstraction mechanisms in CLU , 1977, Commun. ACM.

[26]  Mary Shaw,et al.  An introduction to the construction and verification of Alphard programs , 1976, ICSE '76.

[27]  Jacques J. Arsac,et al.  Syntactic source to source transforms and program manipulation , 1979, CACM.

[28]  Alfred V. Aho,et al.  Principles of Compiler Design (Addison-Wesley series in computer science and information processing) , 1977 .

[29]  Mark Weiser,et al.  Reconstructing Sequential Behavior from Parallel Behavior Projections , 1983, Inf. Process. Lett..

[30]  Jeffrey M. Barth A practical interprocedural data flow analysis algorithm , 1978, CACM.

[31]  Leon J. Osterweil,et al.  Data Flow Analysis in Software Reliability , 1976, CSUR.

[32]  John D. Gould,et al.  An Exploratory Study of Computer Program Debugging1 , 1974 .

[33]  James C. King Program reduction using symbolic execution , 1981, SOEN.

[34]  Maurice H. Halstead,et al.  Elements of software science (Operating and programming systems series) , 1977 .

[35]  Mark N. Wegman,et al.  A Fast and Usually Linear Algorithm for Global Flow Analysis , 1976, J. ACM.