aspect-oriented programming
aspect-oriented programming
(programming)Mechanisms for defining and composing abstractions areessential elements of programming languages. The design stylesupported by the abstraction mechanisms of most currentlanguages is one of breaking a system down into parameterisedcomponents that can be called upon to perform a function.
But many systems have properties that don't necessarily alignwith the system's functional components, such as failurehandling, persistence, communication, replication,coordination, memory management, or real-time constraints,and tend to cut across groups of functional components.
While they can be thought about and analysed relativelyseparately from the basic functionality, programming themusing current component-oriented languages tends to resultin these aspects being spread throughout the code. Thesource code becomes a tangled mess of instructions fordifferent purposes.
This "tangling" phenomenon is at the heart of much needlesscomplexity in existing software systems. A number ofresearchers have begun working on approaches to this problemthat allow programmers to express each of a system's aspectsof concern in a separate and natural form, and thenautomatically combine those separate descriptions into a finalexecutable form. These approaches have been calledaspect-oriented programming.
Xerox AOP homepage.
AspectJ.
ECOOPP'99 AOP workshop.