Targeted Search-Based Refactoring
Code-Imp is a UCD-developed research tool that typically applies hundreds or even thousands of refactorings to a Java program without developer intervention. This short workshop paper describes Code-Imp at a high level, though the tool has evolved a lot since this paper was written. Code-Imp currently supports over twenty refactoring types, 50+ software metrics and has been integrated with JMetal to support a large range of search types.
Using Code-Imp to apply thousands of refactorings without developer intervention is interesting for research purposes, but is not likely to be useful in practice, as the developer will simply be lost in the refactored code. The goal of this project is to explore the possibilities of targeted refactoring, where the developer specifies a small number of classes that they feel are poorly designed, and Code-Imp focuses its refactorings on these classes. This use case would seem to fit better how a developer would refactor in practice.
The exact details of this project will emerge as it progresses, but the questions we seek to answer include:
* Is targeted refactoring effective? Can it produce better refactored code than application-wide refactoring?
* What search techniques work best? Can e.g. a Genetic Algorithm outperform a Hill Climb?
* Are developers happy with the resulting designs? (This would involve a short study with your ASE classmates)
Although this project will not involve much, if any, software development, the student will have to become comfortable with the inner workings of the Code-Imp tool. It’s a mavenised Java project developed on the RECODER platform.
The project would suit a student who wants to do real research and hopefully publish a paper based on their project work.