D. C. Atkinson, W. G. Griswold, ``The Design
of Whole-Program Analysis Tools'', Proceedings of the 18th International
Conference on Software Engineering, Berlin, IEEE, pp. 16-27, March, 1996.
Copyright 1996 IEEE. Published in the Proceedings of the 18th
International Conference on Software Engineering (ICSE-18), March
25-29, 1996, Berlin, Germany. Personal use of this material is
permitted. However, permission to reprint/republish this material
for advertising or promotional purposes or for creating new
collective works for resale or redistribution to servers or
lists, or to reuse any copyrighted component of this work in
other works, must be obtained from the IEEE.
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