Using Machine Learning to Measure and Manage Technical Debt
Blog post from vFunction
Technical debt, a common challenge in software development characterized by accumulated compromises that hinder coding efforts, poses significant risks to application modernization projects, as highlighted in a survey of senior IT professionals who cited "risk" as a primary concern. The article discusses a method to measure technical debt using dependency graphs of classes, drawing from a seminal 2012 paper that introduced a metric based on architectural dependencies. This approach allows for the identification of architectural issues by analyzing class and community-level dependencies, providing a broad interpretation of architectural elements without formally defining them. The method was tested on a dataset of over 50 applications across various domains, demonstrating its effectiveness in pinpointing local issues and offering a high-level score to compare technical debt between applications. The study introduces three indexes—Complexity, Risk, and Overall Debt—to assess the effort, potential risk, and extra work required for adding new features, and employs machine learning to normalize these scores for broader application analysis. By converting overall debt levels into currency units, organizations can better understand the investment needed to manage technical debt, ultimately facilitating improved decision-making and prioritization of modernization efforts.