http://www.dagstuhl.de/17022

January 8 – 13 , 2017, Dagstuhl Seminar 17022

Automated Program Repair

Organizers

Sunghun Kim (HKUST – Kowloon, HK)
Claire Le Goues (Carnegie Mellon University – Pittsburgh, US)
Michael Pradel (TU Darmstadt, DE)
Abhik Roychoudhury (National University of Singapore, SG)


1 / 3 >

For support, please contact

Susanne Bach-Bernhard for administrative matters

Marc Herbstritt for scientific matters

Documents

List of Participants
Shared Documents
Dagstuhl Seminar Schedule [pdf]

Motivation

Software engineering targets the creation of software for myriad platforms, deployed over the internet, the cloud, mobile devices and conventional desktops. Software now controls cyber-physical systems, industrial control systems, and "Internet of Things" devices, and is directly responsible for humanity's economic well-being and safety in numerous contexts. It is therefore especially important that engineers are able to easily write error-free software, and to quickly find and correct errors that do appear. Future generation programming environments must not only employ sophisticated strategies for localizing software errors, but also strategies for automatically patching them.

Recent years have seen an explosive growth in research on automated program repair, with proposed techniques ranging from pure stochastic search to pure semantic analysis. The Dagstuhl Seminar in January 2017 studies the problem of automated repair in a holistic fashion. This will involve a review of foundational techniques supporting program repair, perspectives on current challenges and future techniques, and emerging applications. The aim is to broadly discuss and revisit underlying assumptions and methods towards the integration of automated patch synthesis into futuristic programming environments.

Conceptually, applications of program repair step far beyond the general goal of ensuring software quality, and the subject is relevant to a broad range of research areas. It is of obvious importance in software testing and analysis, because repair goes hand in hand with traditional testing and debugging activities. It is relevant to researchers in programming languages and systems, e.g., to study language and system-level techniques that integrate patch suggestions during development. The topic is relevant to researchers in systems security, as repair approaches may be customizable to patching vulnerabilities in both application and systems software. Researchers in formal methods may provide insight for provably correct repair, given appropriate correctness specifications. Finally, the topic is connected to human computer interaction in software engineering, since the repair process, if not fully automated, may involve eliciting appropriate developer feedback and acting on it accordingly.

At a technical level, one of the key discussion topics will be the correctness specifications driving the repair process. Most previous work in this domain has relied on test suites as partial correctness specifications. While often available, test suites are typically inadequate for fully assessing patch correctness. Alternative quality specifications, such as "minimality", could be explored. In addition, heavier-weight specifications, such as assertions, may provide stronger functional guarantees, leaving open the research challenge both in how to use them and how they may be derived to guide a repair process. Given the appropriate correctness specification, the task of repair usually involves three steps: localizing an error to a small set of potentially-faulty locations, deriving values/constraints for the computation desired at the faulty locations, and constructing "fix" expressions/statements that satisfy these values/constraints. Each of the three steps can be accomplished by a variety of methods, including heuristic search, symbolic analysis and/or constraint solving techniques. This allows for an interesting interplay for an entire design space of repair techniques involving ingenuous combinations of searchbased techniques and semantic analysis being employed at the different steps of the repair process.

In summary, the Dagstuhl Seminar in January 2017 will be of interest to attendees from software engineering, programming languages, operating systems, formal methods, security and human computer interaction, while encompassing the advancement and promises in the art and science of program repair at a conceptual and technical level.

License
  Creative Commons BY 3.0 DE
  Sunghun Kim and Claire Le Goues and Michael Pradel and Abhik Roychoudhury

Classification

  • Soft Computing / Evolutionary Algorithms
  • Software Engineering
  • Verification / Logic

Keywords

  • Patching
  • Bug Repair
  • Debugging
  • Genetic Programming
  • Search Based Software Engineering
  • Program Synthesis
  • Symbolic Execution

Book exhibition

Books from the participants of the current Seminar 

Book exhibition in the library, ground floor, during the seminar week.

Documentation

In the series Dagstuhl Reports each Dagstuhl Seminar and Dagstuhl Perspectives Workshop is documented. The seminar organizers, in cooperation with the collector, prepare a report that includes contributions from the participants' talks together with a summary of the seminar.

 

Download overview leaflet (PDF).

Publications

Furthermore, a comprehensive peer-reviewed collection of research papers can be published in the series Dagstuhl Follow-Ups.

Dagstuhl's Impact

Please inform us when a publication was published as a result from your seminar. These publications are listed in the category Dagstuhl's Impact and are presented on a special shelf on the ground floor of the library.