901 research outputs found
Automatic Software Repair: a Bibliography
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
Automatically correcting syntactic and semantic errors in ATL transformations using multi-objective optimization
L’ingénierie dirigée par les modèles (EDM) est un paradigme de développement logiciel
qui promeut l’utilisation de modèles en tant qu’artefacts de première plan et de processus
automatisés pour en dériver d’autres artefacts tels que le code, la documentation et les cas de
test. La transformation de modèle est un élément important de l’EDM puisqu’elle permet de
manipuler les représentations abstraites que sont les modèles. Les transformations de modèles,
comme d’autres programmes, sont sujettes à la fois à des erreurs syntaxiques et sémantiques.
La correction de ces erreurs est difficile et chronophage, car les transformations dépendent
du langage de transformation comme ATL et des langages de modélisation dans lesquels
sont exprimés les modèles en entrée et en sortie. Les travaux existants sur la réparation
des transformations ciblent les erreurs syntaxiques ou sémantiques, une erreur à la fois, et
définissent manuellement des patrons de correctifs. L’objectif principal de notre recherche
est de proposer un cadre générique pour corriger automatiquement de multiples erreurs
syntaxiques et sémantiques. Afin d’atteindre cet objectif, nous reformulons la réparation des
transformations de modèles comme un problème d’optimisation multiobjectif et le résolvons au
moyen d’algorithmes évolutionnaires. Pour adapter le cadre aux deux catégories d’erreurs, nous
utilisons différents types d’objectifs et des stratégies sophistiquées pour guider l’exploration
de l’espace des solutions.Model-driven engineering (MDE) is a software development paradigm that promotes the
use of models as first-class artifacts and automated processes to derive other artefacts from
them such as code, documentation and test cases. Model transformation is an important
element of MDE since it allows to manipulate the abstract representations that are models.
Model transformations, as other programs are subjects to both syntactic and semantic errors.
Fixing those errors is difficult and time consuming as the transformations depend on the
transformation language such as ATL, and modeling languages in which input and output
models are expressed. Existing work on transformation repair targets either syntactic or
semantic errors, one error at a time, and define patch templates manually. The main goal of
our research is to propose a generic framework to fix multiple syntactic and semantic errors
automatically. In order to achieve this goal, we reformulate the repair of model transformations
as a multi-objective optimization problem and solve it by means of evolutionary algorithms.
To adapt the framework to the two categories of errors, we use different types of objectives
and sophisticated strategies to guide the search
Model Transformation Testing and Debugging: A Survey
Model transformations are the key technique in Model-Driven Engineering (MDE) to manipulate and construct models. As a consequence, the correctness of software systems built with MDE approaches relies mainly on the correctness of model transformations, and thus, detecting and locating bugs in model transformations have been popular research topics in recent years. This surge of work has led to a vast literature on model transformation testing and debugging, which makes it challenging to gain a comprehensive view of the current state of the art.
This is an obstacle for newcomers to this topic and MDE practitioners to apply these approaches. This paper presents a survey on testing and debugging model transformations based on the analysis of \nPapers~papers on the topics. We explore the trends, advances, and evolution over the years, bringing together previously disparate streams of work and providing a comprehensive view of these thriving areas. In addition, we present a conceptual framework to understand and categorise the different proposals. Finally, we identify several open research challenges and propose specific action points for the model transformation community.This work is partially supported by the European Commission (FEDER) and Junta de Andalucia under projects APOLO (US-1264651) and
EKIPMENT-PLUS (P18-FR-2895), by the Spanish Government (FEDER/Ministerio de Ciencia e Innovación – Agencia Estatal de Investigación) under projects HORATIO (RTI2018-101204-B-C21), COSCA (PGC2018-094905-B-I00) and LOCOSS (PID2020-114615RB-I00), by the Austrian Science Fund (P 28519-N31, P 30525-N31), and by the Austrian Federal Ministry for Digital and Economic Affairs and the National Foundation for Research, Technology and Development (CDG
Automated Fixing of Programs with Contracts
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
On Oracles for Automated Diagnosis and Repair of Software Bugs
This HDR focuses on my work on automatic diagnosis and repair done over the past years. Among my past publications, it highlights three contributions on this topic, respectively published in ACM Transactions on Software Engineering and Methodology (TOSEM), IEEE Transactions on Software Engineering (TSE) and Elsevier Information & Software Technology (IST). My goal is to show that those three contributions share something deep, that they are founded on a unifying concept, which is the one of oracle. The first contribution is about statistical oracles. In the context of object-oriented software, we have defined a notion of context and normality that is specific to a fault class: missing method calls. Those inferred regularities act as oracle and their violations are considered as bugs. The second contribution is about test case based oracles for automatic repair. We describe an automatic repair system that fixes failing test cases by generating a patch. It is founded on the idea of refining the knowledge given by the violation of the oracle of the failing test case into finer-grain information, which we call a “micro-oracle”. By considering micro-oracles, we are capable of obtaining at the same time a precise fault localization diagnostic and a well-formed input-output specification to be used for program synthesis in order to repair a bug. The third contribution discusses a novel generic oracle in the context of exception handling. A generic oracle states properties that hold for many domains. Our technique verifies the compliance to this new oracle using test suite execution and exception injection. This document concludes with a research agenda about the future of engineering ultra-dependable and antifragile software systems
- …