Aspect Oriented Programming (AOP) aims to ease
maintenance and promote reuse of software components
by separating core concerns from crosscutting
concerns: aspects of a program that cannot be confined
to a single program component. In AOP languages
such as AspectJ, this kind of concern is encapsulated
in an aspect and connected to main classes
using pointcuts. This removes extraneous code from
the classes of the program, allowing them to focus
on their core purpose and making them more maintainable
and reusable. The implementation of each
crosscutting concern, which would have been scattered
throughout an object oriented program, is centralised
in a single aspect. Unfortunately, due to the
way aspects and classes are associated, and the lack
of an explicit interface between them, these aspects
may be tightly coupled to the classes of the program
and so may not be as reusable or maintainable as
might be expected. We propose ParaAJ (Parametric
Aspects), as an extension to AspectJ. ParaAJ allows
classes to specify which aspects should be applied,
and allows applications to specify which aspects to
apply to which classes in what ways. This makes
it easier for classes and aspects to be developed and
maintained independently, and encourages reuse of
both. |