The power of objects lies in the flexibility of their interconnection structure. But this flexibility comes at a cost. Because an object can be modified via any alias, object-oriented programs are hard to understand, maintain, and analyse. Aliasing makes objects depend on their environment in unpredictable ways, breaking the encapsulation necessary for reliable software components, making it difficult to reason about and optimise programs, obscuring the flow of information between objects, and introducing security problems.
Aliasing is a fundamental difficulty, but we accept its presence. Instead we seek techniques for describing, reasoning about, restricting, analysing, and preventing the connections between objects and/or the flow of information between them. Promising approaches to these problems are based on ownership, confinement, information flow, sharing control, escape analysis, argument independence, read-only references, effects systems, and access control mechanisms.
[1]
Robert E. Strom,et al.
Typestate: A programming language concept for enhancing software reliability
,
1986,
IEEE Transactions on Software Engineering.
[2]
Jan Vitek,et al.
Flexible Alias Protection
,
1998,
ECOOP.
[3]
Dave Clarke,et al.
External Uniqueness Is Unique Enough
,
2003,
ECOOP.
[4]
John Tang Boyland,et al.
Checking Interference with Fractional Permissions
,
2003,
SAS.
[5]
James Noble,et al.
Ownership types for flexible alias protection
,
1998,
OOPSLA '98.
[6]
Richard C. Holt,et al.
The Geneva convention on the treatment of object aliasing
,
1992,
OOPS.