Over the last few months we developed the concept of Adaptive Plug and Play Components (APPCs) in our research group which resulted in an OOPSLA '98 paper by Mezini and Lieberherr. we got very good reviews such as the one in the following paragraph.

This is the kind of work that the software industry needs most. Hard core work, aimed at developing tangible and implementable mechanisms to help bridge the chasm between illusive design methodologies of arrows, bubbles, use cases, processes, etc., and the tough reality of the programmers in the trenches. Even the simple observation and unequivocal statement that a design segment should be a distinct lingual construct, have formal parameters that can be matched against several locations in the class graph merits honorable publication, since most previous work tried and failed to do so while using existing programming constructs (see e.g., observer pattern implementations using inheritance and templates). There is however in the paper much more than that, ...

The OOPSLA '98 paper has benefited from collaboration between EDCS participants. Don Batory from UT Austin had a paper on a related topic (mixin layers) at ECOOP '98. Batory's paper was for me one of the motivators for the APPCs.

APPCs go back to Helm's and Holland's specification contracts and Holland's implementation contracts described in his 1993 thesis at Northeastern. APPCs advance contracts because they are written with respect to a filter which allows to focus only on the important participants.

We further developed and refined traversal strategies which are a new modeling tool for succinct traversal specifications. Our measurements show that a large percentage of the execution time of object-oriented applications is spent during object traversal. Traversals are ubiquitous and this insight justifies the development of traversal strategies as well as efficient implementations of them. The new contribution of traversal strategies is that traversals are now modeled as general graphs while before they were only series-parallel graphs. We also developed a significantly better compilation algorithm for the general case which outperforms our earlier algorithms for the special cases. We discovered a new use of traversal strategies: as a tool to match interface class graphs to implementation class graphs. This graph matching view of strategies lead us to the definition of different relations between graphs and the study of their computational complexity. We also looked into connections between the different relations.

The Demeter/Java compiler has been improved significantly over the last year. See: http://www.ccs.neu.edu/research/demeter/DemeterJava (CHANGES file) gives the chronological order of the improvements. The core of the adaptive compilation technology has been encapsulated into a Java package, called TG, for use in other projects. Jens Palsberg at Purdue University considers including it in his JTB tool.

The AP Studio tool (the GUI for adaptive programming in a visual style) has been brought to the latest state of the art of the AP concepts. It supports now visual strategy graph development and building class graphs so that they can be automatically translated into a grammar.

Jens Palsberg and his team have built an elegant tool which extends the JavaCC technology with a traversal/visitor programming style resulting in his JTB tool (http://www.cs.purdue.edu/homes/taokr/jtb/index.html). JTB good very good reviews from its user community (see the User Comments section of the JTB page).

Our technology has been used by several companies. (http://www.ccs.neu.edu/research/demeter/center/DemInAction.html http://www.ccs.neu.edu/research/demeter/evaluation/success.html) They include HP (using a traversal-visitor style to implement their printer installation software), a Wall Street company (SUN Microsystem got a porting contract from this company to port a Demeter application from HP to Solaris; SUN requested the source code for Demeter/C++). GTE Laboratories used Demeter/Java to implement the EEL compiler. ScanSoft used Demeter/Java to prototype a C++ to COM tool. Motorola used Demeter/Java to implement a design pattern code generator. Tendril Software Inc. (I am on their advisory board) uses traversals as an integral concept of Structure Builder. At the Jet Propulsion Laboratory they have used the Law of Demeter (which was the source for Adaptive Programming) for several years with success. See: http://www.ccs.neu.edu/research/demeter/ demeter-method/LawOfDemeter/Smyth/

The language D has been developed in collaboration with Xerox PARC by Cristina Lopes whose Ph.D. thesis was completed by Nov. 1997. The committee consisted of Karl Lieberherr, advisor; Gregor Kiczales, co-advisor; Boaz Patt-Shamir and Mitchell Wand. D is an application of aspect-oriented programming to distributed object-oriented programming and it supports the synchronization aspect and the remote invocation aspect. Both aspects are integrated into Demeter/Java at Northeastern and at Xerox PARC D is implemented directly for Java without AP (-> Aspect/J).

To implement the D-aspects RIDL and COOL for Demeter/Java, we developed a weaving language for Java, called DJW (Demeter-Java-Weaver) Currently we translate all components of an adaptive program into DJW. The DJW tool compiles the DJW instructions into executable Java programs. DJW is a compile-time weaving language which localizes the typical processing needed for aspect files. This processing is reused for RIDL, COOL and an interoperability aspect for Java beans.

We continued our discussion with the patent office regarding our application for a US patent for compiling Adaptive Programs. The current status is summarized in: http://www.ccs.neu.edu/home/lieber/patent-office.html

The journal version of our SIGSOFT '96 paper was accepted by IEEE Transactions on Software Engineering after the first review. http://www.ccs.neu.edu/research/demeter/biblio/context.html Our paper on traversal strategies has been completed and was submitted to the Journal of the ACM. http://www.ccs.neu.edu/research/demeter/biblio/strategies.html