3.7 Further Reading
Martin Fowler, Kendall Scott, and Ivar Jacobson's book, UML Distilled: Applying the Standard Object Modeling Language (1997), is still the best practical introduction to the UML, despite having been pretty much the first out of the chute. It shows its age in spots, but combines modeling and programming concerns and cuts the huge beast down to a digestible size.
All of the UML books by the Three Amigos are useful, although with varying degrees of often-unstated bias towards the RUP. The Unified Modeling Language User Guide seems badly organized when you try to actually use it, but has a wealth of real-life, useful suggestions and ideas, a number of which provided the starting point for patterns in this book (Jacobson, Booch, and Rumbaugh 1999a). The Unified Modeling Language Reference Manual is occasionally idiosyncratic in content, at least when compared with the UML Specification, Version 1.3, but it is the most up-to-date and least influenced by the RUP (Jacobson, Booch, and Rumbaugh 1998b). With its encyclopedia/dictionary-type approach, it sometimes provides the only way to get the right information on nuances of current meaning that end-run some of the inconsistencies in the UML Specification. The Unified Software Development Process is the best of the bunch, but, of course, is even more biased toward Rational's process than the other two... but at least it's meant to be (Jacobson, Booch, and Rumbaugh 1999a).
Objects, Components and Frameworks with UML: The Catalysis Approach by Desmond D'Souza and Alan Wills (1998) is the best antidote to the bias towards the RUP that shows up not just in the Three Amigos books, but in almost all the UML books. The first chapter is almost impenetrable, but gradually you get the sense of the catalysis approach and why it (and component-based development) really is different from traditional object-oriented thinking.
One of any number of short articles by D'Souza is probably required reading as a preamble to undertaking the book, though. Alternatively, try the patterns first and then read the rest of the text. I've reworked a number of the patterns from catalysis in this book because they express real best practices from mainstream modeling. Although the rest of the book requires a real paradigm shift in thinking to absorb properly, the patterns are good fundamental ideas expressed simply and well.
Finally, the UML Specification, Version 1.3 (released in July 1999) is a necessary part of the library, although not one meant to be read. Because of the changes that have been made and some that are presaged, the 1.3 version needs to be available for occasional consultation. The language is frequently impossible, the odd inconsistencies are frustrating, but it is the source of final judgment. And it's free for downloading from the OMG and Rational Software Web sites.