Summary: Static Extraction of Object-Oriented Runtime
Marwan Abi-Antoun Jonathan Aldrich
School of Computer Science
Carnegie Mellon University
Pittsburgh, PA 15213
For many object-oriented systems, it is useful to have a runtime architecture, that shows networks of ob-
jects. But it is hard to statically extract runtime object graphs that provide architectural abstraction from
an arbitrary program written in a general purpose language that follows common design idioms.
Previous approaches extract low-level non-hierarchical object graphs that do not provide architectural ab-
straction, change the language too radically for many existing implementations, or use a dynamic analysis.
Static analysis, which takes all possible executions into account, is essential to extract a sound architecture,
one that reveals all entities and relations that could possibly exist at runtime.
Ownership domain type annotations specify in code architectural intent related to object encapsulation and
communication. We propose a static analysis that leverages such types and extracts a hierarchical approxi-
mation of all possible runtime object graphs. The representation provides architectural abstraction, first by
ownership hierarchy, and then by types. We proved core soundness results for the technique and evaluated