Software (design) patterns resources
Note
This page is permanently under construction, but not very frequently updated. Send me email if you have comments or suggestions. You may also
be interested in my pages on Software Architecture, Making good (OO) Software, Checking (OO) software quality. Also check out
the RevJava tool that we're developing.
Introduction
Patterns were introduced and used by Christopher Alexander to encode knowledge and
experience in designing buildings. He defines a pattern as the core of a solution to a
problem in context. The solution can be applied in different situations, and has to be
adapted to fit the needs of the specific situation. In the (OO) software community the
idea of patterns has become popular over the past years. Patterns are used to describe
software design structures that can be used over and over again in different systems. They
- too - provide a general solution that has to be applied in a particular context, where
you use the forces (design considerations) to decide whether the pattern is useful and how
you could implement it best. People tend to distinguish different kinds of patterns, e.g.
architectural (overall system structure), design (micro-architectures that can occur in
different situations) and idioms (programming language specific patterns). There are
on-line examples of several of them (see below).
Patterns are linked to ongoing developments on Software
Architecture.
Background information
There are several papers discussing Alexander's ideas and what's happening with it in
the OO community.
On-line pattern-resources
Instead of listing all the books, research projects, etc. here just jump to the Patterns Home Page that is dedicated to patterns.
It gives information about books, conferences, mailing-lists and on-line pattern
catalogues.
In addition, check out the following:
Some on-line patterns
Again, check out the patterns home page. In addition, here are some I've looked at:
Specific pattern collections
Tools (research and others)
Conferences
Some conferences are dedicated to patterns. Check the patterns home page. You can also find pattern specific
workshops, tutorials, etc. at the regular OO conferences. Look at the OOPSLA page or the ECOOP Home Page.
Courses
- SERC regularly runs (commercial) architecture and
patterns workshops to introduce teams and organizations to the ideas of patterns and to
experiment with them.
Books
There are lots of books about or related to patterns. Check out the Patterns Home Page for more details and recent
updates. For convenience, here is a list of books I have read myself (in no
particular order):
- C. Alexander, A Timeless Way of Building, Oxford University Press. 1979
- C. Alexander and S. Ishikawa and M. Silverstein, A Pattern Language, Oxford University
Press.
- E. Gamma et.al., Design Patterns - Elements of Reusable Object-Oriented Software,
Addison Wesley, 1995
- W. Pree, Design Patterns for OOSD, Addison Wesley, 1994
- J. Coplien, D. Schmidt (Eds), Pattern Languages of Program Design (PLoP94 proceedings),
Addison Wesley, 1995
- P. Coad et. al., Object Models: Strategies, Patterns and Applications, Prentice Hall,
1995
- J. Coplien, Advanced C++ Programming Styles and Idioms, Addison Wesley, 1992
- Taligents Guide to Designing Programs (C++), Addison Wesley, 1994
- F. Buschmann, et. al. Pattern-Oriented Software Architecture - A System of Patterns,
Wiley and Sons Ltd., 1996.
- David C. Hay, Data Model Patterns: Convention of Thought, Dorset House Publishing, 1995
- Jiri Soukup, Taming C++: Pattern Classes and Persistence for Large Projects,
Addison-Wesley, 1994
- J. Vlissides et.al. (Eds), Pattern Languages of Program Design 2 (Plop95 proceedings),
Addison Wesley, 1996.
- Kent Beck; Smalltalk Patterns: Best Practices, Prentice Hall, 1997
- M. Fowler, Analysis Patterns, Addison Wesley, 1996
- R. Martin et.al. (Eds), Pattern Languages of Program Design 3, Addison Wesley, 1998.
- Doug Lea; Concurrent Programming in Java: Design Principles and Patterns, Addison
Wesley, 1996
- J. Vlissides, Pattern Hatching; Design Patterns Applied, Addison Wesley, 1998.
- Sherman R. Alpert, K. Brown, B. Woolf ; The Design Patterns Smalltalk Companion; Addison
Wesley, 1998
- W.J. Brown et al; Anti Patterns. Refactoring Software, Architectures, and Projects in
Crisis; John Wiley & Sons, 1998
- Mark Grand; Patterns in Java, Volume 1 & 2; John Wiley, 1998
- Linda Rising; The Patterns Handbook, SIGS, 1998
- Martin Fowler; Refactoring: Improving the Design of Existing Code, Addison Wesley, 1999
- Douglas Schmidt, et al. Pattern-oriented Software Architecture Vol 2: Patterns for
Concurrent and Networked Objects, Wiley 2000
- Martin Fowler, et.al., Patterns of Enterprise Application Architecture, Addison Wesley
Professional, 2002.
Other links, possibly of interest
Gert Florijn - 02/03/04