========================================= D961 Northeastern University Purdue University Karl Lieberherr College of Computer Science, Cullinane Hall Northeastern University Boston MA 02115 (617) 373 2077 (617) 373 5121 lieberherr@ccs.neu.edu Evolution of Software Via Adaptive Programming http://www.ccs.neu.edu/research/demeter/projects/darpa2/ Improve the productivity of software developers by an order of magnitude through tools and a theory of adaptive programming. Leverage existing commercial technology such as Java, the Unified Modeling Language and CORBA. Adaptive Programming (AP) works by splitting an object-oriented program into two parts: the behavior and the object containment structure (class graph). A special language mechanism, called a succinct subgraph specification allows the behavior part of the program to automatically adapt to a large number of changes in the class graph. This effectively loosens the object model enough that makes many maintenance and evolution tasks for OO programs become simpler when using AP.

AP directly supports evolutionary design: it becomes easier to change objects and to make the software work again. It becomes easier to reuse programs since adaptive programs commit to less object structure than traditional programs. New Start, but John Salasin supplemented my existing NSF grant two years ago. Developed a generic behavior modification mechanism reusing object-oriented principles, and applied it to modify traversals in adaptive programs. Leads to more expressiveness and easier reuse of adaptive programs. Prototyped context objects using STKLOS. Our Foundations of Software Engineering '96 paper on context objects http://www.ccs.neu.edu/research/demeter/biblio/context.html contains the results. Interacted with Neeraj Sangal, the founder of Tendril Software, Inc. He uses the key ideas of AP in the first product. Jens Palsberg's paper on using constraints to compose adaptive programs ftp://ftp.ccs.neu.edu/pub/people/lieber/class-graph-inf-P96.ps A pattern-based explanation of adaptiveness http://www.ccs.neu.edu/research/demeter/adaptive-patterns/AOP/ We filed a US patent of compiling adaptive programs. Demeter/Java in Demeter/Java with static context objects This is a significantly improved implementation of Demeter/C++ for Java, using our latest insights in Adaptive Programming. To make it easy to use our technology without installation, we develop a GUI for Demeter/Java so that the tools can be used through the WWW without software installation requirements. We provide support for the Unified Modeling Language (class diagrams). We continue our collaboration with Tendril Software which develops a product for developing adaptive programs. Adaptive Programming is actively used in class projects at Northeastern University for educational and research purposes and to evaluate AP. See http://www.ccs.neu.edu/research/demeter/evaluation/evaluation-of-adaptive-programming for information on the results. The usefulness of Adaptive Programming hinges on how common traversals are in real-life software. Fortunately, the pattern community introduced a pattern called Visitor which conceptualizes traversals. Therefore, we collect information about how often the Visitor pattern is used in practice to make a strong case for AP. We maintain our popular WWW site: http://www.ccs.neu.edu/research/demeter