Project Management

UML Distilled

Author: Martin Fowler with Kendall Scott

ISBN: 020165783X

Buy this book at

The Essence of UML
by Alan Zeichick

It's amazing how fast new technologies take off. Okay, none has been as successful as the "ILOVEYOU" virus, which took over the world in a single day. But think about how few months transpired between the invention of MP3 and its showing up on your company's PCs. Or how quickly XML became the centerpiece of the business-to-business e-commerce revolution. Or how swiftly the Unified Modeling Language (UML) took over as the basis for developing, explaining and documenting object-oriented design. 

With such fast-moving technologies, knowledge often lags behind adoption. For example, many software development professionals haven't even heard of object-oriented design, or know what it means. Others may have been exposed to UML's precursors, such as Grady Booch's Rational Unified Process, and not realize that it's the same as UML. Some people read about UML when first approved by Object Management Group Inc. (OMG)-but it's evolved significantly since then.

One quick way to get up to speed is to read Martin Fowler's "UML Distilled, Second Edition." Written with Kendall Scott, Fowler's book isn't "UML for Dummies." (No, IDG Books hasn't published that title yet, though they do have "MP3 for Dummies.")

Rather, it's a concise overview written for experienced developers or development managers who want to understand UML in a nutshell. And yes, there is a book called "UML in a Nutshell," from O'Reilly & Associates, though it's woefully out of date. Unfortunately, "UML Distilled, Second Edition" is slightly out of date as well, despite its publication this year. Fowler covers UML 1.3 as it existed before OMG finished work on it in June 1999-and now OMG is about to conclude its work with UML 1.4 and is talking about UML 2.0. None of that, however, detracts from the value of Fowler's book.

"UML Distilled" begins by presenting not the lines and arrows that make up the Unified Modeling Language itself, but rather the bigger question of object-oriented analysis and design, and by presenting an overview of Fowler's own simplified variation on the Rational Unified Process, developed by Rational Software Corp.'s three amigos: Booch, Ivar Jacobson and James Rumbaugh.

Just as it's not a genuine tutorial on UML, neither is this book a tutorial on the object-oriented development process; Fowler and Scott present enough to set the tone and ensure that everyone's on the same page. Someone unsure of what object-oriented design and development is could try reading Chapter 2 of "UML Distilled." Anyone who makes it that far should be ready for the next step, beginning with the third and fourth chapters, which do a fine job covering use-case diagrams and basic class diagrams; without use cases and an idea of the requisite classes, it's hard to imagine any object-oriented project succeeding.

When covering those concepts, and others in the remainder of "UML Distilled," the authors really stick to the essentials, with new areas receiving only a few pages each. They tell what something is, show what it looks like in graphical terms and then provide a context that explains when to use this type of diagram and its notation. The writing is clear and lucid and there are many interesting side trips, such as Bertrand Meyer's fascinating idea of design by contract.

The next two chapters, on interaction diagrams and more advanced class diagrams, aren't as clear; by this point, there are many symbols in a typical UML diagram, even the simple ones used in "UML Distilled," and it's hard for neophytes to keep them all straight. Individual drawings of the symbols, such the different arrow and line types, would be a welcome complement to the chapters' complete sample diagrams.

Chapter 7, on packages and collaboration, might confuse developers who are used to Linux or Visual Basic. That's because those environments use terms like "package" and "component" differently than UML does. In UML, for example, a package is a collection of related classes. In Linux, a package is a software distribution vehicle. If Fowler and Scott had explained when UML-specific words and phrases differ in meaning from other software-development contexts, the book would have been a better teaching aid.

"UML Distilled" wraps up its discussion of essential UML concepts with brief chapters on state, activity and physical diagrams. The final chapter, entitled "UML and Programming," describes a sample application, shows some UML diagrams and then shows Java code that implements the application's design. This is excellent-but why leave that to the end? An up-front introduction of a complex application would have neatly framed the entire book's contents.

Other than those quibbles, "UML Distilled" is a good first reference for experienced developers or development managers who understand object-oriented design and want a quick way to get their arms around UML. Nobody should expect to read this slim book and then start diagramming his or her enterprise's latest mission-critical application; for that, one would need to study "The Unified Modeling Language User Guide" and the "UML Reference Manual," to say the least. But thanks to Fowler and Scott, it's easy to learn what UML is all about, and be able to make heads or tails out of many UML diagrams.

Reprinted with permission of SDTimes.  Originally appeared in Issue 007, June 2000.


"Enjoy yourself. It's later than you think."

- Chinese Proverb