MIT Technology Review and Aspect-Oriented and Adaptive Programming

The MIT Technology Review in the January/February 2001 issue, has selected "ten emerging areas of technology that will soon have a profound impact on the economy and on how we live and work" MIT Technology Review TOP TEN Article. One of the ten areas is Aspect-Oriented Programming (AOP); the title of the article is "Untangling Code" and the innovator that is highlighted is Gregor Kiczales on pages 110-111 Untangling Code Article. Gregor and his team have done influential work to develop AOP and to promote AOP to a wider community.

European Summary of AOP article focusses on Adaptive Programming.

Gregor Kiczales' insight is that "better separation of concerns" is an important driving force behind better programming languages. Numerous techniques have been invented to improve separation of concerns and to control tangling. In Gregor's view, AOP is one technique to reduce tangling namely tangling that comes from ad-hoc implementation of crosscutting concerns.

The article refers to Northeastern University twice:

"The idea of aspects has been around for 
many years and with many different
names. It's called "adaptive programming" at Northeastern
University, "subject-oriented programming" at IBM, ...

There is a table entitled: "Others Untangling Code"

Organization			Project

Mehmet Aksit			Composition Filters
(University of Twente)

Karl Lieberherr			Adaptive Programming
(Northeastern University)

IBM Research			Hyper/J System for Java
(York Town Heights)

Mira Mezini			Enhancing modularity and 
(University of Siegen)		reusability of A-O software
As is often the case with technical innovation, there were instances of systems that could be called AOP before the idea of support for crosscutting modularity was itself explicit. One of these technologies was the Demeter work at NEU. We have focussed early on abstraction mechanisms for expressing certain crosscutting concerns with the goal to reduce the tangling in ad-hoc implementations of the crosscutting concerns. We used propagation patterns to express behavior that has a traversal component that cuts across multiple classes. Ad-hoc implementations of those behaviors lead to a lot of tangling. Propagation patterns live on in DJ, a 100% pure Java implementation of Adaptive Programming. We used synchronization patterns to express synchronization behavior that is of a crosscutting nature. We introduced (enhanced) collaborations and adapters (also called aspectual components and AP&PC) to express crosscutting concerns in general. A collaboration is an abstraction of a crosscutting concern and an adapter describes an instantiation of such a concern. To simplify the implementation of the synchronization aspect COOL and remote invocation or data transfer aspect RIDL in DemeterJ, we introduced a simple weaving language for DemeterJ.

It should be noted that, contrary to the MIT article, also at Northeastern we have adopted the Xerox PARC terminology back in 1996. We view Adaptive Programming as a general technique for creating robustness to changes in an aspect. The robustness issue has been very important to us and we have introduced the concept of a "robust aspect = collaboration" as a unit while Gregor Kiczales first only focussed on the notion of an aspect. David Lorenz' view on Aspect-Oriented and Adaptive Programming

The following link gives further information on AOP and AP: Connection to Aspect-Oriented Programming from Xerox PARC