Software architecture Design Patterns

March 2, 2015
Huston Design Patterns

Patterns occur at many levels. Architecture patterns (i.e., architectural styles) are generally the largest in scope and cover the fundamental organization of the system. Design patterns are at the level of several collaborating objects. Bernd's suggestion of Fowler's and other enterprise patterns is a good one. Just recognize that those patterns tend to be more specific than these architectural patterns:

  • Layered (i.e., virtual machine pattern)
  • Big Ball of Mud
  • Pipe and Filter
  • Batch-Sequential
  • Model-Centered (Shared Data)
  • Publish-Subscribe
  • Client-Server (and N-Tier)
  • Peer-to-peer
  • MapReduce

Architecture patterns most often apply to the runtime structure of the system, but can also apply to its modules or its hardware allocation. One common mistake is to think that the Layered pattern applies to the runtime when it really applies to a system's modules (i.e., its compile-time dependencies). You can, of course, mirror your module structure in the runtime

These patterns are discussed in detail in my book, Just Enough Software Architecture, Fairbanks (2010). Most of them are also covered in other books including Garlan & Shaw (1996), Taylor, Medvidovic, & Dashovy (2009), and Documenting Software Architectures (SEI, 2010).

With the list of pattern names, you should be able to find plenty of web pages (I've marked this as a community Wiki so that we can add those links). The books are helpful too because they give you more insight on how to use the patterns.

Architectural Design Patterns
Architectural Design Patterns
Design patterns
Design patterns
Architecture Design
Architecture Design
Share this Post