: Philippe Kruchten , Robert L. Nord, Ipek Ozkaya, and Joost VisserVenue
: 34rd International Conference on Software Engineering (ICSE 2012)Date
: September 2012Type of Experiement
This paper weighs the value of investing in internal quality that is crucial to a software system’s sustainability versus its cost due to its invisibility to non-developers. Technical debt is defined by this paper as "internal quality aspects that are crucial to system sustainability, but are largely invisible to management and customers," coined by Ward Cunningham in 1992. This is further elaborated on as a kind of compromise; technical debt means making sacrifices for meeting a demand or deadline. This can ruin the long-term health of a project for short-term goals and has become more broadly applied across the whole software process.
There were three workshops held over the course of the past two years that aimed to determine a more in-depth understanding of what technical debt is, its definition, characteristics, and different forms. With participation, ideas, and communication regarding technical debt from the whole community, there was a focus on gaining input from two groups in particular: the software engineers who manage it and researchers who are looking to gain empirical evidence. Because the meaning of technical debt has transformed to encompass essentially anything that stands in the way of a software system, it is hard for researchers and software engineers alike to determine exactly what impediment falls under the term technical debt. The authors propose to restrict the term technical debt to only encompass elements of the software system that are invisible to the consumer and visible to only the software developers. This excludes potential new functionality and defects in the system. Although they believe these visible elements should not be considered “debt,”, the authors still believe that they should be treated in terms of sequences of changes, associated with cost and value over time.