Since ancient times, the most talented architects and the most gifted designers have known the law
of parsimony. Whether it is stated as a paradox ("less is more"), or a koan ("Zen mind is beginner's
mind"), its wisdom is timeless: Reduce everything to its essence so that form harmonizes with
function.
From the pyramids to the Sydney Opera House, from von Neumann architectures to UNIX
and Smalltalk, the best architects and designers have strived to follow this universal and eternal
principle.
Recognizing the value of shaving with Occam's Razor, when I architect and read I seek projects and
books that adhere to the law of parsimony. Consequently, I applaud the book you are reading now.
You may find my last remark surprising at first. I am frequently associated with the voluminous and
dense specifications that define the Unified Modeling Language (UML). These specifications allow tool
vendors to implement the UML and methodologists to apply it. For seven years, I have chaired large
international standardization teams to specify UML 1.1 and UML 2.0, as well as several minor
revisions in between. During this time, the UML has matured in expressiveness and precision, but it
has also added gratuitous complexity as a result of the standardization process. Regrettably,
standardization processes are better known for design-by-committee compromises than
parsimonious elegance.
What can a UML expert familiar with the arcane minutiae of the specification learn from Martin's
distillation of UML 2.0? Quite a bit, as can you. To start with, Martin adroitly reduces a large and
complex language into a pragmatic subset that he has proven effective in his practice. He has
resisted the easy route of tacking on additional pages to the last edition of his book. As the language
has grown, Martin has kept true to his goal of seeking the "fraction of UML that is most useful" and
telling you just that. The fraction he refers to is the mythical 20 percent of UML that helps you do 80
percent of your work. Capturing and taming this elusive beast is no mean accomplishment!
It is even more impressive that Martin achieves this goal while writing in a wonderfully engaging
conversational style. By sharing his opinions and anecdotes with us, he makes this book fun to read
and reminds us that architecting and designing systems should be both creative and productive. If
we pursue the parsimony koan to its full intent, we should find UML modeling projects to be as
enjoyable as we found finger-painting and drawing classes in grammar school. UML should be a
lightning rod for our creativity as well as a laser for precisely specifying system blueprints so that
third parties can bid and build those systems. The latter is the acid test for any bona fide blueprint
language.
So, while this may be a small book, it is not a trivial one. You can learn as much from Martin's
approach to modeling as you can learn from his explanations of UML 2.0.
I have enjoyed working with Martin to improve the selection and correctness of the UML 2.0
language features explained in this revision. We need to keep in mind that all living languages, both
natural and synthetic, must evolve or perish. Martin's choices of new features, along with your
preferences and those of other practitioners, are a crucial part of the UML revision process. They
keep the language vital and help it evolve via natural selection in the marketplace.
Much challenging work remains before model-driven development becomes mainstream, but I am
encouraged by books like this that explain UML modeling basics clearly and apply them
pragmatically. I hope you will learn from it as I have and will use your new insights to improve your
own software modeling practices.
Cris Kobryn
Chair, U2 Partners' UML 2.0 Submission Team