In the past decade, patterns have become a popular way of expressing reusable 'how-to' knowledge.

A pattern is essentially a named piece of advice on a possible solution to a particular category of problem. For example: how do you store a collection of variable size, or of variable-sized items (and supposing, for the sake of the example, that you don't have a predefined library class that does the job)? A designer might tell another "I made a Linked List for these items"; using the name of the well-known pattern helps the colleague immediately understand how the solution works, even though the exact details of the implementation haven't been revealed.

Although it may incorporate a piece of program design, a pattern is more than that. It incorporates advice on when it should be used, variations that may be employed, pitfalls to look out for. A conventional layout for patterns has evolved from debate, especially at the annual PLoP conferences and at websites such as

In addition to the well-known 1994 book Design Patterns (Gamma, et al), there are books on requirements analysis (e.g. Martin Fowler), architecture (e.g. Buschmann et al), the software process (Ambler), and project management (Coplien), all presented in the patterns style. A good recent book by Mark Grand catalogues design patterns in UML and Java.

The patterns found in books are usually quite general, applicable to a wide range of situations; but more specific patterns can be defined in each project. Throughout a system or project, recurrent problems and solutions can be found. Documenting and naming them helps maintain coherence across the system, and through its history. A local pattern book forms an effective way of bringing new designers on board.

A collection of patterns that integrate well together within a particular context is known as a "pattern language". One view of a project architect's job is that it is to define and promote the use of an appropriate pattern language, that will integrate the work of a team of designers.

complete solutions for patterns
(consultancy, courses, workshops, mentoring, seminars, development)

email us  or  telephone   UK: 01625 850 839    International: +44 1625 850 839