Building Evolutionary Architectures: Support Constant Change, by Neal Ford, Rebecca Parson, and Patrick Kua. 2017. ISBN 1491986360.
This book focuses on evolvability of software, treating it as a top-level architectural concern. “An evolutionary architecture supports guided, incremental change across multiple dimensions.” (p. 6)
To guide and monitor change, the authors introduce the idea of fitness functions that assess various architectural characteristics. Fitness functions include metrics, monitors, and various types of tests, including performance and scaling tests. By covering key dimensions with these functions, you provide guard rails for future changes.
The authors compare various application architectures with a consistent viewpoint, exploring how easy they are to change, how well they can be guided by fitness functions, and whether they have appropriate coupling.
They move on to look at how to evolve data, ways to build evolvable architecture, some anti-patterns and pitfalls, and factors affecting evolutionary architecture in practice.
This book is moderately slim (190 pages), and straightforward to read. I like the fitness function concept, the way it generalizes tests to cover a variety of dimensions. I appreciated having a variety of architectures compared in the same framework. I wished for more information on tools and ideas for “engineering incremental change”, but that may be wishing for a different book:) Looking at how many pages of notes I took, this one has plenty of great ideas.