Using automatic program decomposition techniques in software maintenance tools

The use of program decomposition to assist maintenance programmers in all three phases of maintenance, namely, comprehension, modification and debugging, is discussed. Visibility flow graphs are introduced to represent the information about the static semantics of a program. Using static analysis of programs, it is possible to approximate their dynamic behavior. More precise analysis is possible if the program is monitored during its execution. For dynamic semantics, dependence relations are used that reflect the dependency of statements on the input value of variables and of the output value of variables on the statements. These relations are generated both at static analysis time and during program execution. Some sample sessions with a prototype program analyzer for a subset of Ada are included.<<ETX>>

[1]  Mark Weiser,et al.  Program Slicing , 1981, IEEE Transactions on Software Engineering.

[2]  Leon J. Osterweil Using Data Flow Tools in Software Engineering , 1979 .

[3]  Atul Prakash,et al.  Programming in the large , 1986, IEEE Transactions on Software Engineering.

[4]  Keith Gallagher,et al.  Using program decomposition to guide modifications , 1988, Proceedings. Conference on Software Maintenance, 1988..

[5]  Bernard Carré,et al.  Information-flow and data-flow analysis of while-programs , 1985, TOPL.

[6]  Norman F. Schneidewind,et al.  The State of Software Maintenance , 1987, IEEE Transactions on Software Engineering.

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

[8]  Rubén Prieto-Díaz,et al.  Module interconnection languages , 1986, J. Syst. Softw..

[9]  Lyle Ramshaw,et al.  Eliminating go to's while preserving program structure , 1988, JACM.

[10]  Janusz W. Laski,et al.  Dynamic Program Slicing , 1988, Inf. Process. Lett..