Machine Learning for Software Refactoring
Fowler defines refactoring as “the process of changing a software system in such a way that does not alter the external behavior of the code yet improves its internal structure”. Over the years, empirical studies have established a positive correlation between refactoring operations and code quality metrics, indicating that refactoring should be regarded as a first-class concern of software developers.
However, deciding when and what (as well as understanding why) to refactor have long posed a challenge to developers. After all, developers refactor code for many different reasons. The task of identifying relevant refactoring opportunities, which currently heavily relies on developers’ expertise and intuition, should be supported by sophisticated recommendation algorithms.
In this project, you will research on different methods to recommend code improvements to developers. For this, you might make use of:
- AI (search-based) techniques
- Machine Learning/Deep Learning/NLP techniques
Contact for the project
- Maurício Aniche (TU Delft)