Cette HDR reprend trois de mes contributions récentes dans le domaine du diagnostic et de la réparation de bugs. Ces trois contributions ont été publiées respectivement dans ACM Transactions on Software Engineering and Methodology (TOSEM), IEEE Transactions on Software Engineering (TSE) et Elsevier Information & Software Technology (IST). Mon but est de monter qu'elles partagent un concept fondamental: celui d'oracle. La première contribution est dans le domaine des oracles statistiques. Nous avons proposé une définition de "normalité d'usage" dans les logiciels orientés-objet. Cette normalité inférée prend ensuite le rôle d'oracle: toute déviation est considérée comme un bug. La deuxième contribution se rapporte à l'utilisation des cas de test pour la réparation automatique de bugs. Nous décrivons un nouveau système qui génère des correctifs logiciels (des "patchs"') dans le but de faire passer des tests qui échouent. Le système est construit sur l'idée de transformer la violation d'une assertion haut-niveau dans un test en une information très fine sur l'exécution, que nous appelons "micro-oracle". Ces micro-oracles permettent un diagnostic très précis et la pose d'un problème de synthèse bien formé afin de réparer le bug en question. La troisième contribution se place dans la lignée des oracles génériques. Nous définissons deux oracles de résilience et une technique d'analyse afin de vérifier ces propriétés. Cette habilitation se conclut sur un agenda de recherche pour la construction des systèmes logiciels antifragiles.
defended on 03/05/2016