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.

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. 

We also assume some familiarity with the concepts of adaptive programming.
See 
http://www.ccs.neu.edu/research/demeter/
for further information. The Demeter book
http://www.ccs.neu.edu/research/demeter/biblio/dem-book.html
collects the most relevant information.
 
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 AP are:

PATTERN: Inventor's Paradox
  PATTERN: Structure-shy Traversal
    family of traversals, member selected by class graph
  PATTERN: Structure-shy Object
    family of objects, member selected by class graph
  PATTERN: Selective Visitor
    family of behaviors, member selected by traversal, class graph
  PATTERN: Class Graph
    family of objects, behaviors,
    member selected by constructor calls, sentences, traversals, visitors

A software development planning pattern:
  PATTERN: Growth Plan 

The patterns are dependent on each other. The following
dependencies are symmetric but the given dependencies are stronger:

Structure-shy Traversal		uses	Selective Visitor
					Class Graph

Structure-shy Object		uses	Class Graph
Selective Visitor		uses	Class Graph

Inventor's Paradox is a super pattern of Structure-shy Traversal
and Structure-shy Object. It can be skipped on first reading
and is described at:

http://www.ccs.neu.edu/research/demeter/adaptive-patterns/AOP/IP.html

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.