The Design of Program Analysis Services
Author: Robert O'Callahan
Technical Report CMU-CS-99-136.
Download the
Postscript or
PDF
Abstract
The difficulty of understanding large programs is a major contribution
to the cost of program maintenance and transformation. Tools for
static program analysis promise to address this problem by
automatically discovering truths about a program from its source text.
It is often desirable to have a suite of specialized tools that each
address a different task; however, static analyses are difficult and
expensive to build, and therefore should be reused across tools
wherever possible. Therefore we should desire a general interface
between analyses that produce information and tools that consume it.
It should be easy and cheap to build tools on top of such an
interface, with no need to understand the analysis implementation;
however, the interface must permit scalability and precision
comparable to a monolithic design. It turns out to be desirable, and
feasible, for the same interface to cover a wide range of analysis
implementations. In this paper we discuss the design and
implementation of such an interface in Ajax, a framework and set of
tools for the static analysis of Java programs.
Brought to you by
Composable
Software Systems Research Group in the School
of Computer Science at Carnegie Mellon
University.
[Last modified 23-Aug-1999.
Mail suggestions to the Maintainer.]