Software Practices Lab Homepage
Information Fragments
Registration-Based Abstraction
Summarizing Software Artifacts
past projects...
Reading Group
SPL Wiki [local access]

Separating Crosscutting Concerns Across the Lifecycle: From Composition Patterns to AspectJ and Hyper/J
Siobhán Clarke and Robert J. Walker.

Technical report TCD-CS-2001-15, Department of Computer Science, Trinity College, Dublin, Ireland, and technical report UBC-CS-TR-2001-05, Department of Computer Science, University of British Columbia, Vancouver, Canada, 23 May 2001.

PDF    Slides from talk


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 \emph{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.