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

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...

Full description

Bibliographic Details
Main Author: Petiot, Guillaume
Other Authors: Besançon
Language:fr
Published: 2015
Subjects:
Online Access:http://www.theses.fr/2015BESA2045/document
id ndltd-theses.fr-2015BESA2045
record_format oai_dc
spelling ndltd-theses.fr-2015BESA20452018-01-11T04:13:23Z Contribution à la vérification de programmes C par combinaison de tests et de preuves. Contribution to software verification combining tests and proofs Analyse statique Analyse dynamique Méthodes formelles Preuve Test FRAMA-C Static analysis Dynamic analysis Formal methods Proof Testing 005.1 621.39 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 Software verification often relies on a formal specification encoding the program properties to check. Formally specifying and deductively verifying programs is difficult and time consuming and requires some knowledge about theorem provers. Indeed, a proof failure for a program can be due to a noncompliance between the code and its specification, a loop or callee contrat being insufficient to prove another property, or a prover incapacity. It is often difficult for the user to decide which one of these three reasons causes a given proof failure. Indeed, this feedback is not (or rarely) provided by the theorem prover thus requires a thorough review of the code and the specification. This thesis develops a method to automatically diagnose proof failures and facilitate the specification and verification task. This work takes place within the analysis framework for C programs FRAMAC, that provides the specification language ACSL, the deductive verification plugin WP, and the structural test generator PATHCRAWLER. The proposed method consists in diagnosing proof failures using structural test generation on an instrumented version of the program under verification. Electronic Thesis or Dissertation Text fr http://www.theses.fr/2015BESA2045/document Petiot, Guillaume 2015-11-04 Besançon Julliand, Jacques Giorgetti, Alain Kosmatov, Nikolaï
collection NDLTD
language fr
sources NDLTD
topic Analyse statique
Analyse dynamique
Méthodes formelles
Preuve
Test
FRAMA-C
Static analysis
Dynamic analysis
Formal methods
Proof
Testing
005.1
621.39
spellingShingle Analyse statique
Analyse dynamique
Méthodes formelles
Preuve
Test
FRAMA-C
Static analysis
Dynamic analysis
Formal methods
Proof
Testing
005.1
621.39
Petiot, Guillaume
Contribution à la vérification de programmes C par combinaison de tests et de preuves.
description 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 === Software verification often relies on a formal specification encoding the program properties to check. Formally specifying and deductively verifying programs is difficult and time consuming and requires some knowledge about theorem provers. Indeed, a proof failure for a program can be due to a noncompliance between the code and its specification, a loop or callee contrat being insufficient to prove another property, or a prover incapacity. It is often difficult for the user to decide which one of these three reasons causes a given proof failure. Indeed, this feedback is not (or rarely) provided by the theorem prover thus requires a thorough review of the code and the specification. This thesis develops a method to automatically diagnose proof failures and facilitate the specification and verification task. This work takes place within the analysis framework for C programs FRAMAC, that provides the specification language ACSL, the deductive verification plugin WP, and the structural test generator PATHCRAWLER. The proposed method consists in diagnosing proof failures using structural test generation on an instrumented version of the program under verification.
author2 Besançon
author_facet Besançon
Petiot, Guillaume
author Petiot, Guillaume
author_sort Petiot, Guillaume
title Contribution à la vérification de programmes C par combinaison de tests et de preuves.
title_short Contribution à la vérification de programmes C par combinaison de tests et de preuves.
title_full Contribution à la vérification de programmes C par combinaison de tests et de preuves.
title_fullStr Contribution à la vérification de programmes C par combinaison de tests et de preuves.
title_full_unstemmed Contribution à la vérification de programmes C par combinaison de tests et de preuves.
title_sort contribution à la vérification de programmes c par combinaison de tests et de preuves.
publishDate 2015
url http://www.theses.fr/2015BESA2045/document
work_keys_str_mv AT petiotguillaume contributionalaverificationdeprogrammescparcombinaisondetestsetdepreuves
AT petiotguillaume contributiontosoftwareverificationcombiningtestsandproofs
_version_ 1718604096996376576