Dagstuhl-Seminar 17022
Automated Program Repair
( 08. Jan – 13. Jan, 2017 )
Permalink
Organisatoren
- 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)
Kontakt
- Susanne Bach-Bernhard (für administrative Fragen)
Programm
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.
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 has been 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 search-based techniques and semantic analysis being employed at the different steps of the repair process.
The Dagstuhl Seminar has attracted researchers and practitioners from all over the world, comprising participants active in the fields of software engineering, programming languages, machine learning, formal methods, and security. As a result of the seminar, several participants plan to launch various follow-up activities, such as a program repair competition, which would help to further establish and guide this young field of research, and a journal article that summarizes the state of the art in automated program repair.
- Yuriy Brun (University of Massachusetts - Amherst, US) [dblp]
- Celso G. Camilo-Junior (Federal University of Goiás, BR) [dblp]
- Jonathan Dorn (University of Virginia - Charlottesville, US) [dblp]
- Lars Grunske (HU Berlin, DE) [dblp]
- Ciera Jaspan (Google Inc. - Mountain View, US) [dblp]
- Aditya Kanade (Indian Institute of Science - Bangalore, IN) [dblp]
- Sarfraz Khurshid (University of Texas - Austin, US) [dblp]
- Dongsun Kim (University of Luxembourg, LU) [dblp]
- Sunghun Kim (HKUST - Kowloon, HK) [dblp]
- Julia Lawall (INRIA - Paris, FR) [dblp]
- Claire Le Goues (Carnegie Mellon University - Pittsburgh, US) [dblp]
- Fan Long (MIT - Cambridge, US) [dblp]
- Matías Martínez (University of Valenciennes, FR) [dblp]
- Sergey Mechtaev (National University of Singapore, SG) [dblp]
- Martin Monperrus (University of Lille & INRIA) [dblp]
- Adrian Nistor (Florida State University - Tallahassee, US) [dblp]
- Alessandro Orso (Georgia Institute of Technology - Atlanta, US) [dblp]
- Justyna Petke (University College London, GB) [dblp]
- Michael Pradel (TU Darmstadt, DE) [dblp]
- Mukul Prasad (Fujitsu Labs of America Inc. - Sunnyvale, US) [dblp]
- Abhik Roychoudhury (National University of Singapore, SG) [dblp]
- Marija Selakovic (TU Darmstadt / EC SPRIDE, DE) [dblp]
- Kathryn T. Stolee (North Carolina State University - Raleigh, US) [dblp]
- David R. White (University College London, GB) [dblp]
- Yingfei Xiong (Peking University, CN) [dblp]
- Andreas Zeller (Universität des Saarlandes, DE) [dblp]
- Tianyi Zhang (UCLA, US) [dblp]
Verwandte Seminare
- Dagstuhl-Seminar 24431: Automated Programming and Program Repair (2024-10-20 - 2024-10-25) (Details)
Klassifikation
- soft computing / evolutionary algorithms
- software engineering
- verification / logic
Schlagworte
- Patching
- Bug Repair
- Debugging
- Genetic Programming
- Search Based Software Engineering
- Program Synthesis
- Symbolic Execution