Identifying Technical Debt Impact on Maintenance Effort- An Industrial Case Study
Technical Debt refers to sub-optimal solutions in software development that affect the life cycle properties of a system. Source Code Technical Debt is considered to be a problem for many software projects, as neglecting Technical Debt on actively developed software will increase the required effort to maintain the software as well as to extend it with new features. However, refactoring Technical Debt also requires effort which is why it must be investigated if the Technical Debt is worth resolving. To be able to make such decisions, the existing Technical Debt must be correctly identified and presented in an understandable way. This thesis addresses the problem by conducting a case study at Ericsson, where Technical Debt in a large industrial C/C++ project has been investigated. The investigation was done by designing a measurement system based on ISO standard 15939:2007 and reviewing Technical Debt measurement tools suitable for its construction. The investigation also included correlating the resulting Technical Debt measurements with maintenance effort by applying triangulation of several methods. This allowed the Technical Debt types to be prioritized based on their correlation strength. The chosen Technical Debt measures are presented as a unified indicator that indicates file refactoring priority in order to support decision-making regarding Technical Debt Management, so that additional maintenance effort can be avoided in the future.