Technical Report Number
In general, aspect-oriented programs require a whole-program analysis to understand the semantics of a single method invocation. This property makes reasoning difficult, impeding maintenance efforts, contrary to a stated goal of aspect-oriented programming. We propose some simple modifications to AspectJ that permit modular reasoning. This eliminates the need for whole-program analysis and makes code easier to understand and maintain.