Patterns for Adaptive Programming (AP)

Adaptive Programming ideas [ Adaptive Programming Book ] have been re-invented in many different domains (software engineering, data bases, meta-object protocols, attribute grammars, functional programming, digital signal processing) and since the idea has been used successfully it is time to formulate it in terms of patterns to isolate the key ideas and to make them easier to teach.

Patterns for Adaptive Programming (version 3). Those newer patterns replace some of the patterns below, except the Inventor's Paradox pattern.

We use five patterns to describe AP. The first pattern is called Inventor's Paradox. It has four subpatterns called Structure-Shy-Traversal, Structure-Shy Object and Context. The Class Graph pattern is about customizers for adaptive programs.

Those patterns are useful for designing software architectures, for designers who want to enlarge their design techniques, for methodologists who want to add adaptiveness to their methods, for programming language designers who want to support adaptiveness directly at the programming language level.

Two of the patterns: Structure-Shy-Traversal and Context are improvements of the Visitor pattern described in the Design Patterns book by Gamma et al. Structure-Shy-Traversal is good for describing traversals and Context allows to elegantly describe the visitor objects. Those two patterns are explained in the viewgraphs of the talk: Explaining Demeter/Adaptive Software with Patterns.

The Inventor's Paradox uses several loosely coupled concerns. Structure-Shy Traversal deals with only two concerns: traversals and class graphs. Structure-Shy Object uses also two concerns: textual object representations and extended class graphs. Context uses the two concerns: behavior and behavior modification.

A condensed list of applications of adaptiveness sorted by technique to achieve adaptiveness.

Televised Course from National Technological University

The position paper for the ACM Workshop on Strategic Directions in Computing Research contains a discussion of patterns and software architecture.

Back to AP home page

To Patterns home page

Karl J. Lieberherr
College of Computer Science, Northeastern University
Cullinane Hall, Boston, MA 02115
Fax: (617) 373 5121