Untangling the Knot: Enabling Rapid Software Evolution
November 2020 • Presentation
This project uses AI techniques to recommend refactorings that can improve the structure of software in significantly less time than it takes to manually refactor.
Software Engineering Institute
Software-reliant systems need to evolve over time to meet new requirements and take advantage of new technology. But often the structure of software becomes too complicated to allow rapid and cost-effective improvements. Software refactoring can facilitate such changes, but it can require tens of thousands of staff hours. This project aims to use artificial intelligence (AI) techniques to create software engineering automation to recommend a set of refactorings that isolates functionality from its tangle of system dependencies. CMU SEI researchers aim to reduce the time required for this kind of architecture refactoring by two-thirds. Their solution combines advances in search-based software engineering with static code analysis and refactoring knowledge. It is unique in its focus on mission-relevant goals as opposed to improving general software metrics. This goal is incorporated in genetic algorithms through fitness functions that guide the search to solutions for the project-specific goal. This work has broad implications for moving existing software to modern architectures and infrastructures, such as service-based, microservice, cloud environments, and containers.