Architectural patterns describe how to structure a whole application, or an important aspect of it. It is not necessarily an architecture, but a concept that solves and delineates some essential cohesive elements of a software architecture. Many different architectures may implement the same pattern, and as such have a number of related characteristics.
Relation to design patterns
Compared to design patterns, architectural patterns describe larger and more abstract software structures. (Design patterns are sometimes called "micro-architectures" to emphasise the difference in scale.) The groundwork for architectural patterns was laid by Party of five 1996, who described architectural patterns, design patterns and idioms. Martin Fowler 1997 also touched on architectural patterns by describing 2-tier, 3-tier and n-tier architectures, and by raising the topic of how to structure applications that depend on databases. Martin Fowler 2003 greatly expands on his earlier architectural patterns ideas, emphasising layered systems, distribution, web interfaces and databases. These topics are sometimes known as "enterprise architecture" or "enterprise patterns".
Fowler's web site has a list of of enterprise patterns.
- Operational Data Store (ODS)
- ETL ( Data Extraction Transformation & Loading)
- Model View Controller
- Presentation Abstraction Control
- Multitier architecture
- Pipe and filter architecture
- Implicit Invocation
- Blackboard System
- Peer To Peer
- Service Oriented Architecture
- Naked objects