Analysis patterns
Analysis Patterns
What is an analysis pattern? I think an analysis pattern is:
- An archetypal domain model for a specific problem domain.
- Like a design pattern, but without implementation details.
In other words, analysis patterns look a lot like design patterns, but they are for some specific problem domain, rather than being applicable to any problem in the way that design patterns are. They are examples of Domain modelling.
Consider our Parse tree design example. We aren't the only ones to need a parse tree, and our design must look a lot like other designs. Why not abstract out the problem domain concepts, remove any implementation details (like Enums in java) and make a reusable model, suitable for use in any parse tree implementation? Then we'd have an analysis model for the domain of parse trees.
The parse tree design exercise stepped through a series of design issues. Rather than being a single model, we produced a family of related designs, with extensions that address different issues. e.g. the Visitor Pattern was applied to the parse tree to allow flexible traversals, while the Flyweight Pattern reduced space requirements.
Analysis patterns are like that too. Most patterns provide a model for some problem domain, with extensions for variations on the theme.
The main source of analysis patterns is Martin Fowler 1997.