They describe the static and dynamic structures that occur in a variety of software systems in a manner that emphasizes common aspects that make the pattern applicable across domains. Alexander's pattern language contains over 250 patterns, organized from high level to low level. The goal in documenting patterns that exist in software architectures is to arrive at a similar system, but this will take time. When we begin to document patterns, smaller and larger ones will be discovered, so the context cannot always immediately be specified entirely in terms of existing patterns. But we can ultimately specify context by discussing the situation that surrounds the problem.
Pattern languages are a useful medium for documenting software architectures.
Unlike other ways of describing the design, a pattern by definition describes the motivation surrounding the decision to use a particular solution, including the context and forces influencing the design. Patterns are often independent of the implementation language and can be used to describe connections between components. The pattern form is well suited to documenting design techniques. Unlike a design document, a pattern reflects something that has been used in a number of situations and thus has some generality. It has a context, which explains the intent of the pattern and suggests how it is to be used.