Joinpoints as Ordered Events: Towards Applying Implicit Context to Aspect-Orientation
Robert J. Walker, Gail C. Murphy · 2001
Implicit context is a recently introduced mechanism for improving source code structure, making components more reusable, and making their systems more evolvable. It worries about eliminating locally-unneeded knowledge of external components (extraneous embedded knowledge, or EEK). Aspect-oriented programming (AOP) is a separation of concerns mechanism. It worries about separating and encapsulating functionality that crosscuts the components of a system. AspectJ is a prototype AOP language. Both approaches can be seen to manipulate software at joinpoints, points in the execution or lexical description of that software. Joinpoints and the related code to execute at them can be considered as an event-based system. The exposure of events in AspectJ differs from that in implicit context--- AspectJ considers these events as immediate and largely independent, while implicit context considers them as historic and interrelated through its call history concept. We give an example of a system in which limiting the description of the events of interest to those currently available in AspectJ results in an error-prone and hard-to-evolve implementation, but in which the use of call history would lead to a more reusable and robust implementation. We also briefly examine the issue of EEK and its removal within this example. Keywords: Joinpoint, implicit context, aspect-oriented programming, AOP, AspectJ, extraneous embedded knowledge, EEK, event, call history, aspect. 1