Managing Technical Debt in Software-Reliant Systems
November 2010 • Conference Paper
Nanette Brown, Robert Nord, Ipek Ozkaya, Rick Kazman, Philippe Kruchten
This paper describes how software engineers can manage technical debt based on models of their economic impact.
Abstract
Delivering increasingly complex software-reliant systems demands better ways to manage the long-term effects of short-term expedients. The technical debt metaphor is gaining significant traction in the agile development community as a way to understand and communicate such issues. The idea is that developers sometimes accept compromises in a system in one dimension (e.g., modularity) to meet an urgent demand in some other dimension (e.g., a deadline), and that such compromises incur a "debt": on which "interest" has to be paid and which the "principal" should be repaid at some point for the long-term health of the project. We argue that the software engineering research community has an opportunity to study and improve this concept. We can offer software engineers a foundation for managing such trade-offs based on models of their economic impacts. Therefore, we propose managing technical debt as a part of the future research agenda for the software engineering field.
This paper was first published through the FSE/SDP Workshop on the Future of Software Engineering Research (FoSER).