Adaptive Object-Oriented Software Development: The Demeter Method

COM 3360 and SE 737-F 
Adaptive Object-Oriented Software Development:
The Demeter Method

Monday, 6-9 pm
DAJ on Source Forge . Course Description: A new programming technology is emerging, called Aspect-Oriented Programming (AOP) and more generally, Aspect-Oriented Software Development (AOSD, see This technology provides well-modularized implementations of crosscutting concerns leading to more flexible and simpler programs. Adaptive Object-Oriented Software Development is an interesting subfield of AOSD focussing on a very useful family of crosscutting concerns, called traversal-related concerns. Adaptive object-oriented programming is based on grammars, traversals and visitors. This course introduces this adaptive approach to software development and compares it to other approaches. Loose coupling between software artifacts is a theme used throughout the course. Specifically, we will learn about loose coupling between structure and behavior which leads to adaptiveness. Adaptive programming views "structure" as an aspect which crosscuts behavior. We will also look at many other aspects such as synchronization and remote invocation. We will study the basic concepts of aspect-oriented programming (an AOP system has five key ingredients) and how they relate to the concepts of adaptive programming. Course Objectives: Learn new skills in software development which allow you to develop significantly more flexible software. Acquire a clear understanding of the adaptive object-oriented paradigm through five architectural patterns; Structure-Shy Traversal, Selective Visitor, Structure-Shy Object, Class Graph and Growth Plan. Apply the aspect-oriented paradigm and the adaptive object-oriented paradigm to problems solving, including the implementation of a project. Understand the connections between the adaptive object-oriented approach and the aspect-oriented approach. Course Requirements: Homework: Four homeworks, one project Examinations: Midterm and final Computer Language: Java and AspectJ. AspectJ is taught in the course. Computer Facilities: Any computer which runs Java. Internet access for downloading homeworks, handouts, software and documentation of DemeterJ, AspectJ, DAJ and DJ (tools for aspect-oriented programming available in Java source form). Project: In the second half of the course you implement a project using adaptive and aspect-oriented techniques. Course Outline by Topical Areas: Thinking adaptively, (Polya's Inventor Paradox) Introduction to Aspect-Oriented Programming Conventional programming with traversals and visitors Tool-supported programming with traversals and visitors Adaptive software by example The architectural patterns behind adaptive software Class dictionary graphs and objects Traversal specifications and strategies Propagation patterns and the Law of Demeter Class dictionaries Style rules for class dictionaries Case study Design patterns for adaptive object-oriented software

A new feature this winter will be an increased use of Aspect-Oriented Programming ideas. You are encouraged to use AspectJ 1.0 in your project. AspectJ is a popular extension to Java and an early version was developed by Dr. Crista Lopes, a former Northeastern PhD student, while working at PARC.

The use of DJ has been very successful and we will continue to initially use DJ to write adaptive programs in plain Java. DJ: A simple tool for Java programmers. Read the DJ Fact Sheet first.

COM 3360 Resources (also COM 1205 resources)

First assignment: answer a questionnaire, and send me your answers by noon on Monday of second week of classes.

UML information you find on the web: Rational, OMG. Look for UML 1.3, the latest version now. UML 2.0 is in preparation.
Archive of class messages .
Using Java compilers at CCS.
Course Directories .
Course description (Postscript).
Syllabus (Postscript).
Links to individual project pages (under construction) .
Recent publications (they are sources for projects). Check the last few entries.
Project ideas.
Lecture Notes (several hundred slides in PowerPoint and Adobe PDF).
Demeter/Java and AP-Studio Resources.
Course progress.
Old exams (Practice exams) .

Instructor's Home page.