Software Modeling and Design: UML, Use Cases, Patterns, and Software Architectures Book Review
|If you want to learn to use UML as a communication tool on your software development projects, this is the book too own. It contains a ton of examples and covers every aspect of the UML you will need to know to successfully use it on your projects.|
The book starts out with an introduction to software architecture and object oriented analysis and design with UML.
There is then a short chapter on UML notation, a chapter on software development processes, and one on software design and architectural concepts. The last chapter in part one introduces COMET (Collaborative Object Modeling and Architectural Design Method), which is the author's software modeling and design method.
To me COMET is not really that much different than the Unified Process, which is a great process. COMET just breaks out the testing activities a little differently. COMET is a very usable process and if used correctly should lead to successful software development projects.
Part two of the book is all about modeling. There is a chapter on Use Case Modeling, Static Modeling, Object and Class Structuring, Dynamic Interaction Modeling, Finite State Machines, and State-Dependent Dynamic Interaction Modeling.
By the time you are done with part two of this book you will know all you need to know to produce high quality diagrams that can be used between the different stakeholders on your projects as very effective communication tools.
Part three of the book covers software architecture. There is a chapter on the Overview of Software Architecture, Software Subsystem Architectural Design, Designing Object-Oriented Software Architectures, Designing Client/Server Software Architectures, Designing Service-Oriented Architectures, Designing Component-Based Software Architectures, Designing Concurrent and Real-Time Software Architectures, Designing Software Product Line Architectures, and a chapter on Software Quality Attributes.
If the chapter on Software Product Lines interests you, I would highly recommend buying the author's book tilted Designing Software Product Lines with UML: From Use Cases to Pattern-Based Software Architectures.
I really the like the way part two introduces the different perspectives you need to have when considering the type of architecture you are building. The way the author accomplishes this is unique to this book. I have not seen it broken down this way before, and it really provides some great insight.
Part three contains several case studies. Each one provides a detailed design of the system being discussed. These are great for seeing how well the design techniques in this book work. You get a complete understanding of each of the systems in the case studies by the time you are done reading the chapter.
This book is really well written and organized. You can read it from front to back or use it as a reference. Each chapter ends with exercise questions. I usually just ignore these, but since the author has decided to include the answers I enjoyed trying to answer them.
The book has an appendix which contains a nice catalog of software architectural patterns. It is a summary of architectural structure patterns, communication patterns, and transaction patterns. It contains a summary of the pattern and the location it is used in the book.
All in all this is a very high quality book packed with very valuable information any architect at an level of experience will benefit from. Hi highly recommend this book!!!!