Adam Petersen - Software Development Pages, Book Reviews Section
Start News Articles Book Reviews

Book Review

A UML Pattern Language
by Paul Evitts

ISBN: 157870118X
Publisher: Sams
Pages: 300

I admit it – I bought this book out of sheer curiosity, founded solely on its title. A pattern language may be a very effective way of capturing knowledge. As I have noticed several patterns in my own modeling, I was interested to see how the format serves for describing them. As it turned out, it was with slightly varying results and I was surprised to learn that the pattern language actually makes up the minor part of the book.

The book starts with a superficial, general introduction to patterns before jumping over to early UML history. Although interesting, this historical education seems rather out of place. The next chapter falls into the common trap of trying to provide a high-level summary of UML. The chapter is well-written, but the target audience is unclear; the book is clearly not aimed at beginners and other books, for example UML Distilled by Fowler, serve the purpose better.

So much for the introductory material – what about the patterns? My initial concern was the publication date in February 2000. Since then, a lot has happened to the UML (the book draws on the 1.3 beta version of UML). Although several examples in the book use a now obsolete notation, it would be a mistake to dismiss the book due to this reason; Paul Evitts has managed to keep the core of the material above syntactic issues and the book keeps its relevance in these days of UML 2.X. In fact, I venture to say that many patterns would apply equally well to modeling outside UML.

The pattern language is divided into different categories. Unfortunately the pattern format does not fit the initial part about modeling style particularly well. The simplicity of these patterns suggests a simple format; recommending tree style routing for generalization relationships in a two-pages-pattern is pure overkill. In my experience, straightforward guidelines as in “Elements of UML Style” by Ambler are superior for this type of knowledge.

Luckily, the following parts of the pattern language save the day. Particularly the “Patterns of Substance”, concerned with meaning and expressiveness of models, is packed with valuable information and good ideas and Evitts’ excellent naming of the patterns makes it easy to navigate through the pattern language.

After the chapters describing the pattern language, the author once again includes material that leaves me with the impression of an incoherent book with a poor organization. I felt that several chapters added little of value to the reader and simply fill up the page count. That said, the chapter about the history of patterns and their community is well worth reading.

Despite these problems, I would recommend this book given a cheaper price than the 40$ I paid for it; it contains many good ideas and the history lessons are interesting although somewhat out of context.

Reviewed September 2005

©2005 Adam Petersen