TITLE: Simplifying the Evolution of Java Programs A full day tutorial with hands-on exercises using Java. The tutorial is offered on-site. The class should not have more than 20 participants. You provide your PCs or workstations to run Demeter/Java which is written in Java and runs under Windows, Unix and Linux, etc. TUTORIAL CONTENT: We present key concepts in supporting evolution: context objects and traversal strategies. We demonstrate how context objects can be used to easily model and program patterns such as the Adapter, Bridge, Chain of Responsibility, Decorator, Iterator, Observer, State, Strategy, and Visitor. We show how traversal strategies lead to a significantly improved form of the Visitor design pattern. We present techniques for achieving dynamic behavior in a static, class-based model and language. We focus on two forms of behavior evolution: 1. dynamically altering a method implementation for a single object, and 2. dynamically altering a method implementation of a class (affecting all class instances) during the execution of some task. We present the freely available programming tool Demeter/Java (http://www.ccs.neu.edu/home/lieber/Demeter-and-Java.html) which implements a special kind of context object, called a visitor object. To enable the direct expression of visitor objects and to express traversal strategies for objects in Java, we present a simple extension to Java (the Demeter/Java language) and show how it is translated back into Java. The benefits of Demeter/Java are that programs become more flexible, both structurally and behaviorally, and simultaneously they become shorter. PREREQUISITES: The intended tutorial participants are experienced object-oriented programmers and analysts who want to improve the adaptability of their models and programs. Knowledge of Java is required for the hands-on part. Some familiarity with design patterns is recommended. TUTORIAL OUTLINE AND OBJECTIVES: The outline for this full-day tutorial is as follows: MORNING: 1. Introduction to design patterns and software evolution. 2. Discussion of existing object-oriented models and languages, and their approaches to supporting evolution. 3. Example patterns such as strategy, state, iterator, visitor using existing models and languages. 4. Introduction to evolution using context objects and traversal strategies. Implementation techniques for context objects and traversal strategies for Java. 5. Demeter/Java: The structure-shy traversal and structure-shy object patterns. AFTERNOON: Hands-on exercises using Demeter/Java. After completing the tutorial, you will be able to: 1. Develop more flexible and simpler object-oriented designs. 2. Describe your software in terms of executable patterns. 3. Apply Demeter/Java to develop your applications, reducing both development as well as maintenance costs. 4. Achieve dynamic behavior in static, class-based languages. Send mail to demeter@ccs.neu.edu to order a tutorial at your site. The cost is $4000 plus travel and lodging expenses for the instructor.