A design pattern is a generalized solution to a commonly occurring problem. Put another way, it is a parameterized
collaboration at a specific level of abstraction; a parameterized collaboration consists of pattern elements (the
"glue' that binds the collaboration together), formal parameters (which will be replaced by the actual
parameters or classes from the model during instantiation of the pattern), and relations among the elements.
A pattern is normally represented on a class diagram showing the pattern elements and formal parameters plus one or
more sequence diagrams depicting how the elements collaborate together to achieve the pattern's
goals.
In terms of architecture, the patterns are strategic in the sense that they apply to most or all of the system.
Architectural design patterns can be found in references such as DOU02 or BUS96.
At the mechanistic design level, the scope of design decisions is "collaboration-wide". That is, take an object
analysis (PIM) collaboration and optimize how the elements of that collaboration interact.
Good references include DOU04 and GAM95.
The scope for detailed design is the individual class. Optimizations here are small in scope, and the generalized
solutions are called idioms more often than patterns. Nevertheless, there any many generalized
solutions for recurring problems such as state machine structuring.
For more information see DOU99 or the use of the specific target language, such as C++ in MEY05.
|