Hitchhiker's Guide to Software Architecture and Everything Else - by Michael Stal

Thursday, March 06, 2003

The Patterns Universe

It is true, I am a pattern expert. As you might know, I served as co-author of two pattern books. Patterns are really useful for software development. We actually use them for most software projects at Siemens Corporate Technology. It is the reuse of best practices which make them so important. Unfortunately, there hasn't been much progress in the community of pattern users in the last years. Sure, you'll hardly find any magazine on software development that doesn't include articles on patterns. Even the MSDN Magazine has started a pattern column. Pattern are taken for granted these days.You do not have to ask your superior anymore for the permission to use them. If you look at the pattern community very closely, however, you'll notice that most developers seem to use the formula "Patterns == GoF". They think, using GoF patterns is what makes them advanced pattern users and experts. I definitely love the GoF book. It is the seminal book on patterns. But the GoF patterns are just the beginning. And that is where many developers are stuck today. If you read our POSA books (Pattern Oriented Software Architecture) you'll find that there are more sophisticated books on patterns around. Another book which has become en vogue is the Core J2EE Patterns book. This book is very pragmatic and useful, but it doesn't provide the same depth the GoF and POSA books show. What we really need today is some research on new fundamental patterns as well as fundamental domain-specific patterns. New pattern books should follow the rule that their content should help developers to solve real life problems. So where are the new Erich Gammas? When the pattern movement started I extracted many patterns from existing middleware solutions. The same holds for most other pattern authors. They just remembered how they solved problems when building frameworks or software systems. Pattern mining is a very important reverse engineering technology. I am doing this for years now. Fortunately, other people have come up with their own work in this area. Take Martin Fowler's new book on Enterprise Application Architecture as an example. This is th erecipe: Look at existing systems and try to understand them by uncovering the best practices underneath. Document these best practices as patterns. Find peers and cooperate to write a new GoF book. Isn't that easy?