174 research outputs found

    Automated Workarounds from Java Program Specifications based on SAT Solving

    Get PDF
    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. Existing approaches to workaround-based system recovery consider workarounds that are produced from equivalent method sequences, automatically computed from user-provided abstract models, or directly produced from user-provided equivalent sequences of operations. In this paper, we present two techniques for computing workarounds from Java code equipped with formal specifications, that improve previous approaches in two respects. First, the particular state where the failure originated is actively involved in computing workarounds, thus leading to repairs that are more state specific. Second, our techniques automatically compute workarounds on concrete program state characterizations, avoiding abstract software models and user-provided equivalences. The first technique uses SAT solving to compute a sequence of methods that is equivalent to a failing method on a specific failing state, but which can also be generalized to schemas for workaround reuse. The second technique directly exploits SAT to circumvent a failing method, building a state that mimics the (correct) behaviour of a failing routine, from a specific program state too. We perform an experimental evaluation based on case studies involving implementations of collections and a library for date arithmetic, showing 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. Our results also show that our state-specific workarounds enable us to produce repairs in many cases where previous workaround-based approaches are inapplicable.Fil: Uva, Marcelo Ariel. Universidad Nacional de Río Cuarto; ArgentinaFil: Ponzio, Pablo Daniel. Consejo Nacional de Investigaciones Científicas y Técnicas. Centro Científico Tecnológico Conicet - Córdoba; Argentina. Universidad Nacional de Río Cuarto; ArgentinaFil: Regis, Germán. Universidad Nacional de Río Cuarto; ArgentinaFil: Aguirre, Nazareno Matias. Consejo Nacional de Investigaciones Científicas y Técnicas. Centro Científico Tecnológico Conicet - Córdoba; Argentina. Universidad Nacional de Río Cuarto; ArgentinaFil: Frias, Marcelo Fabian. Consejo Nacional de Investigaciones Científicas y Técnicas. Centro Científico Tecnológico Conicet - Córdoba; Argentina. Instituto Tecnológico de Buenos Aires; Argentin

    Software quality tools and techniques presented in FASE’17

    Get PDF
    Software quality assurance aims to ensure that the software product meets the quality standards expected by the customer. This special issue of Software Tools for Technology Transfer is concerned with the foundations on which software quality assurance is built. It introduces the papers that focus on this topic and that have been selected from the 20th International Conference on Fundamental Approaches to Software Engineering (FASE’17)

    Automated Fixing of Programs with Contracts

    Full text link
    This paper describes AutoFix, an automatic debugging technique that can fix faults in general-purpose software. To provide high-quality fix suggestions and to enable automation of the whole debugging process, AutoFix relies on the presence of simple specification elements in the form of contracts (such as pre- and postconditions). Using contracts enhances the precision of dynamic analysis techniques for fault detection and localization, and for validating fixes. The only required user input to the AutoFix supporting tool is then a faulty program annotated with contracts; the tool produces a collection of validated fixes for the fault ranked according to an estimate of their suitability. In an extensive experimental evaluation, we applied AutoFix to over 200 faults in four code bases of different maturity and quality (of implementation and of contracts). AutoFix successfully fixed 42% of the faults, producing, in the majority of cases, corrections of quality comparable to those competent programmers would write; the used computational resources were modest, with an average time per fix below 20 minutes on commodity hardware. These figures compare favorably to the state of the art in automated program fixing, and demonstrate that the AutoFix approach is successfully applicable to reduce the debugging burden in real-world scenarios.Comment: Minor changes after proofreadin

    Automatic Software Repair: a Bibliography

    Get PDF
    This article presents a survey on automatic software repair. Automatic software repair consists of automatically finding a solution to software bugs without human intervention. This article considers all kinds of repairs. First, it discusses behavioral repair where test suites, contracts, models, and crashing inputs are taken as oracle. Second, it discusses state repair, also known as runtime repair or runtime recovery, with techniques such as checkpoint and restart, reconfiguration, and invariant restoration. The uniqueness of this article is that it spans the research communities that contribute to this body of knowledge: software engineering, dependability, operating systems, programming languages, and security. It provides a novel and structured overview of the diversity of bug oracles and repair operators used in the literature

    Reparación de programas aplicando templates: generando workarounds permanentes a través de SAT

    Get PDF
    La aplicación de procesos modernos y sistemáticos en el desarrollo de sistemas informáticos con estrictos estándares de calidad no ha podido evitar la presencia de defectos en el software. A pesar de extensas test-suites, un alto porcentaje de sistemas son implantados con fallas. El desarrollo de técnicas de reparación de programas ha cobrado gran importancia en esta última década. El concepto de workaround ha sido utilizado por diversos enfoques para la reparación de programas. Un workaround aprovecha la redundancia implícita en un sistema con el propósito de evitar fallas detectadas en runtime. A partir de una técnica de cómputo automático de state-bound workarounds (workarounds dependientes de estado) que utiliza SAT-Solving, se propone un procedimiento de búsqueda de workaround templates independientes de estado, es decir, state-free workarounds que permitan mejorar los tiempos de reparación de programas.XVI Workshop Ingeniería de Software.Red de Universidades con Carreras en Informátic

    Reparación de programas aplicando templates: generando workarounds permanentes a través de SAT

    Get PDF
    La aplicación de procesos modernos y sistemáticos en el desarrollo de sistemas informáticos con estrictos estándares de calidad no ha podido evitar la presencia de defectos en el software. A pesar de extensas test-suites, un alto porcentaje de sistemas son implantados con fallas. El desarrollo de técnicas de reparación de programas ha cobrado gran importancia en esta última década. El concepto de workaround ha sido utilizado por diversos enfoques para la reparación de programas. Un workaround aprovecha la redundancia implícita en un sistema con el propósito de evitar fallas detectadas en runtime. A partir de una técnica de cómputo automático de state-bound workarounds (workarounds dependientes de estado) que utiliza SAT-Solving, se propone un procedimiento de búsqueda de workaround templates independientes de estado, es decir, state-free workarounds que permitan mejorar los tiempos de reparación de programas.XVI Workshop Ingeniería de Software.Red de Universidades con Carreras en Informátic
    • …
    corecore