In a nutshell

The task is to investigate, explore, and evaluate software refactorings in larger code bases.

Background & motivation

Refactoring is an important activity of software developers. It improves code quality and understandability, but can also subtly change the behaviour of your existing program. We have so far tried in two very successful master theses to make a small number of refactorings for Java automatic (see the website of the master thesis, published also in NIK’14), and safer (published in ISoLA’16 & ISoLA’20). What is missing now is an experiment at scale!

Problem setting

This is a flexible project where the exact task can be fit to your profile - lots of possibilities! Research questions include:

  • can we automate more refactorings (beyond Extract-and-Move-Method)?
  • can we do so at scale (incremental or concurrent processing of large code bases)?
  • can we integrate automated refactorings into code review systems like Gerrit?

Requirements

A prospective student should…

  • … like programming and programming languages;
  • … be willing to learn about grammars, programming language semantics, and types/static analysis;
  • … have an interest in software quality metrics (coupling, cyclomatic complexity,…);
  • … independently set up and run experiments (e.g. check out open source-projects from GitHub, apply automated refactoring, collect results e.g. in Jenkins/Sonar/…).

Context

UiO is partner in the DIKU-CAPES “Modern Refactoring”-project led by Volker Stolz at HVL (2019-2021). Cooperation with partners from Brazil is possible (and maybe travel again, too). Publications so far:

Contact: Volker Stolz