Revision with unchanged content. Since the seminal book by the Gang of
Four, design patterns have proven an important tool in software
development. Over time, more and more patterns have been discovered and
developed for a plethora of design problems. The sheer amount of
patterns available makes it hard to impossible to find patterns useful
for solving a specific design problem. Hence, tools supporting searching
and finding design patterns appropriate to a certain problem would be
very useful. In order to develop such tooling, design patterns need to
be described in a formal manner such that querying for them by the
problem to be solved becomes feasible. Current approaches to formalising
design patterns focus on the solution structure of the pattern rather
than on the problem solved by the pattern. In this book, we present a
formalisation of the intent of the 23 patterns from the Gang-of-Four
book. Based on this formalisation we have developed a Design Pattern
Wizard that proposes applicable design patterns based on a description
of a design problem. This work is appealing both for the professional
software developer, and the student of computer science.