Alias Annotations for Program Understanding

The Conference on Object-Oriented Programming Systems, Languages, and Applications (OOPSLA '02), Seattle, Washington, November 4-8, 2002.
Jonathan Aldrich, Valentin Kostadinov, and Craig Chambers
One of the primary challenges in building and evolving large object-oriented systems is understanding aliasing between objects. Unexpected aliasing can lead to broken invariants, mistaken assumptions, security holes, and surprising side effects, all of which may lead to software defects and complicate software evolution.

This paper presents AliasJava, a capability-based alias annotation system for Java that makes alias patterns explicit in the source code, enabling developers to reason more effectively about the interactions in a complex system. We describe our implementation, prove the soundness of the annotation system, and give an algorithm for automatically inferring alias annotations. Our experience suggests that the annotation system is practical, that annotation inference is efficient and yields appropriate annotations, and that the annotations can express important invariants of data structures and of software architectures.


To get the paper, click here (PDF format).


ArchJava Project, jonal@cs.washington.edu