Monday, August 22, 2005

An Architectural Pattern

MDC (Model, Document, and Communicate) is to Architecture what MVC (Model, View, and Controller) is to Software Development. Both represent important patterns for others to follow. Both are elegant and simple.

Architecture is different than software development. Architectural patterns are similar to, but not exactly like, what The Gang of Four wrote about in their seminal book Design Patterns. Rather than describing the elements of reusable object-oriented software, architectural patterns deal with those activities typically performed by architects (instead of developers).

The Gang of Four set out to use patterns in a generative way in the sense that Christopher Alexander uses patterns for urban planning and building architecture. They then used the term ''generative'' to mean ''creational'' to distinguish them from ''Gamma patterns'' that capture observations.

Christopher Alexander coined the term "Pattern Language" to emphasize his belief that people had an innate ability for design that paralleled their ability to speak.

Chris's book A Timeless Way Of Building is the most instructive in describing his notion of a pattern language and its application to designing and building buildings and towns.

He defined a 'pattern' as a three part construct:
  1. first comes the 'context' -- under what conditions does this pattern hold
  2. next are a 'system of forces' -- these represent the 'problem' or 'goal'
  3. the third part is the 'solution' -- a configuration that balances the system of forces or solves the problems presented
According to The Gang of Four, Patterns and Pattern Languages are ways to describe best practices, good designs, and capture experience in a way that it is possible for others to reuse the experience.

Patterns represent a common vocabulary for expressing architectural concepts. The goal of architectural patterns is to create a body of literature to help architects resolve recurring problems. Patterns help create a shared language for communicating insight and experience about problems and solutions.

Let's look at MDC -- Model, Document, and Communicate.

Architects deal with models. Different types of architects deal with different types of models: Business architects model business processes; Data architects model business objects (i.e., entities); Application architects model business solutions; Technology architects model technology portfolios.

The goal of architecture is to document everything. Formally codifying models provides a framework for capturing and organizing content.

Modeling and documenting is worthless unless the captured and organized information can be easily communicated to the people who need to access it.


Post a Comment

<< Home