The definition of "aspect" has evolved over time. It is difficult to make terms like cross-cutting, tangling, intermingling, interleaving and cross-cutting precise. The current working definition is (May 99, Gregor Kiczales): > An aspect is a modular unit that cross-cuts the structure > of other modular units. > > Aspects exist in both design and implementation. A > design aspect is a modular unit of the design that > cross-cuts the structure of other parts of the design. > A program or code aspect is a modular unit of the program > that cross-cuts other modular units of the program. I like this "definition" because it is general and not tied to OO. The first sentence is even applicable beyond programming languages. An earlier description of the concept, published in 1995, http://www.ccs.neu.edu/research/demeter/biblio/dem-book.html said (page 78): An aspect is a unit that is defined in terms of partial information from other units. It used different words (unit was called view) but the idea was the same. The partial information can be anywhere in the other modular unit leading to cross-cutting between the modular units. It is also useful to categorize language constructs for OO AOP. The following is a very good summary of the current state of the art: ============= An aspect is a unit that encapsulates state (roughly, variables), behavior (roughly, methods), and behavior enhancements in other units (roughly, weaves). ============= See also: http://www.ccs.neu.edu/research/demeter/biblio/context.html where the concept of context classes is introduced. They can modify other classes. Many constructs qualify as aspects: propagation patterns (Demeter/C++) http://www.ccs.neu.edu/research/demeter/biblio/prop-pat1.html IFIP '92 synchronization patterns http://www.ccs.neu.edu/research/demeter/papers/publications.html ECOOP '94 context objects http://www.ccs.neu.edu/research/demeter/biblio/context.html FSE '96 adjustments http://www.ccs.neu.edu/home/mira/rondo.html adaptive parameter passing http://www.ccs.neu.edu/research/demeter/papers/publications.html I-WOOOS'95 visitor objects (Demeter/Java) http://www.ccs.neu.edu/research/demeter/biblio/demjava.html http://www.ccs.neu.edu/research/demeter/DemeterJava/UserManual/ ICSE '97 adaptive plug-and-play components http://www.ccs.neu.edu/research/demeter/biblio/components.html OOPSLA '98 personalities http://www.ccs.neu.edu/research/demeter/biblio/personalities.html interaction graphs http://www.ccs.neu.edu/research/demeter/biblio/interaction-graphs.html OOPSLA '98 (demo) -- Karl Lieberherr