Are you working on a codebase where cost overruns, death marches, and heroic fights with legacy code monsters are the norm? Battle these adversaries with novel ways to identify and prioritize technical debt, based on behavioral data from how developers work with code. And that's just for starters. Because good code involves social design, as well as technical design, you can find surprising dependencies between people and code to resolve coordination bottlenecks among teams. Best of all, the techniques build on behavioral data that you already have: your version-control system. Join the fight for better code!
Use statistics and data science to uncover both problematic code and the behavioral patterns of the developers who build your software. This combination gives you insights you can't get from the code alone. Use these insights to prioritize refactoring needs, measure their effect, find implicit dependencies between different modules, and automatically create knowledge maps of your system based on actual code contributions.
In a radical, much-needed change from common practice, guide organizational decisions with objective data by measuring how well your development teams align with the software architecture. Discover a comprehensive set of practical analysis techniques based on version-control data, where each point is illustrated with a case study from a real-world codebase. Because the techniques are language neutral, you can apply them to your own code no matter what programming language you use. Guide organizational decisions with objective data by measuring how well your development teams align with the software architecture. Apply research findings from social psychology to software development, ensuring you get the tools you need to coach your organization towards better code.
If you're an experienced programmer, software architect, or technical manager, you'll get a new perspective that will change how you work with code.
What You Need:You don't have to install anything to follow along in the book. TThe case studies in the book use well-known open source projects hosted on GitHub. You'll use CodeScene, a free software analysis tool for open source projects, for the case studies. We also discuss alternative tooling options where they exist.
Table of contents
-  The World of Behavioral Code Analysis
Part I. Prioritize and React to Technical Debt
- 1. Why Technical Debt Isn’t TechnicalWhy Technical Debt Isn’t Technical
- 2. Identify Code with High Interest Rates
- 3. Coupling in Time: A Heuristic for the Concept of SurpriseCoupling in Time: A Heuristic for the Concept of Surprise
- 4. Pay Off Your Technical Debt
- 5. The Principles of Code Age
Part II. Work with Large Codebases and Organizations
- 6. Spot Your System’s Tipping PointSpot Your System’s Tipping Point
- 7. Beyond Conway’s LawBeyond Conway’s Law
- 8. Toward Modular Monoliths through the Social View of CodeToward Modular Monoliths through the Social View of Code
- 9. Systems of Systems: Analyzing Multiple Repositories and MicroservicesSystems of Systems: Analyzing Multiple Repositories and Microservices
- 10. An Extra Team Member: Predictive and Proactive AnalysesAn Extra Team Member: Predictive and Proactive Analyses
- A1. The Hazards of Productivity and Performance MetricsThe Hazards of Productivity and Performance Metrics
- A2. Code Maat: An Open Source Analysis EngineCode Maat: An Open Source Analysis Engine
- A3. Data Mining with Git, cloc, and CodeScene
- A4. Hints and Solutions to the Exercises
- Title: Software Design X-Rays
- Release date: March 2018
- Publisher(s): Pragmatic Bookshelf
- ISBN: 9781680502725
You might also like
Clean Code: A Handbook of Agile Software Craftsmanship
Even bad code can function. But if code isn't clean, it can bring a development organization …
Expanded Edition (August 2018) Updated with Design Patterns episodes from the Clean Code series from Clean …
Your Code as a Crime Scene
Jack the Ripper and legacy codebases have more in common than you'd think. Inspired by forensic …
Working Effectively with Legacy Code
Get more out of your legacy systems: more performance, functionality, reliability, and manageability Is your code …