Software Architecture in Practice

Len Bass, Paul Clements, and Rick Kazman; Fourth Ed.
Addison-Wesley, 2022

Perhaps undersold by the "in Practice" qualifier of its title, this book runs the gamut: it introduces software architecture, describes architectural attributes of software systems, describes solutions, practices, and processes—​and finally addresses where architecture (as a discipline) nestles into a software development organization. Unsurprisingly, given that breadth, some topics are addressed only shallowly; this is an overview of the field and not an in-depth tour. Nonetheless, the book weighs in at a significant 400 pages.

Architects will find Part II the most useful. Comprising nearly half the book, it defines quality attributes—such as availability—​and explains how they are central to architectural thinking. The ten "core" quality attributes addressed here are availability, deployability, energy efficiency, integrability, modifiability, performance, safety, security, testability, and usability. The "quality attribute" label may be new to some; others will recognize these as "non-functional requirements" or "ilities." (Or even, in [Shaw96], "extra functional" requirements—​a term that decidedly did not catch on.) Where other parts of the book are briefer in their treatment, Part II qualifies as one of, if not the, most comprehensive explanations of these properties.

With the book now in its fourth edition, Part III contains an admirably current discussion of topics such as virtualization, cloud computing, and mobile computing that are foundational for today’s architects. (A closing chapter offers some thoughts on quantum computing, but here the book might be reaching too far into the future; it seems too early to set down best practices in that space.) Here the chapters are shallower but, in fairness, each of these topics merits a book in its own right.

The book is well-organized into six parts. It is a ponderous read cover-to-cover but serves as an excellent reference to dive into when you want to brush up on a particular topic.



© 2024 by Oliver Goldman