Wednesday, 29 October
These papers talk about a new approach to constructing software systems in which the designer identifies key properties that
the execution must satisfy to be acceptable to its users. The resulting system consists of layers of components enforcing
the acceptability properties.
We propose a new approach to the construction of software systems.
Instead of attempting to build a system that is as free
of errors as possible, we instead propose that the designer
identify key properties that the execution must satisfy to
be acceptable to its users. The developer then augments the
system with a layered set of components, each of
which enforces one of the acceptability properties.
The potential advantages of this approach include more flexible,
resilient systems that recover from errors and
behave acceptably across a wide
range of operating environments, an appropriately
prioritized investment of engineering resources, and
reduced development costs because of the ability to
productively incorporate unreliable components into the
final software system and to use
less skilled implementors in the development process.
Automatic Detection and Repair of Errors in Data Structures
We present a system that accepts a specification of key data
structure constraints, then dynamically detects and repairs
violations of these constraints, enabling the program to continue
to execute productively even in the face of otherwise
crippling errors. Our experience using our system indicates
that the specifications are relatively easy to develop once
one understands the data structures. Furthermore, for our
set of benchmark applications, our system can effectively repair
errors to deliver consistent data structures that allow
the program to continue to operate successfully within its
designed operating envelope.