Aspect-Oriented Programming (AOP) addresses the problem of tangling of aspects in programs and splits a program into loosely coupled building blocks. Each building block addresses one aspect of the application; some example aspects are: structure, synchronization, remote invocation, quality of service, etc. A weaver combines the building blocks, at least conceptually, into a program where the building blocks are tangled together and sometimes replicated several times.
Adaptive Programming is the special case of Aspect-Oriented Programming where one of the building blocks is expressible in terms of graphs and where the other building blocks refer to the graphs using traversal strategies. A traversal strategy is a partial specification of a class diagram pointing out a few cornerstone classes and relationships. Traversal strategies are graphs where each edge defines a regular expression specifying a traversal through a graph.
The experience with AP has been very positive. It has been used in several industrial projects. Programs become both simpler and more flexible. For more information, see www.ccs.neu.edu/research/demeter