This book provides a concise, all-in-one, easily accessible overview of software architecture. Anyone requiring a comprehensive overview of the field of software architecture will benefit from this book. Software Architecture in Practice, 2nd edition, provides a comprehensive overview of the field of software architecture in a single, easy-to-digest package.
Software Architecture in Practice is the best-selling book about the principles, concepts, and uses of software architecture. It is a one-stop source for a comprehensive overview of the entire field. It covers origins of the concept, its importance in system-building as well as organizational strategy, and related concepts such as architectural styles.
One of the book's major contributions is its rich examples. It contains no fewer than six detailed case studies of real architectures built to solve real problems: air traffic control, avionics, the World Wide Web, simulation, mobile applications, and more. Each architecture was crafted with one or more quality attributes in mind: ease of change, reliability, growth and extensibility, use in a product line, performance, etc. These case studies serve to emphasize the book's major theme: architecture permits or precludes most of a system's quality attributes.
Documenting the architecture is the crowning step to crafting it. The most perfect architecture is useless if no one understands it. If you can go to the trouble of creating a strong architecture, you must go through the trouble of describing it in enough detail, without ambiguity, and organized so that others can quickly find needed information.
Another major contribution is the book's attention to evaluating a software architecture while it's still a paper design, before it's been solidified into code. Defects are spotted early, when they are still inexpensive enough to do something about. New methods have emerged that make architecture evaluation a cost-effective step that should be a part of every development process.
Finally, the book explores the role of architecture as the basis for a software product line, which is a set of systems that are built sharing a common set of core assets, of which architecture is the most important.