Current challenges in automatic software repair

  title={Current challenges in automatic software repair},
  author={Claire Le Goues and Stephanie Forrest and Westley Weimer},
  journal={Software Quality Journal},
The abundance of defects in existing software systems is unsustainable. Addressing them is a dominant cost of software maintenance, which in turn dominates the life cycle cost of a system. Recent research has made significant progress on the problem of automatic program repair, using techniques such as evolutionary computation, instrumentation and run-time monitoring, and sound synthesis with respect to a specification. This article serves three purposes. First, we review current work on… 

Automatic Software Repair

This article considers behavioral repair where test suites, contracts, models, and crashing inputs are taken as oracle, and state repair, also known as runtime repair or runtime recovery, with techniques such as checkpoint and restart, reconfiguration, and invariant restoration.

Automatic Software Repair: A Survey

This paper organizes the knowledge in the area by surveying a body of 108 papers about automatic software repair techniques, illustrating the algorithms and the approaches, comparing them on representative examples, and discussing the open challenges and the empirical evidence reported so far.

Self-Boosted Automated Program Repair

This experimental study on 12 state-of-the-art APR systems demonstrates that, overall, SeAPR can substantially reduce the number of patch executions with negligible overhead and can even leverage the patch execution information from other APR tools from the same buggy program to further boost APR.

A Survey of Test Based Automatic Program Repair

This paper systematically survey the work in mainstream of test-based program repair (TBR) and discusses the properties automatically generated patches should have, and classify the state-of-the-art approaches for TBR, and evaluate their strengths and weaknesses according to their functional mechanisms.

Challenges of Debugging Software Errors for Automatic Program Repair

The paper elaborates on some of the significant challenges afflicting this avenue of research and provides a roadmap toward the research in automatic software debugging in general and at laying bare the status quo of automatic program repair, in particular.

Toward Better Evolutionary Program Repair

ARJA-e, a new evolutionary repair system for Java code that aims to address challenges for the search space, search algorithm, and patch overfitting, is proposed and evaluated on 224 real Java bugs from Defects4J.

CAREER: Quality Automation: Push-Button Automatic Program Repair

The goal of this proposal is to make automated repair technology robust and useful enough that developers run it as naturally as they currently do compilers, linters, and other first-class QA tools.

Towards API-specific automatic program repair

  • Sebastian Nielebock
  • Computer Science
    2017 32nd IEEE/ACM International Conference on Automated Software Engineering (ASE)
  • 2017
This paper introduces the notion of an API-specific program repair mechanism that detects erroneous code in a similar way to existing APR approaches and uses API- specific information from the erroneous code to search for API usage patterns in other software, with which to fix the bug.

Automatic Program Repair Using Genetic Programming

GenProg is one of the very first automatic solutions designed to help alleviate the manual bug repair burden by automatically and generically patching bugs in deployed and legacy software and is presented as experimental evidence to substantiate claims that GenProg can repair multiple types of bugs in multiple type of programs.

Accelerating Search-Based Program Repair

This work proposes two complementary techniques, namely Location Selection and Test-Case Pruning, to improve the efficiency of search-based repair techniques, and observes that the proposed techniques provide a 3.9X speed-up, on average, without any degradation in repair quality.



Automatically finding patches using genetic programming

A fully automated method for locating and repairing bugs in software that works on off-the-shelf legacy applications and does not require formal specifications, program annotations or special coding practices is introduced.

GenProg: A Generic Method for Automatic Software Repair

This paper describes GenProg, an automated method for repairing defects in off-the-shelf, legacy programs without formal specifications, program annotations, or special coding practices, and analyzes the generated repairs qualitatively and quantitatively to demonstrate the process efficiently produces evolved programs that repair the defect.

A genetic programming approach to automated software repair

The paper describes the method, reviews earlier experiments that repaired 11 bugs in over 60,000 lines of code, reports results on new bug repairs, and describes experiments that analyze the performance and efficacy of the evolutionary components of the algorithm.

SemFix: Program repair via semantic analysis

This paper presents an automated repair method based on symbolic execution, constraint solving and program synthesis, which reports a higher success-rate than genetic programming based repair, and produces a repair faster.

A novel co-evolutionary approach to automatic software bug fixing

  • A. ArcuriX. Yao
  • Computer Science
    2008 IEEE Congress on Evolutionary Computation (IEEE World Congress on Computational Intelligence)
  • 2008
This paper proposes an evolutionary approach to automate the task of fixing bugs based on co-evolution, in which programs and test cases co- evolve, influencing each other with the aim of fixing the bugs of the programs.

Evolving patches for software repair

Defects are a major concern in software systems. Unsurprisingly, there are many tools and techniques to facilitate the removal of defects through their detection and localisation. However, there are

Representations and operators for improving evolutionary software repair

This paper investigates representation and operator choices for source-level evolutionary program repair in the GenProg framework, focusing on: representation of individual variants, crossover design, mutation operators, and search space definition.

Evolutionary repair of faulty software

  • A. Arcuri
  • Computer Science
    Appl. Soft Comput.
  • 2011

A systematic study of automated program repair: Fixing 55 out of 105 bugs for $8 each

This paper evaluates GenProg, which uses genetic programming to repair defects in off-the-shelf C programs, and proposes novel algorithmic improvements that allow it to scale to large programs and find repairs 68% more often.

Automated program repair through the evolution of assembly code

The paper explores advantages of assembly-level repair over earlier work at the source code level - the ability to repair programs written in many different languages; and the able to repair bugs that were previously intractable.