Thursday, March 23, 2006 4:44 AM
I approached this book with some trepidation. I did not want to get into a sales pitch about the merits of one modeling tool over others. It quickly became obvious that this book is not about tools. In fact, the opposite it true. This book is truly about the UML. While there are sparse references to some tools, the text focuses on the UML as a standard and how to effectively and pragmatically apply it to your efforts.
Another concern I had when starting this book was a strict adherence to the UML. Much to my pleasure, this book takes a very pragmatic approach to modeling software systems. There are often statements indicating how "many designers do it" as opposed to the more formal approach. These situations show how making the UML work for you (as opposed to you working for the UML) does not cause any lack of clarity. In fact, it often adds to clarity and simplicity.
I really appreciate the way in which the text suggests approaching adoption and use of the UML. It would be difficult to try and quickly learn and apply all of the details, of all of the diagram types, and which arrows connect what shapes. The book addresses this by suggesting that readers adopt the UML in pieces. It also suggests that not every diagram type is needed for every situation. Once again, the text emphasizes a practical approach.
Although it would seem difficult to describe the graphical nature of the UML in text, the author does this quite adeptly. There is an excellent balance between figures and text. Examples are direct and meaningful. Also, the author does not dwell on how to model a software system. Instead, the focus is on how to use the UML as a modeling tool.
In addition to the UML-centric chapters, the book offers additional information related to software modeling. The first chapter provides an overview of the UML. This gives readers, especially those new to the UML, a nice foundation of vocabulary and purpose. The last chapter, "Effective Diagramming," provides readers with some solid guidelines on using the UML effectively. Here the author explicitly describes "appropriate" modeling techniques (Dare I say best practices?).
Appendix A provides an introduction to Model Driven Architecture (MDA). It really is a brief introduction that should kindle the reader's desire for more information. If you are feeling ambitious, you can also learn about the Object Constraint Language (OCL) described in Appendix B. The OCL is used in addition to the UML for more granular detail in describing constraints in UML models.
Overall I really enjoyed this book. I highly recommend it to people trying to learn the UML for the first as well as those wanting to know what has changed since previous versions of the UML. I recommend this book to both veterans and to those new to the UML alike because of how it is written. Both groups will find the book's pragmatic approach to using the UML quickly educational and beneficial as an on-going reference.