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.
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