Aspects provide
a foundation for the definition of design patterns in software models and
code.
Not all
patterns, however, can be represented as aspects.
To extend the
foundation provided by aspect-oriented software development (AOSD) to
include other types of design patterns, we need a deeper understanding of
pointcuts and their relationship to more general transformations.
XPSL provides
a definition of pointcut based on the use of meta-modeling abstractions
that is appropriate for a broad range of transformations.
These include
transformations of existing code structure (refactoring and general
transformations) in addition to aspect weaving.
The use of
meta-modeling abstractions as the basis for pointcut definitions also
provides a cleaner separation between the problem addressed by a pattern
and its solution.
This is
particularly important when a number of design patterns provide different
solutions to the same problem, and when we want to be able to easily
substitute one pattern for another in order to fit a given context.