search menu icon-carat-right cmu-wordmark

Managing Technical Debt with Data-Driven Analysis

Created September 2017 • Updated February 2022

Almost every software project carries some technical debt, but its causes and consequences can be elusive. We develop tools and techniques that identify technical debt and provide a complete view of the debt that you need to manage.

Technical Debt: A Compounding Problem

Technical debt is a term that conceptualizes the tradeoff between the short-term benefits of rapid delivery and the long-term value of developing a software system that is easy to evolve, modify, repair, and sustain. Like financial debt, technical debt can be a burden or an investment. Technical debt can be a burden when it is taken on unintentionally without a solid plan to manage it. Technical debt can also be part of an intentional investment strategy that speeds up development … as long as you have a plan to pay it back before the interest swamps your principal.

The U.S. Department of Defense (DoD) must constantly manage the dual challenges of budget constraints and the need to accelerate capability delivery. These challenges have encouraged the DoD to adopt incremental approaches to software development and to shift from the acquisition of new systems to the more cost-effective evolution and sustainment of existing systems. In this context, accumulated design and implementation decisions made for expediency, in the absence of structural quality requirements or without due consideration for sustainment and evolution, often result in systems that become prohibitively expensive to maintain or extend. In other words, these systems have a lot of technical debt.

Current tools for quantifying debt focus primarily on code quality and implementation decisions, such as complexity and cyclicity metrics. Our research has shown that key contributors to technical debt are design and architectural decisions that are not managed in terms of their consequences for system quality and rework. Existing tools cannot detect technical debt that results from design and architectural decisions. Moreover, the DoD and industry have started to invest heavily in model-driven and compositional software development approaches that existing technical debt identification techniques do not address. These types of debt are harder to recognize and occur earlier in system development, so the consequences can accrue for longer periods of time before they become visible.

Our Solution: Measure It and Manage It

The SEI is making software more sustainable through a comprehensive approach to managing technical debt. We are developing tools and techniques for uncovering technical debt that integrate data from multiple commonly available sources to reveal problematic decisions and quantify their consequences in a repeatable and reliable way. Together, the tools and techniques provide a complete view of the technical debt that you need to manage.

Our tooling approach combines existing code-oriented analysis tools with techniques that uncover and analyze architectural abstractions to reveal the structural causes of technical debt. It provides a more accurate scope for technical debt that exists in the system and assists both ongoing development and difficult sustainment decisions such as how to balance system improvements, early delivery, and upgrades.

Our Approach: Automating Technical Debt Analysis Through Software Analytics

We combine techniques from machine learning, refactoring and code analysis, and data mining with multiple data sources to describe technical debt items that identify problematic design issues.

  1. Create a technical debt classifier: Apply topic-modeling algorithms to issue tracker data to extract topics related to rework; extract categories of design related to technical debt.
  2. Correlate analysis rules with technical debt topics: Identify recurring design concepts and their mappings to code analysis rules; run code analyzers to detect quality violations to identify candidate technical debt items.
  3. Consolidate technical debt items: Run criteria for consolidations, and extract additional affected files with related violations.
  4. Rank technical debt items: Identify defects, change, and bug churn and locations in the code base that require changes; run causal analysis, and create an initial ranking.

This project will deliver a suite of tools and techniques for technical debt analytics, including

  • a prototype tool that demonstrates clustering and ranking of technical debt items
  • an extraction technique and a description template for technical debt items
  • data set exemplars for organizations and researchers

Learn More

5 Recommendations to Help Your Organization Manage Technical Debt

March 25, 2024 Blog Post
Ipek Ozkaya, Brigid O'Hearn

This SEI Blog post summarizes recommendations arising from an SEI study that apply to the Department of Defense and other development organizations seeking to analyze, manage, and reduce technical...

read

Report to the Congressional Defense Committees on National Defense Authorization Act (NDAA) for Fiscal Year 2022 Section 835 Independent Study on Technical Debt in Software-Intensive Systems

December 07, 2023 Technical Report
Ipek Ozkaya, Forrest Shull, Julie B. Cohen, Brigid O'Hearn

This independent study of technical debt in software-intensive systems was sent to Congress in December 2023 to satisfy the requirements of NDAA Section...

read

An Exploration of Enterprise Technical Debt

April 18, 2023 Podcast
Stephany Bellomo

Stephany Bellomo, a principal engineer in the SEI’s Software Solutions Division, talks with principal researcher Suzanne Miller about identifying and remediating enterprise technical...

learn more

Experiences Documenting and Remediating Enterprise Technical Debt

December 19, 2022 Blog Post
Stephany Bellomo

This SEI Blog post provides examples of enterprise technical debt and the risk it represents taken from real-world...

read

10 Years of Research in Technical Debt and an Agenda for the Future

August 22, 2022 Blog Post
Robert Nord, Ipek Ozkaya

This post reviews the evolution of the field of technical debt and identifies open research questions that will drive future...

read

Managing Technical Debt: Reducing Friction in Software Development

April 19, 2019 Book
Philippe Kruchten, Robert Nord, Ipek Ozkaya

This book is for every software professional who wants to accelerate innovation in existing systems or build new systems that will be easier to maintain and...

read