Observers and Assistants: A Proposal for Modular Aspect-Oriented Reasoning by Curtis Clifton and Gary T. Leavens Abstract 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. Keywords: Observers, assistants, aspect-oriented programming languages, modular reasoning, specification, composition, AspectJ language, Java language, JML language, MultiJava language. 2002 CR Categories: D.3.3 [Programming Languages] Language Constructs and Features --- classes and objects, control structures, inheritance, modules, packages, procedures, functions, and subroutines, advice, observers, assistants, aspects; D.3.2 [Programming Languages] Language Classifications --- object-oriented languages, multiparadigm languages, AspectJ, JML; D.1.5 [Programming Techniques] Object-oriented programming --- aspect-oriented programming; D.3.1 [Programming Languages] Formal Definitions and Theory --- semantics. Copyright (c) Curtis Clifton and Gary T. Leavens, 2002. All rights reserved.