Aug 01, 2020
Check our Tool Demo Video:
Visit the publication website:
Due to the conflicting nature of quality measures, there are always multiple refactoring options to fix quality issues. Thus, interaction with developers is critical to inject their preferences. While several interactive techniques have been proposed, developers still need to examine large numbers of possible refactorings, which makes the interaction time-consuming. Furthermore, existing interactive tools are limited to the "objective space" to show developers the impacts of refactorings on quality attributes. However, the "decision space" is also important since developers may want to focus on specific code locations.
In this paper, we propose an interactive approach that enables developers to pinpoint their preference simultaneously in the objective (quality metrics) and decision (code location) spaces. Developers may be interested to look at refactoring strategies that can improve a specific quality attribute, such as extendibility (objective space), but they are related to different code locations (decision space).
A plethora of solutions is generated at first using multi-objective search that tries to find the possible trade-offs between quality objectives. Then, an unsupervised learning algorithm clusters the trade-off solutions based on their quality metrics and another clustering algorithm is applied on each cluster of the objective space to identify solutions related to different code locations.
The objective and decision spaces can now be explored more efficiently by the developer who can give feedback on a smaller number of solutions. This feedback is then used to generate constraints for the optimization process, to focus on the developer’s regions of interest in both the decision and objective spaces. The manual validation of selected refactoring solutions by developers confirms that our approach out-performs state of the art refactoring techniques.