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