Gregor Kiczales et al., "Aspect-Oriented Programming," Proc. Euro. Conf. OOP 1997, LNCS 1241, Springer Verlag, 1997.

Aspects: cross-cutting features of a program that cannot be cleanly encapsulated as procedures: performance, memory management, synchronization, failure handling.

Programming languages provide mainly a single composition rule: procedure call. Aspects "follow such different composition rules and yet must co-compose."

Aspect-Oriented Programming (AOP) includes:

"AOP provides component and aspect languages with different abstraction and composition methods."