UML Distilled: A brief guide to the standard object modelling language
by Martin Fowler
UML Distilled is good. It is written carefully and concisely and has been heavily revised to cover UML 2. It is a opinionated book – it presents Martin Fowler’s view of UML. This is a good thing. Fowler concentrates on the parts of UML that he has found widely used in the industry, and the most useful in his own work. Fowler is not bound by the UML specification, he also describes “non-normative” diagrams (ie, variations on UML which are not standard but widely used). Fowler often provides his own view on a particular diagram or component. For example, I’ve often wondered when to use aggregation rather than association in a class diagram. Fowler cleared this up for me:
“Aggregation is strictly meaningless; as a result, I recommend that you ignore it in your own diagrams. If you see it in other people’s diagrams, you’ll need to dig deeper to find out what they mean by it. Different authors and teams use it for very different purposes.”
UML Distilled starts with an introduction about UML’s history and aims, and then a rapid look at different development methodologies and where to fit UML into them.
The core of the book covers the following diagrams/specs:
State Machine Diagrams
Interaction Overview Diagrams
Class diagrams and sequence diagrams are covered in detail, the other diagrams more briefly. The book is quite short, but gives enough information on each topic to allow you to understand and draw the diagrams. At the end of each chapter, there is a helpful “where to find out more” section and a “when to use this type of diagram” section.
There is also an appendix at the end of the book on changes between various versions of UML.
The book is surprisingly easy to read. Fowler’s style is clear and friendly and examples are well chosen.
My only complaint is that perhaps the book could have been a little longer to allow a bit more detail on some of the diagram types. I would have liked to have read a little bit more on object diagrams in particular.
I’d recommend the book to anyone who wants a rapid and concise introduction to or revision of UML 2.