Introduction to Patterns and Pattern Languages

This pattern language is for instructors in industry and academia. They will probably not be familiar with patterns and pattern languages. That's why we include a small sections on this topic. If you are familiar with patterns and pattern languages you can skip this section.

The first pattern language was a called "A Pattern Language - Towns, Buildings, Constructions" and was published in 1977 by the architect Christopher Alexander et. al. [CA]. He defines a pattern as follows:

Each pattern describes a problem that occurs over and over again in our environment, and then describes the core of the solution to that problem, in such a way that you can use this solution a million times over, without ever doing it the same way twice.

That means, patterns are not recipes that say "Do X, and everything is fine!". They provide hints along which lines a proven solution can be found to the problem, ideally with advantages, disadvantages and consequences of using the solution.

Alexander introduces 253 patterns in the architecture domain. He presents patterns for everything from designing independent regions, to cities, to buildings and even to designing single rooms. By connecting these patterns with common forces and other relations he transforms this collection of patterns to a pattern language. It provides a consistent way to create a comfortable environment for people to live in.

At the beginning of the nineties the software community started using Alexander's technique to capture and communicate wisdom in software development. The movement started in universities and at the major programming conferences, such as OOPSLA. The first book that was publicly available was "Design Patterns" by Gamma, Helm, Johnson, and Glissades called the Gang of Four (GoF). It was published in 1994, and they presented a catalog of 23 patterns on how to design software systems. In the meantime, domain specific patterns and pattern languages have been created, and the pattern movement has its own set of conferences, namely the PLOP, EuroPLOP, ChiliPLOP and KoalaPLOP (PLOP stands for Pattern Languages of Programs). Many of the patterns presented at these conferences can be found in [PLOP1, PLOP2, PLOP3, PLOP4]

In the more recent past the scope of the pattern languages expanded once again, now including patterns of group working, designing software in groups, and pedagogic patterns, that deal with the problem of how to teach (especially IT topics). This pattern language is intended as another addition to the pedagogic pattern movement, which can be found on the internet at [PP].


continue...