Martin Rinard

Acceptability-Oriented Computing

Software systems are often perceived to be fragile and brittle, vulnerable to security exploits and errors that cause the system to crash. We have developed a set of techniques that make software systems more robust, resilient, reliable, and secure by enabling them to survive a range of otherwise fatal errors. The overall goal is to make the software survive any error, continue to execute, and provide acceptable service to its users. One particularly important application of this technology is to eliminate security vulnerabilities such as defects that enable remote software injection attacks.

Together, these techniques are designed to ensure that programs preserve basic acceptability properties such as continued execution in the face of otherwise fatal errors. We call the resulting approach acceptability-oriented computing. One of the basic principles behind acceptability-oriented computing is that complex computer systems have a natural resilience to errors, but this resilience has been explicitly removed by attempts to make programs fail at the first sign of an error. One of goals of our research project is to develop new mechanisms that help deployed programs execute successfully through errors. The ideal end result will be more robust and resilient computer systems.

My Onward! 2003 paper on Acceptability-Oriented Computing presents the conceptual foundations behind this approach to robust software systems and provides several examples of how developers can implement components that enforce acceptability properties. Our Onward! 2005 paper on Exploring the Acceptability Envelope further explores the implications of acceptability-oriented computing.

Specific acceptability-oriented computing techniques include: