Chapter 1. Discovering AOP
Figure 1.1. Viewing a system as a composition of multiple concerns. Each implementation module deals with some element from each of the concerns the system needs to address.
Figure 1.2. Code tangling caused by multiple simultaneous implementations of various concerns. This figure shows how one module manages parts of multiple concerns.
Figure 1.3. Mapping the n-dimensional concern space using a one-dimensional language. The orthogonality of concerns in the concern space is lost when it’s mapped to the one-dimensional implementation space.
Figure 1.4. Implementation of a security concern using conventional techniques. The security module provides the API for authentication and authorization. But the client modules—accounting, ATM, and database—must embed the code to invoke the API to, say, check permission.
Figure 1.5. Implementing a security concern using AOP techniques: The security aspect defines the interception points needing security and invokes the security API upon the execution of those points. The client modules no longer contain any security-related code.
Figure 1.6. An AOP language implementation that provides a weaver in the form of a compiler. The compiler takes the implementation of the core and crosscutting concerns and weaves them together to form the final system.
Figure 1.7. Generic model of an AOP system. Note that not every system implements each part of the model.