I picked this book up several years ago while writing curriculum for a training class on OOAD and UML. My reason for seeking it was that I needed an alternative to several of the books that Rational published, including UML Distilled and The Unified Modeling Language User Guide. The later two texts just did not tie UML, process and practical examples together and Larman's book did.
What appealed to me about "Applying UML and Patterns", is that it combined both theory and practice in manifold ways. I’ve critiqued each of the following areas:
- Software Development Life Cycle
- UML
- Patterns
- Practical Case Study and Examples
Software Development Life Cycle - From project Inception through Elaboration, even one new to the Unified Process will know exactly where the sample project is within the software development life cycle. In addition, the book gives the reader both a good intro to the Agile UP and substantiates why UP driven projects have higher success rates than those using the waterfall process. It sites the MIT Sloan Management Review of Successful Projects (http://smr.mit.edu) to build the case.
UML and other Artifacts - The book does an outstanding job of giving solid examples of applying UML notation and creating Use Cases. From writing effective use cases, to creating and refining a domain object model, to applying several popular patterns, you'll be glued each chapter. The inside and back cover provide useful aides for quick reference to the UP, several of Larman's patterns and UML notation.
Patterns - I think the book's value in showing how patterns compliment the design process speaks for itself. Those introduced, such as Larman's "Information Expert", "Creator" and "Controller" are part of his GRASP series.
Practical Case Study and Examples - The book intertwines UML, UP and a realistic case project called the “NextGEN point of sale system” in a real, practical way. Often, I've loaned this book to colleagues and client managers, both for their edification and at times to persuade them on a finer point of RUP, Agile and UP based process. It has also proved to be a good reference by providing RUP objectives and UML artifacts at key points in the SDLC.
Overall, the book makes for good reading for developers and team leads alike. I recommend it as a baseline prior to choosing a UP based methodology and for those wanting to understand the big picture and how Use Case, UML, Patterns and UP can compliment on another.
It would be great to see a book as quality as this written using .Net specific tools, such as Visio UML and C#.
If you are interested, please see www.craiglarman.com for more details and sample chapter from the book.