Titre : Réparation automatique de bug (recherche)/ Automatic software repair
Equipe : ADAM
Responsable HDR : Lionel Seinturier
Encadrant : Martin Monperrus
adresse mail de contact : firstname.lastname@example.org
Automated software repair is the process of fixing software bugs automatically. It is a research field related to software testing, program synthesis, fault tolerance, data mining for software engineering, empirical software engineering and many others. It may be automatically generating patches when a test case fails [Weimer2009]. It also consists of avoiding crashes at runtime in production [qin2005rx]. Automated software repair can address all phases of the software life cycle from development time to maintenance and production time (to survive failures).
Automated software repair can manipulate behavior (by manipulating code -- whether source or binary) or data (e.g. by manipulating the running state of programs). Automated software repair can use randomized techniques (e.g. with genetic algorithms) or deterministic reasoning (e.g. using SAT or SMT solvers). According to the state-of-art, there is no way to compare those families of approaches together.
Travail à réaliser : You will work on the automatic repair approaches developed in our team. We explore two directions: randomized techniques (e.g. with probabilistic and genetic algorithms) or deterministic reasoning (e.g. using SAT or SMT solvers). You will further explore one of this family of techniques.
[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.