This paper introduces an extension to the object oriented programming paradigm.
Concern: properties or areas of interest of a system
Aspect Oriented techniques:
finds concerns and separates them out from other concerns, taking them out of the object structure.
1. Specify aspects: define joining points, figure out the parameterization and the extent to which aspects can be customized for a particular use. Figure out dependence on OO programming systems.
2. Static/Dynamic divides.
3. Decoupling. can the writer of the main code ignore the aspect's details or not.
4. Global vs local functionality.
5. Context: domain specific? unique? reusable? testability?
"Law of Demeter": objects should only have knowledge of closely related objects.
Separation of behavioral concerns from structural.
Critiques of Object Oriented techniques:
1. finding commonality among classes and push them up in the inheritance tree.