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 programming 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 programs. The paper primarily surveys work in this area that has been carried out at the University of Wisconsin during the past five years.
Susan Horwitz, Thomas W. Reps