Top positive review
An excellent and classic book
on September 14, 2003
First of all, please let me confess that I happen to be a fan of Martin Fowler's writing style. I feel he has an uncanny ability to get things over to his readers. But this book is more than style.
It follows an approach based on Pareto's 80/20 principle (which in the present instance translates into what would have been a statement like "there is 20% of UML syntax that you will need 80% of time and this is what I am going to teach you.") Following that tenet, this thin book (fewer than 200 pages) succeeds in its goal of being a very good distillation of the basics of UML, and thus an excellent introductory book to this graphical notational language.
Since this is an introductory book, a good thing about it is that it provides ample references to other publications for those inclined or required to delve in more depth into specific aspects of UML and OO analysis and design. There is a tendency to prescribe books from Addison-Wesley's Object Technology Series (part of which this book is), but I guess that is something to be expected.
Actually, the book, despite its small size, is not strictly constrained to UML per se. In its introductory chapter, it discusses the broader issue of OO analysis and design, where it succeeds in providing some background to the uninitiated, as well as providing the necessary context for UML, which without OO is like a fish out of the water. In the next chapter Fowler moves on to discuss process (RUP) - where RUP, of course, is not necessarily confined to the OO realm - stressing however that "the UML is independent of process" (p. 14). Within this discussion he offers some sidebar discussions of related issues such as Self-Testing Software, Refactoring (one of his favorite subjects), and Patterns.
In Chapter 3, Fowler moves on to discuss Use Cases (again something not necessarily, albeit customarily, related to UML, or object orientation for that matter... - you may be wondering when he is going to discuss UML after all :-), pointing to Cockburn's work for a more comprehensive discussion of the issue.
So, with Chapter 4, finally, starts the presentation of the UML. This is a short-'n-sweet (and to-the-point) discussion, covering the whole gamut: Class Diagrams (Essentials and Advanced Concepts), Interaction Diagrams, Packages and Collaborations, Statechart Diagrams, Activity Diagrams, and Physical Diagrams. The whole discussion of UML per se comprises 7 chapters and just 96 pages! However, I have never found myself in the need to use something in the "field" that is not contained in those 96 pages. It is all about distillation here, for the busy professional, who does not have the time to go through tomes of UML reference and specification documents.
The ultimate chapter attempts to illustrate the process of mapping the UML artifacts into Java code, using an example from the Health Care business domain. I would not say that this is my favorite chapter of the book; however your mileage may vary.
All in all, this is highly recommended book, if you are just embarking into this wonderful field... It will help you quickly get up and running. Also, if you have already been doing UML stuff without the assistance of some publication, based solely on free online material, the book will help consolidate and reinforce your present knowledge.