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?

Wednesday, March 05, 2003


I am often asked what I think about MDA (Model Driven Architecture). To put it shortly, I consider MDA as a good solution for some problems but not as common solution for all problems. Basically, MDA faces the same problems other approaches do. Take Application Frameworks as a prominent example. You might either make a framework so abstract that it comprises zillions of hotspots. In this case, you'll need to parametrize, change, and extend it in many different places. Or you can make a framework so concrete that it covers everything. In the latter case, give yourself a second thought. What happens with the complexity of your application domain? It will be hidden in the framework. That's the good news. The bad news is that you'll have to understand the framework to leverage it effectively. Doesn't that remind you of a boomerang? To summarize, I believe, MDA will work for small domains that are well understood by developers. It won't work in more general and large domains, because in this case modelling a system with MDA leads to the same complexity as modelling it without MDA. No, there will be no wizards where you can generate all your applications just by clicking some buttons.

Monday, March 03, 2003


I am interested in discovering patterns for Peer-to-Peer scenarios. Something like a pattern system for P2P applications. Obviously, there are different possible models which differ in their degree of centralism or lack thereof. A good idea would be to have a kind of P2P framework where people can play with different strategies. Basically what you need to support is registration, sharing, discovery, connection establishment, communication, multiple source strategies. It looks as if the client can be considered as Master in a Master-Slave pattern application while all peers might use the Forwarder-Receiver pattern to hide system specific details. I don't constrain this to file sharing but would like to consider any potential resource such as computing power. Anyone interested to share ideas should contact me.


Some people have written me if I am going to write a Windows version of DCP (Disk Copy Program). It is astonishing how many people still use DCP41 which is rather old and was developed using Borland C++ 2.0/3.0. Some of you might remember these tools. First, I will have to take a look how new Windows versions handle access to floppies. Anyway, if someone could point me to some example code I would be very thankful. Then, I will need to write a GUI. I'd rather prefer .NET but unfortunately this would require users to have the .NET framework installed.

Sunday, March 02, 2003


I am very glad to be program chair of TOOLS USA 2003 (end of September in Santa Monica). I could convince very important people to become members of the program comittee such as Frank Buschmann, Erich Gamma, Mario Jeckle, Ron Crocker, Kevlin Henney, Douglas C. Schmidt, Clemens Szyperski. The event itself will concentrate on quality issues. What I really like about TOOLS is the way it combines academic with industrial issues. Be sure to attend this event. I do not only advertise because I am program chair. Rather take it this way: I became program chair because I like the conference. Here is the URL:

ECOOP 2003

I am Industrial Track Chair of ECOOP 2003 in Darmstadt. And I will also give four tutorials there (one on patterns, three on .NET). For all industrial representatives it might me very interesting to participate. As you know ECOOP is a very interesting event on OO. Here is the URL: http://www.ecoop.tu-darmstadt.de!

XML and Webservices ONE 2003

2003 I am also heavily involved in different conferences. I am in the program committee of XML and Webservices ONE in Munich. We have succeeded in getting many interesting talks and tutorials. It is definitely worth attending the event. Don't forget the beer gardens are open in Munich that time. Take a look at http://www.sigs-datacom.de/sd/kongresse/webxmlone_2003/index.htm.


This is the first entry ever. Just a few words what I am trying to do with this blogger site. I just want to make sure that I can always give you updates about new. These are of course news I a consider as important. If you like to contact me just use my official (private) address: mailto:Michael@stal.de. The URL of my homepage is http://www.stal.de. Just if you came from there and now want to return :-;