David Lorenz expressed the following interesting views:

Both AP and AOP are special cases of separation of concerns.

In AOP, you program with aspects that correspond to the concerns of the programmer. In AP you relieve the programmer from the details of the structural concern by making the behavioral concern adaptive. Generally, in my view, AP is about relieving the programmer from the details of some of the concerns.

AP is about creating robustness to changes in an aspect.

AP is about one aspect taking another one as parameter. Example 1: The navigation aspect is parameterized by the structural aspect. Example 2: A sentence is parameterized by a grammar to select an object. The object description aspect is parameterized by the grammar aspect.

AP is about pointcut reduction. Example: The behavioral and structural aspect have many join points. AP reduces the size of the pointcut specification (class and instance variable names) in the behavioral concern.

The more join points there are between two aspects, the more you need adaptiveness.

Professor Karl J. Lieberherr
College of Computer Science, Northeastern University
Cullinane Hall, Boston, MA 02115
Internet: lieber@ccs.neu.edu
Fax: (617) 373 5121