Abstract The key contribution of Aspect-Oriented Programming (AOP) is the encapsulation of crosscutting concerns in aspects, which facilities modular reasoning. However, common methods of introducing aspects into the system, incorporating features such as implicit control-flow, mean that the ability to discover interactions between aspects can be compromised. This has profound implications for developers working on fault-tolerant systems. We present an analysis for aspects which can re- veal these interactions, thus providing insight into positioning of error detection mechanisms and outlining candidate containment units. We also present Aida, an implementation of this analysis for the AspectJ language. |