Automatic Software Repair
Prof. Martin Monperrus. University of Lille 1, Francia.
Material related to the course:
http://www.monperrus.net/martin/eci2015
Abstract
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).
Keywords: debugging, oracle, specification, behavioral repair, dynamic repair, code transformation, fault localization, crash analysis, bug reproduction, random search, guided search, code synthesis.
Examination
The evaluation mode will be Take-Home.
Brief bibliography
[Weimer2009] W. Weimer, T. Nguyen, C. L. Goues, and S. Forrest. Automatically finding patches using genetic programming. In Proceedings of the International Conference on Software Engineering, 2009.
[qin2005rx] F. Qin, J. Tucek, J. Sundaresan, and Y. Zhou. Rx: treating bugs as allergies — a safe method to survive software failures. In ACM SIGOPS Operating Systems Review, volume 39, pages 235–248. ACM, 2005.
[DeMarco2014] Favio DeMarco, Jifeng Xuan, Daniel Le Berre, Martin Monperrus. Automatic Repair of Buggy If Conditions and Missing Preconditions with SMT, In Proceedings of the 6th International Workshop on Constraints in Software Testing, Verification, and Analysis (CSTVA 2014)
[Monperrus14] Martin Monperrus. "A Critical Review of "Automatic Patch Generation Learned from Human-Written Patches": Essay on the Problem Statement and the Evaluation of Automatic Software Repair", In Proceedings of the International Conference on Software Engineering, 2014.