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. 1.
|
3620
|
Design Patterns. Elements of Reusable Object-Oriented Software
– Gamma, Helm, et al.
- 1998
|
|
472
|
An introduction to software architecture
– Garlan, Shaw
- 1994
|
|
286
|
Featherweight Java: A minimal core calculus for Java and GJ
– Igarashi, Pierce, et al.
- 1999
|
|
178
|
Ownership types for flexible alias protection
– Clarke, Potter, et al.
- 1998
|
|
168
|
Typed memory management in a calculus of capabilities
– Crary, Walker, et al.
- 1999
|
|
158
|
Islands: Aliasing protection in object-oriented languages
– Hogg
- 1991
|
|
141
|
Ownership types for safe programming: Preventing data races and deadlocks
– Boyapati, Lee, et al.
- 2002
|
|
138
|
Flexible alias protection
– Noble, Vitek, et al.
- 1988
|
|
127
|
Type inference with polymorphic recursion
– Henglein
- 1993
|
|
126
|
Alias annotations for program understanding
– Aldrich, Kostadinov, et al.
- 2002
|
|
117
|
A parameterized type system for race-free Java programs
– Boyapati, Rinard
- 2001
|
|
109
|
Archjava: connecting software architecture to implementation
– Aldrich, Chambers, et al.
- 2002
|
|
108
|
Morrisett. Alias types for recursive data structures
– Walker, Gregory
- 2000
|
|
100
|
Adoption and focus: Practical linear types for imperative programming
– Fähndrich, DeLine
- 2002
|
|
89
|
Lackwit: A Program Understanding Tool Based on Type Inference
– O’Callahan, Jackson
- 1997
|
|
87
|
The Geneva convention on the treatment of object aliasing
– Hogg, Lea, et al.
- 1992
|
|
85
|
Role analysis
– Kuncak, Lam, et al.
- 2002
|
|
82
|
Ownership and Containment
– Clarke
- 2001
|
|
72
|
Alias burying: Unique variables without destructive reads
– Boyland
|
|
72
|
Simple ownership types for object containment
– Clarke, Noble, et al.
- 2001
|
|
69
|
Confined Types
– Bokowski, Vitek
- 1999
|
|
66
|
Scalable context-sensitive flow analysis using instantiation constraints
– Fähndrich, Rehof, et al.
- 2000
|
|
61
|
Encapsulating objects with confined types
– Grothoff, Palsberg, et al.
- 2001
|
|
61
|
Towards alias-free pointers
– Minsky
- 1996
|
|
42
|
Universes: A type system for controlling representation exposure
– Muller, Poetzsch-Heffter
- 1999
|
|
24
|
encapsulation and the disjointness of type and effect
– Ownership
- 2002
|
|
23
|
Generalized Aliasing as a Basis for Program Analysis Tools
– O’Callahan
- 2001
|
|
21
|
Capabilities for Sharing: A Generalization of Uniqueness and Read-Only
– BOYLAND, NOBLE, et al.
- 2001
|
|
17
|
Arnd Poetzsch-Heffter, and Yunhong Zhou. Using data groups to specify and check side effects
– Leino
- 2002
|
|
6
|
Architectural Reasoning with ArchJava
– Aldrich, Chambers, et al.
- 2002
|
|
6
|
Barat—A Front-End for Java. Freie Universität Berlin
– Bokowski, Spiegel
- 1998
|
|
4
|
Jerzy Tiuryn, and Pawel Urzyczyn. The Undecidability of the Semi-Unification Problem
– Kfoury
- 1993
|
|
3
|
JFlow: Practical Most-Static Information Flow Control
– Myers
- 1999
|
|
3
|
Linear Types Can Change the World! Programming Concepts and
– Wadler
- 1990
|
|
2
|
Balloon Types: Controlling Sharing of State
– Almeida
- 1997
|
|
2
|
Implementing "Object Ownership to Order
– Bokowski
- 1999
|
|
2
|
Ownership Types Restrict Aliasing. MEng. Computing Final Year Project Report
– Buckley
- 2000
|
|
2
|
Implementing the Call-by- ¥§¦©¨ -Calculus Using a Stack of Regions
– Tofte, Talpin
- 1994
|