I have thought hard about this book; I can't decide whether it is a clear and concise demonstration of common-sense design principles, or whether, in its attempts to preach the simplicity of UML and OO design, it fails to be of any use in teaching the principles it intends to illustrate.
The book's name suggested an introduction to the Unified Modelling Language. Unfortunately, if you were new to UML, having read this book you would come away with few new skills, and a very patchy knowledge of UML diagrams.
I enjoyed reading the author's common sense, real-life examples of how, and when to use the different types of UML diagram. The more complex, detailed nitty-gritty of UML was glossed over, and in many cases dismissed altogether as unnecessary.
However, after chapters on class, sequence and use-case diagrams, I began to get a little annoyed at the author's attitude to UML. I wondered why some elements were so heavily criticised, and I questioned why the author had decided to write a book on UML if he believed so little of it was actually useful.
At this point the book veered off to cover some core principles of Object Oriented Design (the author's speciality), of extreme Programming and of component packaging principles.
The closing chapters successfully demonstrate the use of all of the UML concepts previously covered. You are challenged to design a Coffee Maker, and then shown a well-designed, OO solution using sequence, class and object diagrams, highlighting common mistakes made when faced with this challenge.
This book begins with the right goals, to demonstrate the simplicity of OO design with UML, and to remove some of the mystery of UML by only focussing on the elements that designers and developers are likely to use on an every-day basis. However, it would perhaps be better described as an introduction to object-oriented design principles, using some UML and some unified process practices.