Written for the developer with previous programming and design experience, Applying UML and Patterns combines UML, software patterns, and Java to illustrate the author's own design strategy. Though author Craig Larman sometimes relies heavily on the jargon of software engineering, there's no doubt that his book contains some immediately useful ideas on software design, using the latest and greatest in software-engineering research.
This book begins by outlining a basic process of software design using iterative, object-oriented techniques. The case study used for this text is a point-of-sale (POS) system, a helpful real-world example. The book constructs use case diagrams and basic conceptual and class models for this system. The author then adds sequence diagrams to show how the POS system will do its processing and collaboration diagrams to show how objects will interact with one another. The author uses standard UML diagrams to document the design.
When it comes to refining class design, the author's experience with patterns really shines. His General Responsibility Assignment Software Patterns (GRASP) suggest guidelines for designing classes that work together effectively. Larman believes that the ability to assign responsibilities to classes effectively is one of the most important aspects of good object-oriented design. His patterns allow this to happen and provide an interesting contribution to the design process. (The author also introduces more widely used software patterns to enhance the design process.)
When it comes to coding the design, Java is the programming language of choice for this text. Further chapters discuss how to refine an initial design using an iterative process of software engineering. While it's unlikely that readers will adopt Larman's approach to software design in its entirety, his guidelines--and application of patterns to class design, all documented using UML--make this a worthwhile text for the more experienced reader. --Richard Dragan