Architecture Pattern

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 this experience.

A short slogan for Pattern - `a solution to a problem in a context''

  • Context refers to a recurring set of situations in which the pattern applies

  • Problem refers to a set of forces -- goals and constraints -- that occur in this context

  • Solution refers to a design form or design rule that someone can apply to resolve these forces

Elements of a Pattern

The below elements are taken from Pattern-Oriented Software Architecture: A System of Patterns.

Name

A meaningful and memorable way to refer to the pattern, typically a single word or short phrase.

Problem

A description of the problem indicating the intent in applying the pattern - the intended goals and objectives to be reached within the context and forces described below (perhaps with some indication of their priorities).

Context

The preconditions under which the pattern is applicable - a description of the initial state before the pattern is applied. This tells us the pattern's applicability.

Forces

A description of the relevant forces and constraints, and how they interact/conflict with each other with the intended goals and objectives. Forces reveal the intricacies of a problem and define the kinds of trade-offs that must be considered. For Example -

  • Security, robustness, reliability, fault-tolerance

  • Manageability & Scalability (incremental growth on-demand)

  • Efficiency, performance, throughput, bandwidth requirements, space utilization

  • etc., ...

Solution

A description, using text and/or graphics, of how to achieve the intended goals and objectives The description of the pattern's solution may indicate guidelines to keep in mind (as well as pitfalls to avoid) when attempting a concrete implementation of the solution. Sometimes possible variants or specializations of the solution are also described.

Examples

One or more sample applications of the pattern which illustrate each of the other elements: a specific problem, context, and set of forces; how the pattern is applied; and the resulting context.

Resulting Context

The state or configuration of the system after the pattern has been applied, including the consequences (both good and bad) of applying the pattern, and other problems and patterns that may arise from the new context. It describes the post conditions and side-effects of the pattern.

Rationale

Rationale provides insight into the internal workings of the pattern . The solution component of a pattern may describe the outwardly visible structure and behavior of the pattern, but the rationale is what provides insight into the deep structures and key mechanisms that are going on beneath the surface of the system.

Related Patterns

The relationships between this pattern and others.

Known Uses

Known applications of the pattern within existing systems, verifying that the pattern does indeed describe a proven solution to a recurring problem. Known Uses can also serve as Examples.

Patterns for architecture are very much in the infancy. The potential to bring enterprise best practices into individual Agile team lies with defining pattern and hence the relevant potential.

References:

http://pubs.opengroup.org/architecture/togaf8-doc/arch/chap28.html#tag_29_02
http://www.bradapp.com/docs/patterns-intro.html#PatternDefinition

Comment