Management of Technical Debt for Reformation of Legacy Software Systems - Raivonen, Timo (My University, 2019)
Technical Debt (TD) metaphor is a way to contextualize unrefined code in a software and how that ”debt” can have interest attached to it. This interest reflects the possibility of increase of more problems if the debt is not paid before the interest is realized. The metaphor of ”debt” was coined in 1992 by Ward Cunningham but it was started to be used in its current form after 2007 when Martin Fowler introduced a way to categorize it. While the term has started to gain more use, it is still not defined as something specific, but rather the term can be used to refer to things that do not represent bad or unrefined code. This thesis describes the TD and aims to define it in a way that would be usable as a tool for management of reformation for legacy software systems. And more specifically, if it is fitting to be used for a project that was reformed from a legacy software system and then found lacking in usability, reliability and maintainability. The project and its functionality is described alongside with the problems of it. As the TD is only used as a tool for management, the reformation of the software is a separate issue. For this issue, multiple good practices are described to handle it and to highlight possible forms of unrefined code. The TD is used to present a way how the unrefined code could be identified and managed in the target project. The found TD is then used as basis of redesign and reformation of the target project in a way to that the desired features are achieved. To provide more usability for the TD, a more generalized guide of handling legacy software systems through the use of it is also presented. As a conclusion of this thesis the TD can be seen as a usable tool for management of reformation for legacy software systems. While the TD can be used as a management tool, it does not offer a solution for the reformation, but it can be used as a basis to then guide the already known best practices of legacy software system reformation.
Keywords: legacy software systems, technical debt, software reformation, software architecture