List of books to learn the UML notation for specifying software systems. When choosing a book it is important to check that the book covers the “new” UML 2.0 version.
Only the books I’ve personally read (or recommended by people I trust) are included in the list (yes! this means that if you want me to review your book you must hand me a copy :-D). Follow the link below to search for additional books.
The Elements of UML(TM) 2.0 Style by Scott W. Ambler
(review by Andrea Baruffaldi creator of the UML Lovers group in LinkedIn)
The best thing about this book is that it does not simply introduce the UML notation. Instead, it focuses ON providing a valuable set of guidelines to effectively use the UML (from layout guidelines to naming guidelines and to more general modeling advices coming from his own experience). Some of the suggestions may seem trivial to modeling experts but are definitely useful to all beginners. As an example, for activity diagrams, he defines the concepts of Miracle activity (activity that has activity edges out of it but none into it) and Black Hole activity (edges in but none out) and asks you to check if your diagram contains any instance OF them, since then it is likely that you are missing something in the diagram
UML Distilled: A Brief Guide TO the Standard Object Modeling language by Martin Fowler
Clearly, the best-seller of the UML world. The best book for a soft introduction to UML, suitable even FOR complete novices . Not recommended for people looking for a more complete description of the language.
Ideal for quickly clarifying all typical doubts that arise during a development process. The book provides a brief and comprehensible description of all UML modeling constructs, including many small examples that help settle the arguments once and for all among designers with different viewson how to model a particular aspect of the domain.
Applying UML AND Patterns: An Introduction to Object-Oriented Analysis and Design and Iterative Development by Craig Larman
One of my favourite books and the one I recommend to teach UML in afirst-level software engineering course. The book explain a software development process introducing and explaining at each step of the process the UML diagrams and constructs that are needed in that step. IN this sense, it is really useful to see how we can combine the different UML modeling views in a coherent development process.
The Unified Modeling Language User Guide by Grady Booch, James Rumbaugh, and Ivar Jacobson
The UML language explained by its own creators. The language is introduced in an iterative process, where at each iteration some more constructs for each kind of UML diagrams are introduced. Probably, NOT the best book to start learning UML but it is always good to know first-hand the opinion of the guys who started all this.