aspect-oriented programming


aspect-oriented programming

(programming)(AOP) A style of programming that attempts toabstract out features common to many parts of the code beyondsimple functional modules and thereby improve the quality ofsoftware.

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.