List of the best books (based on my own opinion) to learn the UML notation for specifying software systems. Only the books I’ve personally read (or recommended by people I trust) are included in the list. Recommendations are done based on my 15+ years of experience teaching UML and Software Engineering. And to put all these concepts into practice, take also a look at our recommended UML tools, learn by doing!.
Let me start with a book with zero amazon reviews (at the time of writing) and one that I bet you didn’t know it even existed until today:
So, then, why am I saying this is the best UML book (especially, if you don’t know UML and want an introductory book that goes beyond a basic notation description)? This will convince you.
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 advice coming from his own experience).
Some of the suggestions may seem trivial to modeling experts but are definitely useful to all beginners. (review by Andrea Baruffaldi creator of the UML Lovers group in LinkedIn)
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.
Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and Iterative Development (3rd Edition)
One of my favorite books and the one I recommend to teach UML in a first-level software engineering course. The book explains 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 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.
Ideal for quickly clarifying all typical doubts that arise during a development process. Even if this is not a recent book, it’s worth having since it 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 views on how to model a particular aspect of the domain.
After getting your hands dirty with UML, you may want to continue your study of software modeling either by going deeper on modeling concepts or by looking at how the UML models you just created can be the start of a full code-generation process.