Darren C. Atkinson and William G. Griswold, “The design of whole-program analysis tools,” in Proceedings of the 18th International Conference on Software Engineering, pp. 16–27, March 1996.

Abstract

Building efficient tools for understanding large software systems is difficult. Many existing program understanding tools build control-flow and data-flow representations of the program a priori, and therefore may require prohibitive space and time when analyzing large systems. Since much of these representations may be unused during an analysis, we construct representations on demand, not in advance. Furthermore, some representations, such as the abstract syntax tree, may be used infrequently during an analysis. We discard these representations and recompute them as needed, reducing the overall space required. Finally, we permit the user to selectively trade-off time for precision and to customize the termination of these costly analyses in order to provide finer user control. We revised the traditional software architecture for compilers to provide these features without unnecessarily complicating the analyses themselves.

These techniques have been successfully applied in the design of a program slicer for the Comprehensive Health Care System (CHCS), a million-line hospital management system written in the MUMPS programming language.

[Full text in PDF]