Hi John: here is the report for the summer quarter. We have made good progress both conceptually and with the implementation. -- Karl Theory of traversals: ===================== We finalized a key paper on adaptive programming. ftp://ftp.ccs.neu.edu/pub/people/lieber/strategies.ps We have now a general theory about specifying traversals in a general form and how to compile them correctly. We have applied for a U.S. patent for the new algorithm. Implementation of Demeter/Java and AP-Studio: ============================================= Our beta release has progressed well, see the Demeter/Java and AP-Studio resource page: http://www.ccs.neu.edu/research/demeter/DemeterJava/use/ We made good progress on a methodology to write programs with visitors which goes beyond our ealier results. We think that a programming style where each visitor addresses one issue in a self-contained way and where visitors are combined using containment, is very useful. Our planning documents are in: http://www.ccs.neu.edu/research/demeter/process/demeter-tools/planning The User's Guide still needs work. Technology Transfer: ==================== We are in touch with Tendril Software, Motorola and HP about applying our technology. We teach an NTU televised class on Adaptive Object-Oriented Programming: The Demeter Method using the beta release of Demeter/Java. This helps to transfer this DARPA sponsored technology to several different companies. The class size is about 40. About a dozen students are in the NTU section. http://www.ccs.neu.edu/research/demeter/course/f97/f97.html is the course home page. Cristina Lopes completed her Ph.D. thesis on D this summer in collaboration with Xerox PARC. We are in the process of adding the coordination and remote invocation aspect to Demeter/Java. Xerox PARC has already created an implementation of D, called DJava. I was invited to be keynote speaker on "Adaptive and Aspect-Oriented Programming" at a German conference on Java and Smalltalk. http://www.ccs.neu.edu/research/demeter/talks/erfurt-keynote/erfurt-talk.ppt contains the PowerPoint slides. We are working on integrating P3, a collection class generation tool from Don Batory's EDCS project, into Demeter/Java. We are communicating with the EDCS project Familiar about fruitful integration of technology. See: http://www.ccs.neu.edu/research/demeter/related-work/FR for the status of our discussion. Distributed Computing (Boaz Patt-Shamir) ======================================== (long-term research) The approach we are pursuing is to try to develop distributed applications based on Input/Output Automata (IOA) specifications. In this approach, the system is divided into a collection of abstract automata interacting with each other only via explicitly defined actions: the output of one automaton may be either an input action to others, and it may also be externally visible. There is a large body of theoretical research using this formalism (for example, there is a complete book [Lynch 95] of distributed algorithms stated in this language exclusively). The advantages of this approach from the theoretical viewpoint was that it forces the designer to explicitly state all hidden assumptions, and that it is relatively easy to formally verify the correctness of implementations using standard techniques such as induction and simulation. The obvious challenge from the software engineering perspective is to develop a methodology to transform IOA specifications into an executable high-level language text, and vice-versa. The benefit would be many-fold, for example: * Systematic derivation of distributed applications with known, provable behavior, based on existing theoretical algorithms. * Verification of existing applications by mapping back to the formal framework and applying the theoretical techniques. * Capturing the true assumptions and guarantees made by distributed applications. In order to do that, the main tasks are as follows: * Standardizing the low-level reference model. It seems that the Java Virtual Machine is a natural choice for a processing node, but we also need to develop a standard for communication channels. It seems that for communication, there is a discrepancy between the theoretical data-link model and the popular remote procedure call paradigm used by software engineers. Some translation mechanisms should be deployed at this level. * Refining desired algorithms to the standard language. There are formidable -- but not impossible -- obstacles in doing that, both in the practical and the theoretical aspects. In the practical aspect, the main problem is to manage all automata modules in a framework which will be both hierarchical as well as respecting the real-time constraints required by the model. In the theoretical aspect, the problem is to re-formulate various algorithms so that they could be implemented according to the rigorous specification, and also to extract formal specification from existing software modules. Theoretical Foundations of Adaptive Programming =============================================== Professor Wand has begun a study of the mathematical foundations of AP. His approach is to study the visitor pattern from a type-theoretic point of view. Preliminary evidence indicates that the visitor pattern is observationally equivalent to a coproduct. He is working to flesh out this observation by detailing the assumptions under which it holds. A second goal is to understand the relation between visitors and traditional recursion operators, using monads as a technical device. With Johan Ovlinger, he is working on incorporating traversals into the SML module system as a first step towards introducing a module system and formal information-hiding concepts into AP. Detailed implementation work (in random order): =============================================== Doug Orleans: He has produced several new versions of Demeter/Java. For each one he creates a detailed log of changes which are available in our software distribution. Some highlights are: Adaptive visitors, including inlined visitors which support a propagation pattern style of programming. The capabilities of visitor methods has been extended to support untangling of distinct behaviors. Last, but not least, Doug has implemented the general strategy graph compilation algorithm, described in: ftp://ftp.ccs.neu.edu/pub/people/lieber/strategies.ps Binoy Samuel: LL(k) support for Demjava Implemented local lookahead feature for demjava. Java Grammar Wrote a class dictionary for the Java 1.1 grammar. This was required for other parts too, for example evolution and weaving and was also used to test the LL(k) implementation. ApStudio Upgraded the cd-uml part of ApStudio to bring it in line with current versions of demjava. Wrote the uml-cd part. Testing Upgraded the regression test(script) & added other regression scripts to present the regression results in a more concise and useful way. Wrote few test cases to test demjava features. Geoff Hulten: Implemented the generic visitor library. Identified some limitations of current adaptive programming and worked out some possible solutions. The solution requires an interface layer at the class graph level to protect strategies from low-level details. Derived edges have been implemented. Rewrote the User's Guide for Demeter/Java. Johan Ovlinger: Geoff and Johan have attacked the Module & Traversal question from a different angle as well, attempting to add SML style modules into Demeter's adaptive framework. Depending on how ambitious we wish to be the problem can range from trivial engineering to tricky. We hope that looking at SML's interaction with traversals will guide us to a formal model - the lack of which led us down a few dead ends. As we changed the compilation algorithm for around methods, TAO needed to be updated to work with it. Johan also took the opportunity to fix a bug with abstract mehtods, so in effect the entire TAO system was reworked. Finally, the lab guide was rewritten to reflect the advances in technology since its inception. Kedar Patankar: Major changes to AP Studio: 1. Migrated from jdk 1.02 to jdk 1.1 2. Changed the modal dialog style interface to Property sheet style 3. Upgraded the class dictionary used for APStudio to support new features supported by Demeter/Java ver 0.6.1 Added many new features like : 1. Print 2. SelectAll and Invert selection added. 3. Saveall, closeall and reload added 4. Many wrinkles removed to improve usability e.g menu items. Standard menu items and popup menu items now don't allow user selection of invalid options. Use of message bar to give small hints, use of toolbar, etc. This is an ongoing activity. Prepared web pages for early users and added some online help. Joshua Marshall He implemented Cool (a coordination language), which is used to specify the synchronized interaction of multiple threads in a single program. The Cool engine takes as input Cool code and outputs Weaver code. I designed and implemented the Aspect Weaver, which takes as input multiple files of Weaver code. This code consists of instructions for building a Java program. The sources of the code are the Cool engine (for synchronization), the Ridl engine (for remote method calls - presently unimplemented), and the Demeter/Java compiler; other aspects will be added in the future. The Weaver outputs Java code. Karl Lieberherr Helps test the new features and prepares sample applications. Guides discussions about design decisions related to Demeter/Java and collects them at URL: http://www.ccs.neu.edu/research/demeter/design-decisions Organizes Demeter Seminar.