Consists of:
- Participants
- Class involved to form a design pattern.
- The play different roles to accomplish the goals of the design pattern
- Quality Attributes
- Non-functional requirements effect the entire software & architectural solutions address them
- Usability
- Modifiability
- Reliability
- Performance
- More…
- Forces
- Various factors or trade-offs to consider
- Quality attributes manifest forces
- Consequences
- If we don’t reason about these forces well then we will face unintended consequences
- Worst performance, etc
- Decision makers should consider consequence
- Knowing when to use a design patterns and when not to use it is crucial
Pattern Language:
- Name
- Capture the gist of patterns
- Vocabulary – meaningful and memorable
- Context
- Provides a scenario in which we use these patterns
- Offers more insight on when to use the pattern
- Problem
- Describes a design challenge a pattern is addressing
- Solution
- Specifies the patterns itself
- Structure -> relationships between the elements in a pattern
- Behavior -> all the interactions between that pattern elements
- Related Patterns
- List other patterns being used together with the pattern being described
- Or; Similar patterns
- Crucial to precisely describe the subtle differences between the patterns