51 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

    Towards scaling up DynAlloy analysis using predicate abstraction

    Get PDF
    DynAlloy is an extension to the Alloy specifi cation language suitable for modeling properties of executions of software systems. DynAlloy provides fully automated support for verifying properties of programs, in the style of the Alloy Analyzer, i.e., by exhaustively searching for counterexamples of properties in bounded scenarios (bounded domains and iterations of programs). But, as for other automated analysis techniques, the so called state explotion problem makes the analysis feasible only for small bounds. In this paper, we take advantage of an abstraction technique known as predicate abstraction, for scaling up the analysis of DynAlloy specifi cations. The implementation of predicate abstraction we present enables us to substantially increase the domain and iteration bounds in some case studies, and its use is fully automated. Our implementation is relatively e cient, exploiting the reuse of already calculated abstractions when these are available, and an "on the fly" check of traces when looking for counterexamples. We introduce the implementation of the technique, and some preliminary experimental results with case studies, to illustrate the benefi ts of the technique.VI Workshop Ingeniería de Software (WIS)Red de Universidades con Carreras en Informática (RedUNCI

    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

    Implementación Básica de Typestates en Rust

    Get PDF
    Generalmente la API de un módulo describe las operaciones disponibles, aunque el orden lícito de aplicación de las mismas queda implícito o documentado externamente debido a que los lenguajes de programación generalmente no proveen mecanismos de especificación del protocolo de uso. Typestates permite especificar estados de objetos de un determinado tipo. Cada estado habilita ciertas operaciones y prohíbe otras, permitiendo especificar el protocolo de uso de una API determinada. En este trabajo se presenta un patrón de implementación de typestates en el lenguaje de programación Rust y se analiza su sistema de tipos y mecanismos que permiten la verificación del typestate en tiempo de compilación, mostrando que cumple con las propiedades requeridas por las propuestas de verificación modular descriptas en la bibliografía especializada.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

    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

    Implementación Básica de Typestates en Rust

    Get PDF
    Generalmente la API de un módulo describe las operaciones disponibles, aunque el orden lícito de aplicación de las mismas queda implícito o documentado externamente debido a que los lenguajes de programación generalmente no proveen mecanismos de especificación del protocolo de uso. Typestates permite especificar estados de objetos de un determinado tipo. Cada estado habilita ciertas operaciones y prohíbe otras, permitiendo especificar el protocolo de uso de una API determinada. En este trabajo se presenta un patrón de implementación de typestates en el lenguaje de programación Rust y se analiza su sistema de tipos y mecanismos que permiten la verificación del typestate en tiempo de compilación, mostrando que cumple con las propiedades requeridas por las propuestas de verificación modular descriptas en la bibliografía especializada.XVI Workshop Ingeniería de Software.Red de Universidades con Carreras en Informátic

    Implementación Básica de Typestates en Rust

    Get PDF
    Generalmente la API de un módulo describe las operaciones disponibles, aunque el orden lícito de aplicación de las mismas queda implícito o documentado externamente debido a que los lenguajes de programación generalmente no proveen mecanismos de especificación del protocolo de uso. Typestates permite especificar estados de objetos de un determinado tipo. Cada estado habilita ciertas operaciones y prohíbe otras, permitiendo especificar el protocolo de uso de una API determinada. En este trabajo se presenta un patrón de implementación de typestates en el lenguaje de programación Rust y se analiza su sistema de tipos y mecanismos que permiten la verificación del typestate en tiempo de compilación, mostrando que cumple con las propiedades requeridas por las propuestas de verificación modular descriptas en la bibliografía especializada.XVI Workshop Ingeniería de Software.Red de Universidades con Carreras en Informátic

    Verificando diseños BON mediante Alloy

    Get PDF
    En este artículo presentamos una técnica para traducir diseños estructurales expresados en el lenguaje BON, al lenguaje formal Alloy. En donde, la principal ventaja de la traducción es que puede realizarse automáticamente mediante herramientas de software. Adicionalmente, esta metodología puede ser usada para validar propiedades sobre los diseños utilizando el Alloy Analyzer. Para finalizar, mostramos la aplicación a un caso de estudio de Darwin Tool, una herramienta que implementa parte de esta traducción.II Workshop de Ingeniería de Software y Bases de Datos (WISBD)Red de Universidades con Carreras en Informática (RedUNCI

    Verifying BON models with alloy

    Get PDF
    In this paper we describe a methodology to translate BON (architectural) designs to Alloy specifications. The main virtue of this process is that it can be implemented by means of software tools. The utilization of this methodology during the software development allows designers to validate different kinds of properties over their BON models. Allowing, in this way, the finding of critical bugs in earlier steps of system construction. Finally, we present a software which implements this translation from BON to Alloy.Facultad de Informátic
    corecore