  Technical debt is a metaphor used to convey the idea that doing things in a
"quick and dirty" way when designing and constructing a software leads to a
situation where one incurs more and more deferred future expenses. Similarly to
financial debt, technical debt requires payment of interest in the form of the
additional development effort that could have been avoided if the quick and
dirty design choices have not been made. Technical debt applies to all the
aspects of software development, spanning from initial requirements analysis to
deployment, and software evolution. Technical debt is becoming very popular
from scientific and industrial perspectives. In particular, there is an
increase in the number of related papers over the years. There is also an
increase in the number of related tools and of their adoption in the industry,
especially since technical debt is very pricey and therefore needs to be
managed. However, techniques to estimate technical debt are inadequate,
insufficient since they mostly focus on requirements, code, and test,
disregarding key artifacts such as the software architecture and the
technologies used by the software at hand. Besides, despite its high relevance,
technical debt prediction is one of the least explored aspects of technical
debt. To address these shortcomings, it is mandatory that I undertake research
to: 1) improve existing techniques to properly estimate technical debt; 2) to
determine the extent to which the use of prediction techniques to foresee and
therefore avoid technical debt could help companies save money and avoid a
potential bankruptcy in the subsequent years. The proposed research can have an
important economic impact by helping companies save several millions. It can
have a major scientific impact by leading to key findings that will be
disseminated through patents, well-established scientific journals and
conferences.
