FOCUS: BUILDING LONG-LIVED ADAPTIVE SYSTEMS 0740-7459/19©2019IEEE MARCH/APRIL 2019 | IEEE SOFTWARE 97 SOFTWARE IS ENGINEERED, built, and deployed within a rich ecosystem of hardware, platforms, services, protocols, libraries, and schemas. Many assumptions about this ecosystem are informal and fail to hold over long timelines, rendering otherwise useful soft- ware prematurely obsolete when unforeseen shifts occur. For ex- ample, the emergence of quan- tum computers is likely to render a vast swath of legacy asymmetric cryptographic code based on prequantum algorithms obsolete. 1 Human refactoring of these legacy systems may require programmer expertise that no longer exists, be too expensive, and involve engi- neering processes too error-prone to be feasible for all but the most critical applications. Cost-ef fcient tools that can quickly reason about such conditions and adapt software without human intervention are therefore needed to keep software operational beyond its human- maintainable lifespan. The Semi-Autonomic Bytecode Repair Engine (SABRE) is a tool- chain for Java Virtual Machine (JVM) 2 languages that can autonom- ically repair software when faced with certain classes of evolutionary pressure, allowing the software to operate even when the assumptions under which it was originally de- veloped no longer hold. SABRE’s re- pair workfow is initially seeded with a small quantity of human-provided knowledge expressed using vocabu- lary from an ontology. 3 These knowl- edge artifacts capture the various implicit assumptions of the software engineering process (e.g., assertions about invariants related to deploy- ment and the operation of the soft- ware once deployed). SABRE peers into the structure of the compiled software and monitors its behavior under testing to identify constructs that violate these assumptions. SA- BRE examines these violations and reasons about possible repair strat- egies, ultimately enacting a selected strategy through direct bytecode and/ or source code modifcation. SABRE Operation A conceptual view of SABRE’s opera- tion during a complete application re- pair workfow is depicted in Figure 1. Digital Object Identifer 10.1109/MS.2018.2886829 Date of publication: 22 February 2019 A Semi- Autonomic Bytecode Repair Framework Jacob Staples, Charles Endicott, and Lee Krause, Securboration, Inc. Partha Pal, Peter Samouelian, Rick Schantz, and Austin Wellman, Raytheon BBN Technologies // The Semi-Autonomic Bytecode Repair Engine (SABRE) is a toolchain for Java Virtual Machine languages that identifes and repairs certain classes of problematic conditions that emerge over time. We describe the utility of SABRE in the context of a case study. //