Yet another review. This post is written in the same spirit as the one before: Still no time for writing about more interesting topics, as I have to choose between writing posts about stuff, reading up on much needed stuff and practicing. I choose the latter two up until at least I’m finished with my current demo project, which could still take some time. Let’s hope not too much time. Until then, please enjoy this review.
I bought this book to finally have a comprehensive piece on the current state of UML instead of the dispersed sources I had so far. I also hoped for a book that doesn’t just list all the features robotically like the standard does, but condenses the standard down to a size enough for everyday use and gives some insights into the usage of these features. Let’s see how well it fared.
The book starts out by the usual intro text, discussing what UML is, how it is used, how different the current standard is to the previous one(s), etc, then moves on to put all the diagrams into and easy to follow structure by introducing three categories: structural, behavior and interaction diagrams. The author then simply uses these categories to divide the book up into three large sections, where each section contains the corresponding diagrams as their own chapters in an order of importance (at least this is the impression I got). Each chapter is then divided up into well defined sections, like scope of application, diagram elements, a fully explained diagram, some possible pitfalls during usage, etc. to help readers not just to navigate through the book, but to help readers understand the ideas behind each diagram type. Let’s examine this a bit closer.
Each chapter begins by discussing in which project phase that particular diagram type is to be used most efficiently and for what exactly it is useful for. After that we are presented with a full blown diagram that apart from boasting most of the available notation elements allowed for that type of diagram, it is also annotated to help readers to orient themselves and give a preliminary idea what is what. After having seen what is to come, the diagram is discussed element after element in a bottom-up way, meaning, that the discussion starts with the most essential parts, then goes on to interactions, and finally more complicated features are presented. What I liked about this section is, that when applicable, the diagram elements were presented in (Java and C#) code as well to show what the diagram element actually models.
All chapters end the same way. First, the diagram presented at the beginning is shown again without annotations, but with an accompanying explanation text, which is basically shows the reader how the particular diagram is to be interpreted. After this, the diagram from the beginning is presented yet again, but this time with intentionally introduced mistakes, which mistakes are then elaborated on. Finally, there is a quick overview of all important notation elements to help the reader to reinforce the things presented in the chapter.
It is clearly seen, that the book and all chapters are well structured, which doesn’t just make this book suitable for introducing the reader to all important concepts of UML, but can also be used as a quick reference work during development. These characteristics make this book an excellent choice, but it should also be noted, that there are some things the reader should (to some extent) be familiar with before picking this up, like OOP and design patterns, but knowing the syntax of a C-style language doesn’t hurt either (due to all code examples being implemented in Java and C#).
I also liked the fact that the examples (both code and diagram) model somewhat funny or very much everyday situations to make this otherwise rather dry subject more enjoyable. What I missed though is a chapter describing how the modeling process during development actually goes. Yes, each chapter does contain some hints about it (as already mentioned a few paragraphs back), but a nice overview of the whole process with a few recommendations would’ve been really nice at the very end of the book to help people get started right away. At the moment the reader is left to figure this whole thing out on his own, which is a shame, as some books on SysML (a derivative of UML) do contain such information, even if they don’t describe the process in depth. Otherwise, I’d definitely recommend this book for those who want to start out with UML or have only some vague ideas about it, but expect some extra reading if you want to know how and where to start out with it.