Aspect-Oriented Programming
Aspect-Oriented Programming[ Gregor Kiczales, John Lamping, Anurag Mendhekar, Chris Maeda, Cristina Videira Lopes, Jean-Marc Loingtier, John Irwin, ``Aspect-Oriented Programming'', in ECOOP '97, vol. 1241 of LNCS, Springer-Verlag, June 1997.] is intended to facilitate coding of cross-cutting aspects, i.e. those aspects that cut across a typical decomposition of an application in terms of object classes:
In Aspect-Oriented Programming, an aspect weaver combines program fragments from separate aspects of a design at cut points or join points.
AspectJ is an aspect-oriented system for Java.