Software Patterns W. Kandinsky, Structure Joyeuse

Software Patterns

What is a pattern?
From "The Timeless Way of Building" by Christopher Alexander.
Each pattern is a three-part rule, which expresses a relation between a certain context, a problem, and a solution.
As an element in the world, each pattern is a relationship between a certain context, a certain system of forces which occurs repeatedly in that context, and a certain spatial configuration which allows these forces to resolve themselves.
As an element of language, a pattern is an instruction, which shows how this spatial configuration can be used, over and over again, to resolve the given system of forces, wherever the context makes it relevant.
The pattern is, in short, at the same time a thing, which happens in the world, and the rule which tells us how to create that thing, and when we must create it. It is both a process and a thing : both a description of a thing which is alive, and a description of the process which will generate that thing.
We group patterns into three categories
  1. Architectural patterns
  2. An architectural pattern expresses a fundamental structural organization schema for software systems.
  3. *Design Patterns
  4. Idioms
1