Pattern Language for Adaptive Programming
Specialized for Java and Java tools

Explains the ideas behind Adaptive Programming using a pattern format
referring to Java and Java tools terminology.
Suitable for using adaptiveness at the design level in a conventional
Java development environment using your favorite Java tools
and the DJ library from Northeastern.

Prerequisites:
Some familiarity with the pattern concept is assumed.
A pattern is a solution to a problem in a context. My view of a pattern
is a standard solution to a recurring problem. It is useful
to write down such standard solutions and to use them for teaching
and to learn from them to find higher level concepts.
Standard solutions to recurring problems have been with us for
a long time, but the software community has only recently begun
to write down such standard solutions using unifying formats.
The GOF book (Design Patterns, Addison Wesley) introduces 23 patterns
for solving evolutionary problems in object-oriented software development.
For more information,
see http://st-www.cs.uiuc.edu/users/patterns. 

The patterns presented here describe the essence of the Demeter Method.
They give guidance on how to organize the architecture of your
software but allowing for a lot of flexibility.

The collaborating patterns of the pattern language for DJ are:

  PATTERN: Structure-shy Traversal
    family of traversals, member selected by class graph
  PATTERN: Selective Visitor
    family of behaviors, member selected by traversal, class graph

A software development planning pattern:
  PATTERN: Growth Plan 

The patterns follow the theme of describing a family of X instead
of an individual X. This results in partial descriptions of the
artifacts we want and allows us to underspecify in each description,
leading to more reusable software.