Software Design X-Rays
Fix Technical Debt with Behavioral Code Analysis
Welcome, dear reader—I’m happy to have you here! Together we’ll dive into
the fascinating field of evolving software systems to learn how behavioral code
analysis helps us make better decisions. This is important because our
average software project is much less efficient than it could be.
The history of large-scale software systems is a tale of cost overruns, death
marches, and heroic fights with legacy code monsters. One prominent reason
is technical debt, which represents code that’s more expensive to maintain
than it should be. Repaying technical debt is hard due to the scale of modern
software projects; with hundreds of developers and a multitude of technologies,
no one has a holistic overview. We’re about to change that.
In this book, you learn a set of techniques that gives you an easily accessible
overview of your codebase, together with methods to prioritize improvements
based on the expected return on investment. That means you’ll be comfortable
with picking up any large-scale codebase, analyzing it, and suggesting specific
refactorings based on how the developers have worked with the code so far.
Good code is as much about social design as it is about technical concerns.
We reflect that by learning to uncover organizational inefficiencies, resolve
coordination bottlenecks among teams, and assess the consequences of
knowledge loss in your organization.
1