search menu icon-carat-right cmu-wordmark

Refactoring for Software Isolation

Presentation
This project extends a refactoring assistant that automates the majority of the work required for software isolation.
Publisher

Software Engineering Institute

Abstract

In a previous project, we created a refactoring assistant that automates the majority of the work required for software isolation, a key element of large-scale refactoring projects that modularizes existing code for use in new contexts. The refactoring assistant combines static code analysis, formalized refactorings, and a multi-objective genetic algorithm to search hundreds of thousands of combinations of primitive refactorings applied to different code elements to find solutions that solve the software isolation problem in balance with other criteria (e.g., code size, maintainability, or understandability). Results from applying the current prototype to multiple open source and DoD projects demonstrated an ability to scale to at least 1.2M source lines of code and generate solutions that, on average, solve 88% of the structural couplings that hinder software isolation.
 
In this project, we have extended the refactoring assistant to address a second programming language and are now able to refactor Java or C# code. We are further maturing the automated software isolation capability of this refactoring assistant and validating this research by applying it to open source projects, and assessing success against the following objectives:

  • Usability: Developers using the refactoring assistant will have to review 70% fewer generated refactorings to select and understand their preferred solution.
  • Solution completeness: The refactoring assistant generates solutions that resolve at least 90% of the structural couplings that hinder software isolation.
  • Solution quality: Experienced developers who use the refactoring assistant agree with and use at least 80% of the recommended refactorings in solutions without modification.