Foreword

Consider the work of a future software archeologist, tracing the history of computing. The fossil record will likely show clear strata: here is a layer formed of assembly language artifacts, there is a layer populated with the skeletons of high order programming languages (with certain calcified legacy parts probably still showing some signs of life). Each such layer will be intersected with the imprint of other factors that have shaped the software landscape: components, residue from the great operating system and browser wars, methods, processes, tools. Each line in this strata marks a definitive event: below that line, computing was this way; above that line, the art of computing had changed.

Design Patterns draws such a line of demarcation; this is a work that represents a change in the practice of computing. Erich, Richard, Ralph, and John present a compelling case for the importance of patterns in crafting complex systems. Additionally, they give us a language of common patterns that can be used in a variety of domains.

The impact of this work cannot be overstated. As I travel about the world working with projects of varying domains and complexities, it is uncommon for me to encounter developers who have not at least heard of the patterns movement. In the more successful projects, it is quite common to see many of these design patterns actually used.

With this book, the Gang of Four have made a seminal contribution to software engineering. There is much to learned from them, and much to be actively applied.

Grady Booch
Chief Scientist, Rational Software Corporation