Conclusions

A single experiment in a complex situation such as programming says little, except perhaps for rejecting a hypothesis. But for confirming hypotheses, more testing needs to be done. Three experiments, two of which were replicated, gathered evidence about the effectiveness of software design patterns. The first pair of experiments showed that merely documenting design patterns can already lead to an increase in programmer productivity and reduce errors during maintenance tasks. Another pair of experiments, conducted with professional programmers, compared design pattern solutions with simpler, ad hoc solutions. In these experiments, introducing design patterns caused a certain overhead, but in most cases this overhead was justified because it simplified maintenance. The final experiment showed improvements in communication when team members shared design pattern knowledge. In the first and third experiments, there was also some evidence that weaker designers catch up with more experienced ones when using patterns.

Taken together, strong empirical evidence emerges that software design patterns are an effective approach to improving software quality and productivity in a maintenance context. The trust in design patterns was not misplaced!

Whether patterns have a positive effect during initial development is still an open question. A first experiment in that direction examined Abstract Factory from an API usability point of view [Ellis et al. 2007]. It found that programmers ...

Get Making Software now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.