Student: SiYoung Kim
The concept of technical debt has been explored from many perspectives but its estimation is still under heavy empirical and experimental inquiry.
Technical debt refers to delayed tasks and immature artifacts that constitute a “debt” because they deserve extra costs in the future in the form of the amplified cost of change during evolution and maintenance.
A limited amount of technical debt would accelerate the process of software development; however, too much of it would delay the progress of the project. Typically, some software companies tend to generate technical debt strategically to speed up the development at an early stage of the development process to respect the time to market. However with the evolution of the size and complexity of the software, it may become increasingly more difficult to maintain and evolve the product due to linked dependencies between modules or components without resolving technical debt on a regular base.
As a result, software stakeholders need to pay off technical debt regularly to prevent it from accumulating too quickly.
To effectively manage technical debt regularly, software developers must be conscious of the existence of technical debt items. The first step is to make technical debt explicit; that is the identification of technical debt.
Although there exist many kinds of static source code analysis tools to identify code-level technical debt, identifying non-code-level technical debt is very challenging and needs deep exploration.
This project aims to define an approach to identifying non-code-level technical debt through issue tracking data sets using natural language processing and machine learning techniques.
The defined approach will be empirically validated on open-source software systems.