The use of program dependence graphs in software engineering

This paper describes a language-independent program representation-the program dependence graph-and discusses how program dependence graphs, together with operations such as program slicing, can provide the basis for powerful programmmg tools that address important software-engineering problems, such as understanding what an existing program does and how it works, understanding the differences between several versions of a program, and creating new programs by combining pieces of old pro- grams. The paper primarily surveys work in this area that has been carried out at the University of Wisconsin during the past five years.

[1]  Thomas W. Reps,et al.  Integrating non-intering versions of programs , 1988, POPL '88.

[2]  Wuu Yang,et al.  A new algorithm for semantics-based program integration , 1990 .

[3]  Susan Horwitz,et al.  Identifying the semantic and textual differences between two versions of a program , 1990, PLDI '90.

[4]  Wuu Yang,et al.  Detecting Program Components With Equivalent Behaviors , 1989 .

[5]  Bowen Alpern,et al.  Detecting equality of variables in programs , 1988, POPL '88.

[6]  David Notkin The GANDALF project , 1985, J. Syst. Softw..

[7]  Wuu Yang,et al.  Identifying syntactic differences between two programs , 1991, Softw. Pract. Exp..

[8]  Thomas Reps Demonstration of a Prototype Tool for Program Integration , 1989 .

[9]  David A. Padua,et al.  Dependence graphs and compiler optimizations , 1981, POPL '81.

[10]  James R. Larus,et al.  Detecting conflicts between structure accesses , 1988, PLDI '88.

[11]  David Binkley Multi-procedure program integration , 1992 .

[12]  John Randal Allen,et al.  Dependence analysis for subscripted variables and its application to program transformations , 1983 .

[13]  Thomas Reps The Wisconsin program-integration system reference manual , 1990 .

[14]  Christoph M. Hoffmann,et al.  Group-Theoretic Algorithms and Graph Isomorphism , 1982, Lecture Notes in Computer Science.

[15]  Utpal Banerjee,et al.  Speedup of ordinary programs , 1979 .

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

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

[18]  Thomas Reps,et al.  The Synthesizer Generator: A System for Constructing Language-Based Editors , 1988 .

[19]  Thomas W. Reps,et al.  Integrating noninterfering versions of programs , 1989, TOPL.

[20]  Tony Montgomery,et al.  Proceedings of the 14th international conference on Software engineering , 1992, International Conference on Software Engineering.

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

[22]  Eugene M. Luks,et al.  Isomorphism of graphs of bounded valence can be tested in polynomial time , 1980, 21st Annual Symposium on Foundations of Computer Science (sfcs 1980).

[23]  Robert M. Shapiro,et al.  THE REPRESENTATION OF ALGORITHMS , 1969 .

[24]  M. Wegman,et al.  Global value numbers and redundant computations , 1988, POPL '88.

[25]  John E. Hopcroft,et al.  An n log n algorithm for minimizing states in a finite automaton , 1971 .

[26]  Thomas W. Reps,et al.  On the adequacy of program dependence graphs for representing programs , 1988, POPL '88.

[27]  Yoichi Muraoka,et al.  On the Number of Operations Simultaneously Executable in Fortran-Like Programs and Their Resulting Speedup , 1972, IEEE Transactions on Computers.

[28]  Mark N. Wegman,et al.  An efficient method of computing static single assignment form , 1989, POPL '89.

[29]  M. S. Feather Detecting interference when merging specification evolutions , 1989, IWSSD '89.

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

[31]  Lori A. Clarke,et al.  A Formal Model of Program Dependences and Its Implications for Software Testing, Debugging, and Maintenance , 1990, IEEE Trans. Software Eng..

[32]  Thomas Reps,et al.  Correctness of an Algorithm for Reconstituting a Program From a Dependence Graph , 1990 .

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

[34]  Thomas W. Reps,et al.  Illustrating interference in interfering versions of programs , 1989, SCM.

[35]  M. W. Du,et al.  Finding program slices for recursive procedures , 1988, Proceedings COMPSAC 88: The Twelfth Annual International Computer Software & Applications Conference.

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

[37]  Wuu Yang,et al.  A program integration algorithm that accommodates semantics-preserving transformations , 1990 .

[38]  John Banning,et al.  : An Efficient , 2022 .

[39]  Bernard Lang,et al.  Programming Environments Based on Structured Editors: The MENTOR Experience, , 1980 .