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...
Main Author: | |
---|---|
Other Authors: | |
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 |