2021 Research Review / DAY 1
Untangling the Knot: Automating Software Isolation
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 challenge is common in long lived DoD systems and not uncommon even in newer systems, and it makes isolating a collection of functionality for use in a new context, or clean replacement by an improved version, difficult. Software refactoring can facilitate such changes but can require tens of thousands of staff hours.
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 software refactoring by two-thirds. In one DoD example, a contractor estimated 14 thousand hours of software development work alone (excluding integration and testing) to isolate a mission capability from the underlying hardware platform. If successful, our work would reduce the development time required to less than 5 thousand hours.
Our goal is to reduce the time required for this kind of software 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. The search algorithm relies on a representation derived from static code analysis and uses formalizations of refactorings as operations to apply during search.

This work has broad implications for moving existing software to modern architectures and infrastructures such as service-based, microservice, cloud environments, and containers. It also addresses a pervasive research challenge in improving automated support for architecture refactoring tasks.
In Context
This FY2019-21 project
- builds on prior DoD line-funded research in software architecture analysis, static code analysis, and identifying technical debt
- aligns with the CMU SEI technical objective to make software delivery timely so that the cadence of acquisition, delivery, and fielding is responsive to and anticipatory of the operational tempo of DoD warfighters
- addresses a widespread, recurring need in software organizations. As requirements and technology are never frozen in time, the need to adapt working software to new contexts is likely to remain a common need across many software systems
Principal Investigator
James Ivers
Principal Engineer
SEI Collaborators
Robert Nord
Principal Member of The Technical Staff
Ipek Ozkaya
Tech. Director, Engineering Intelligent Software Systems
Chris Seifried
Associate Engineer
SEI Contributors
Mario Benítez
Vaughn Coates
Craig Mazzotta
Scott Pavetti
Scott Sinclair
Jake Tannenbaum
External Collaborators
Thiago Ferreira
Assistant Professor
University of Michigan, Dearborn
Clem Izurieta
Associate Professor
Montana State University
Marouane Kessentini
Associate Professor
University of Michigan, Dearborn
Chris Timperley
Systems Scientist
Carnegie Mellon University
Students
Chaima Abid (University of Michigan)
Gavin Austin (Montana State University)
Jared Frank (University of Pittsburgh)
Carly Jones (Carnegie Mellon University)
Katie Li (Carnegie Mellon University)
Red Rajput (Carnegie Mellon University)
Amy Tang (Carnegie Mellon University)
Jeff Yackley (University of Michigan)