search menu icon-carat-right cmu-wordmark

Untangling the Knot: Recommending Refactorings

May 2020 • Presentation
James Ivers

The Untangling the Knot project uses AI techniques to recommend a set of refactorings that isolates functionality from dependencies with the rest of the system.

Publisher:

Software Engineering Institute

Abstract

This presentation was given at the ICEAA New England Chapter Virtual Luncheon in May 2020.

Software-reliant systems need to evolve over time to meet new requirements and take advantage of new technology. However, all too often the structure of legacy software becomes too complicated to allow such improvements to be made quickly and cost effectively. A common manifestation of this problem is difficulty in isolating a collection of functionality so that it can be used in a new context or cleanly replaced by an improved version. Software can be refactored to facilitate such changes, but this is typically a labor-intensive effort that can take tens of thousands of staff hours.

The goal of the Untangling the Knot project is to use artificial intelligence (AI) techniques to create software engineering automation—specifically, to automatically recommend a set of refactorings that isolates functionality from its tangle of dependencies with the rest of the system. In doing so, we aim to significantly reduce the time required for this kind of architecture refactoring. Our solution combines advances in search-based software engineering with static code analysis and refactoring knowledge.