This paper describes the basis for a suite of tools that let the programmer work in terms of design patterns and source code simultaneously. It first introduces a language for defining design patterns. This language breaks a pattern down into elements and constraints over a program database of structural and semantic information. The language supports both creating new program elements when a pattern is created or modified and generating source code for these new elements. The paper next describes tools for working with patterns. These tools let the user identify and create instances of patterns in the source code. Once patterns are so identified they can be saved in a library of patterns that accompanies the system and the patterns can be verified, maintained as the source evolves, and edited to modify the source.
Steven P. Reiss