Modular Reasoning in Aspect-Oriented Languages
This PhD thesis presents an approach that enables modular reasoning in aspect-oriented programming languages.
Contributions:
Chapter 2 - The syntax and semantics of ContractAJ, a minimal aspect-oriented language with support for contracts.
Chapter 3 - A two-part approach to enable modular reasoning in ContractAJ: First, if the advice substitution principle is satisfied, obliviousness can be preserved without causing surprising behaviour. Second, if it is necessary to become aware of an advice, a simple specification clause can be used to restore modular reasoning.
Chapter 4 - Static and dynamic contract enforcement tools to ensure our approach to modular reasoning is used correctly.
Chapter 5 - A compositional may/must analysis to infer frame conditions, which describe which variables will remain unchanged in a method/advice. This analysis is used to study existing AspectJ applications to determine how often advice modify more variables than allowed by modular reasoning.