SBIR/STTR Award attributes
Warfighters need resilient systems, which both fight through and rapidly recover from failures. Self-healing systems keep primary functions operational if the original system is damaged. $SWaP constraints preclude full redundancy, but resources used for non-critical functions can be re-allocated to restore critical functions after a casualty. CTI and BU will develop means to analyze conventional monolithic applications, identify and extract their mission essential functions, transform them into component based mobile code, and dynamically disperse them across diverse surviving resources elsewhere on the vehicle/vessel/site in combat casualties, crises and disasters. The Phase I base effort will focus on Proof-of-Concept demonstration of the core of our technical approach: de-composition of applications into, and re-composition of critical functions from, distributed components. Option work will extend semantic recovery from source to recovery from binaries and develop means of assessing reachable surviving resources. All code and essential data will be in a distributed encrypted file store. Each entity involved in providing critical functions will be accessible only via its cryptographic persistent identifier so that it remains reachable by authorized parties despite network reconfiguration. Automated “de-bloating” will remove unused code. We propose to facilitate formal verification, to refactor the application and enable confident re-use of components. We envision a highly decomposable and backward compatible software stack with total application-level plasticity. We propose analysis techniques to systematically functionally de-compose COTS software programs into smaller self-sustaining components, easily transferred from one Execution Environment (EE, comprising OS on hardware) to another and then re-composed to recreate a critical subset of the original program. Our de-/re-composition approach will allow seamless movement of code and data from damaged to still usable EEs. To endow existing and future naval systems with self-healing properties, our proposed approach unlocks critical methodological abilities: instrumentability, mutability, replicability and scalability. Instrumenting software programs facilitates gathering critical information necessary for decision making. Mutability enables the forceful execution necessary to introduce control-flows suitable for de- and subsequent re-composition, typically not a part of COTS software design. Replicability supports maintaining equivalent functionality across multiple EEs to minimize single points of failure. Scalability ensures procedures work with not only small simple programs but also large complex systems. We aim to achieve a high degree of correctness and fidelity of execution: e.g., low false positive errors in recomposed code.

