|This book is truly a holistic view of software architecture.|
This book structures the book around an Architecture Orientation Framework. The framework is based on open question words. A chapter has been dedicate to each. The framework provides a nice common vocabulary that makes team communication easier.
The chapters of the book include Architectures and Architecture Disciplines (WHAT), Architecture Perspectives (WHERE)' Architecture Requirements (WHY), Architecture Means (WITH WHAT), Organizations and Individuals (WHO), and Architecture Method (HOW).
Each chapter is laid out in the same logical format. They start with a nice concept map that puts the elements of the chapter into a nice contextual overview. They continue with the body of the chapter and end with a summary and a nice further reading section. Chapter 8 is unique in that it has a ton of really nice checklists to help you assess the various requirements of an architecture.
There are a ton of topics covered in this book. Some of them are Zachman Framework, Reference Model for Open Distributed Processing, 4+1 View Model, Open Group Architecture Framework, Requirements Characteristics and Types, Organizational Requirements, System Requirements, Qualities and Constraints, Requirements in the Context of Architecture, Loose Coupling, High Cohesion, Separation of Concerns, Abstraction, Modularity, Traceability, Procedural Approaches, Object Orientation, Component Orientation, Model-Driven Software Development, Aspect Orientation, Tactics, Styles, Patterns, Layered Architectures, Dataflow Architectures, Repositories, n-Tier Architecture, Rich Client versus Thin Client, Peer-To-Peer, XML and Other X Standards, Databases and Persistence of Business Objects, Architecture and Development Processes, Architecture Method, and Maintaining the Architecture.
Software Architecture is necessary for building complex software applications. All software has an architecture. You can either plan that architecture, or just let it happen. The later delivers chaos and legacy software every time. I have seen a lot of teams out there in denial. They deliver software that is over budget, well past promised dates, and so buggy more team members are required to maintain it than were needed to build it.
This book can help you get a clear understanding of what software architecture is all about. It can help you move past the emerging architecture mess and onto a planned one. One that has the right amount of supporting documentation that keeps the software from being legacy software the day it is delivered.
One thing I like about this book is that it is not a reinvention of the wheel. The authors do a great job of incorporating industry best practices that have withstood the test of time, as well as included all the newer elements of software architecture that have come about in recent years.
I have 15 years of software architecture experience and have read tons of other books on the subject. This one will stay near me on all my gigs. It not only makes a good cover to cover read, it also works great as a reference.
All in all I highly recommend this book to any software architect. The book is good for all levels of experience.
Software Architecture: A Comprehensive Framework and Guide for Practitioners