Aspect-Oriented Software
Development
Aspect-Oriented Software Development (AOSD)
is an emerging paradigm that provides explicit abstractions for concerns that
tend to crosscut over multiple system components and result in tangling in
individual components. By representing crosscutting concerns or aspects as first-class abstractions,
and by providing new composition techniques for combining aspects and
components, the modularity of the system can be improved leading to a reduced complexity of the system
and easier maintainability.
AOSD has started at the programming level of
the software development life-cycle and the last decade several aspect-oriented programming languages have
been introduced. Some of the
prominent aspect languages are AspectJ, HyperJ, ComposeJ,
and DemeterJ. AspectJ is a general purpose
extension to Java that introduces new language constructs to represent and
compose aspects. HyperJ supports multi-dimensional separation of concerns
by for Java and operates on standard Java class files and produces new class
files to be used for execution. In ComposeJ aspects are represented
through so-called composition
filters that are declaratively specified and integrated in the corresponding
programming language. DemeterJ is an aspect-language that
supports the encapsulation of traversal-related behavioral aspects in Java.
The aim of this section is not to elaborate on these AOP
languages but rather provide a broader/conceptual discussion on
the problems that are tackled by AOSD. The discussed concepts and problems
appear to be general for the complete life cycle. We will discuss the following important
issues: