In this course, we will explore the topic of automatic diagnosis and repair of software bugs. We will discuss the concepts behind automatic diagnosis and repair and the techniques that can be used to implement an automatic repair tool.
Automatic software repair is the process of fixing software bugs automatically. It may be automatically generating patches when a test case fails [Weimer2009]. It also consists of avoiding crashes at runtime in production [qin2005rx]. Automatic software repair can manipulate behavior (by manipulating code — whether source or binary) or data (e.g. by manipulating the running state of programs). Repair can use randomized techniques (e.g. with genetic algorithms) or deterministic reasoning (e.g. using SAT or SMT solvers).
Automatic Software Repair. Martin Monperrus, University of Lille 1, Francia. (en inglés)