TITLE: Simplifying the Evolution of Java Programs HALF DAY MORNING on Monday, May 19, 1997 TUTORIAL PRESENTERS: Linda Seiter Computer Science Department, Boston College, Chestnut Hill, MA 02167; email: seiter@cs.bc.edu. Karl Lieberherr, Doug Orleans College of Computer Science, Northeastern University, Cullinane Hall, Boston, MA 02115; email: {lieber|dougo}@ccs.neu.edu. TUTORIAL CONTENT: We present an in-depth look at the ability of existing models and languages to support different forms of reuse and evolution. The intended tutorial participants are experienced object-oriented programmers and analysts who want to improve the adaptability of their models and programs. We present a key concept in supporting behavioral evolution: the context relation. The relation is meaningful at both the design and implementation level. At the design level we present a simple extension to the Unified Modeling Language for including the context relation and the new type of class it introduces: context classes. At the implementation level we demonstrate how to develop Java programs using context objects. 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 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 public-domain programming tool Demeter/Java 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. TUTORIAL OUTLINE AND OBJECTIVES: The outline for this half-day tutorial is as follows: 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 behavioral evolution using context objects, and implementation techniques for Java. 5. Demeter/Java: The structure-shy traversal and structure-shy object patterns. 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 with lower maintenance costs. 4. Achieve dynamic behavior in static, class-based languages. TUTORIAL PRESENTERS: Karl Lieberherr is a Professor in the College of Computer Science at Northeastern University. His current research interests are methods and tools for developing adaptable software for open systems, with special emphasis on adaptive software. Karl Lieberherr is the author of the book: "Adaptive Object-Oriented Software: The Demeter Method with Propagation Patterns" published by PWS Publishing Company, 1996, ISBN 0-534-94602-X. The book presents patterns and techniques for managing structural evolution. Karl Lieberherr is Editor-in-Chief (with Roberto Zicari) of TAPOS (Theory and Practice of Object Systems), A John Wiley journal. For more information on course, author and book, see WWW URL http://www.ccs.neu.edu/home/lieber. Linda Seiter is a visiting professor at Boston College. Her current research interests include semantics of languages that support evolution and reuse. For more information, including links to her PhD thesis based on design patterns for managing evolution, see URL http://www.cs.bc.edu/~seiter. Doug Orleans is a PhD student at Northeastern University, and the principal architect of Demeter/Java.