Thèse soutenue

Contribution à la vérification de programmes C par combinaison de tests et de preuves.

FR  |  
EN
Auteur / Autrice : Guillaume Petiot
Direction : Jacques JulliandAlain GiorgettiNikolaï Kosmatov
Type : Thèse de doctorat
Discipline(s) : Informatique
Date : Soutenance le 04/11/2015
Etablissement(s) : Besançon
Ecole(s) doctorale(s) : École doctorale Sciences pour l'ingénieur et microtechniques (Besançon ; 1991-....)
Partenaire(s) de recherche : Laboratoire : FEMTO-ST : Franche-Comté Electronique Mécanique Thermique et Optique - Sciences et Technologies (Besançon) - Franche-Comté Électronique Mécanique, Thermique et Optique - Sciences et Technologies
Jury : Président / Présidente : Catherine Dubois
Examinateurs / Examinatrices : Jacques Julliand, Alain Giorgetti, Nikolaï Kosmatov, Dillon Pariente
Rapporteurs / Rapporteuses : Pascale Le Gall, Virginie Wiels

Résumé

FR  |  
EN

La vérification de logiciels repose le plus souvent sur une spécification formelle encodant les propriétés du programme à vérifier. La tâche de spécification et de vérification déductive des programmes est longue et difficile et nécessite une connaissance des outils de preuve de programmes. En effet, un échec de preuve de programme peut être dû à une non-conformité du code par rapport à sa spécification, à un contrat de boucle ou de fonction appelée trop faible pour prouver une autre propriété, ou à une incapacité du prouveur. Il est souvent difficile pour l’utilisateur de décider laquelle de ces trois raisons est la cause de l’échec de la preuve car cette information n’est pas (ou rarement) donnée par le prouveur et requiert donc une revue approfondie du code et de la spécification. L’objectif de cette thèse est de fournir une méthode de diagnostic automatique des échecs de preuve afin d’améliorer le processus de spécification et de preuve des programmes C. Nous nous plaçons dans le cadre de la plate-forme d’analyse des programmes C FRAMA-C, qui fournit un langage de spécification unique ACSL, un greffon de vérification déductive WP et un générateur de tests structurels PATHCRAWLER. La méthode que nous proposons consiste à diagnostiquer les échecs de preuve en utilisant la génération de tests structurels sur une version instrumentée du programme d’origine