Automated workarounds from Java Program specifications based on SAT solving

Saved in:
Bibliographic Details
Title: Automated workarounds from Java Program specifications based on SAT solving
Authors: Uva, Marcelo, Ponzio, Pablo, Regis, Germán, Aguirre, Nazareno, Frías, Marcelo
Publication Year: 2017
Subject Terms: ANALISIS DE FALLAS, ESPECIFICACIONES, DEPURACION DE PROGRAMAS, LENGUAJES DE PROGRAMACION, SOFTWARE, JAVA
Description: "The failures that bugs in software lead to can sometimes be bypassed by the so called workarounds: when a (faulty) routine fails, alternative routines that the system offers can be used in place of the failing one, to circumvent the failure. Previous works have exploited this workarounds notion to automatically recover from runtime failures in some application domains. However, existing approaches that compute workarounds automatically either require the user to manually build an abstract model of the software under consideration, or to provide equivalent sequences of operations from which workarounds are computed, diminishing the automation of workaround-based system recovery. In this paper, we present two techniques that automatically compute workarounds from Java code equipped with formal specifications, avoiding abstract software models and user provided equivalences. These techniques employ SAT solving to compute workarounds on concrete program state characterizations. The first employs SAT solving to compute traditional workarounds, while the second directly exploits SAT solving to circumvent a failing method, building a state that mimics the (correct) behaviour of this failing routine. Our experiments, based on case studies involving implementations of collections and a library for date arithmetic, enable us to show that the techniques can effectively compute workarounds from complex contracts in an important number of cases, in time that makes them feasible to be used for run time repairs."
Document Type: other/unknown material
File Description: application/pdf
Language: English
Relation: info:eu- repo/semantics/reference/doi.org/10.1007/s10009-018-0503-8; http://ri.itba.edu.ar/handle/20.500.14769/3066
Availability: http://ri.itba.edu.ar/handle/20.500.14769/3066
https://hdl.handle.net/20.500.14769/3066
Accession Number: edsbas.C4503AD1
Database: BASE
Description
Abstract:"The failures that bugs in software lead to can sometimes be bypassed by the so called workarounds: when a (faulty) routine fails, alternative routines that the system offers can be used in place of the failing one, to circumvent the failure. Previous works have exploited this workarounds notion to automatically recover from runtime failures in some application domains. However, existing approaches that compute workarounds automatically either require the user to manually build an abstract model of the software under consideration, or to provide equivalent sequences of operations from which workarounds are computed, diminishing the automation of workaround-based system recovery. In this paper, we present two techniques that automatically compute workarounds from Java code equipped with formal specifications, avoiding abstract software models and user provided equivalences. These techniques employ SAT solving to compute workarounds on concrete program state characterizations. The first employs SAT solving to compute traditional workarounds, while the second directly exploits SAT solving to circumvent a failing method, building a state that mimics the (correct) behaviour of this failing routine. Our experiments, based on case studies involving implementations of collections and a library for date arithmetic, enable us to show that the techniques can effectively compute workarounds from complex contracts in an important number of cases, in time that makes them feasible to be used for run time repairs."