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.
A meaningful and memorable way to refer to the pattern, typically a single word or short phrase.
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).
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.
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
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.
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.
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 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.
The relationships between this pattern and others.
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.