LNCS Transactions on Aspect-Oriented Software Development vol:VIII pages:46-107
A key direction for achieving mainstream adoption of aspect-oriented (AO) programming is the availability of reusable aspect libraries that can be easily applied across a wide range of applications. This paper presents a pattern system for AO design that provides solutions for recurring problems in the design of such reusable aspect libraries. We have focused on libraries using AspectJ. The requirements for setting up reusable aspect libraries are first sketched. Subsequently, an architectural pattern and four design patterns addressing key design problems are identified: managing aspect-awareness, enabling join point abstraction and adaptation, decomposition and mediation. Each design pattern leads to a set of programming idioms to address the related design problem. The pattern system aggregates the four sets of idioms that include a specific section to guide selection of a specific idiom. The implementation of an aspect library for access control is discussed to illustrate how the system of patterns can be used and how the different patterns and idioms can be combined. The format of the pattern catalog is based on pattern writing advice provided by the Hillside group. We have analyzed and integrated related work in design patterns for aspects. Furthermore, we present an initial validation of the patterns with respect to their stability, versatility and ease-of-use. To the best of our knowledge, this is the first comprehensive system of AOP patterns that supports the construction of aspect libraries.