Untangling the Knot: Automating Software Isolation
November 2021 • Presentation
Our prototype tool combines advances in search-based software engineering with static code analysis and refactoring knowledge for cost-effective software improvement.
Software Engineering Institute
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 software becomes too complicated to allow rapid and cost-effective improvements. This project has created a refactoring assistant that generates recommended refactorings that isolate functionality from its tangle of system dependencies. Our goal is to reduce the time required for this kind of architecture refactoring by two-thirds. Our prototype 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. In practice, our prototype recommends solutions that solve more than 85% of the problem on typical projects, suggesting that our effort-reduction goal is obtainable. This work has broad implications for moving existing software to modern architectures and infrastructures such as service-based, microservice, cloud environments, and containers.