Aide à la vérification de programmes concurrents par transformation de code et de spécifications

Vérifier formellement des programmes concurrents est une tâche difficile. S’il existe différentes techniques pour la réaliser, très peu sont effectivement mises en oeuvre pour des programmes écrits dans des langages de programmation réalistes. En revanche, les techniques de vérification formelles de...

Full description

Bibliographic Details
Main Author: Blanchard, Allan
Other Authors: Orléans
Language:fr
Published: 2016
Subjects:
Online Access:http://www.theses.fr/2016ORLE2073/document
id ndltd-theses.fr-2016ORLE2073
record_format oai_dc
spelling ndltd-theses.fr-2016ORLE20732018-09-22T05:21:14Z Aide à la vérification de programmes concurrents par transformation de code et de spécifications Assisted concurrent program verification by code and specification transformation Concurrence Vérification formelle Transformation de code Modèles mémoire faible FRAMA-C Concurrency Formal verification Code transformation Weak memory models FRAMA-C 005.13 Vérifier formellement des programmes concurrents est une tâche difficile. S’il existe différentes techniques pour la réaliser, très peu sont effectivement mises en oeuvre pour des programmes écrits dans des langages de programmation réalistes. En revanche, les techniques de vérification formelles de programmes séquentiels sont utilisées avec succès depuis plusieurs années déjà, et permettent d’atteindre de hauts degrés de confiance dans nos systèmes. Cette thèse propose une alternative aux méthodes d’analyses dédiées à la vérification de programmes concurrents consistant à transformer le programme concurrent en un programme séquentiel pour le rendre analysable par des outils dédiés aux programmes séquentiels. Nous nous plaçons dans le contexte de FRAMA-C, une plate-forme d’analyse de code C spécifié avec le langage ACSL. Les différentes analyses de FRAMA-C sont des greffons à la plate-forme, ceux-ci sont à ce jour majoritairement dédiés aux programmes séquentiels. La méthode de vérification que nous proposons est appliquée manuellement à la vérification d’un code concurrent issu d’un hyperviseur. Nous automatisons la méthode à travers un nouveau greffon à FRAMA-C qui permet de produire automatiquement, depuis un programme concurrent spécifié, un programme séquentiel spécifié équivalent. Nous présentons les bases de sa formalisation, ayant pour but d’en prouver la validité. Cette validité n’est valable que pour la classe des programmes séquentiellement consistant. Nous proposons donc finalement un prototype de solveur de contraintes pour les modèles mémoire faibles, capable de déterminer si un programme appartient bien à cette classe en fonction du modèle mémoire cible. Formal verification of concurrent programs is a hard task. There exists different methods to perform such a task, but very few are applied to the verification of programs written using real life programming languages. On the other side, formal verification of sequential programs is successfully applied for many years, and allows to get high confidence in our systems. As an alternative to dedicated concurrent program analyses, we propose a method to transform concurrent programs into sequential ones to make them analyzable by tools dedicated to sequential programs. This work takes place within the analysis framework FRAMA-C, dedicated to the analysis of C code specified with ACSL. The different analyses provided by FRAMA-C are plugins to the framework, which are currently mostly dedicated to sequential programs. We apply this method to the verification of a concurrent code taken from an hypervisor. We describe the automation of the method implemented by a new plugin to FRAMAC that allow to produce, from a specified concurrent program, an equivalent specified sequential program. We present the basis of a formalization of the method with the objective to prove its validity. This validity is admissible only for the class of sequentially consistent programs. So, we finally propose a prototype of constraint solver for weak memory models, which is able to determine whether a program is in this class or not, depending on the targeted hardware. Electronic Thesis or Dissertation Text fr http://www.theses.fr/2016ORLE2073/document Blanchard, Allan 2016-12-06 Orléans Loulergue, Frédéric
collection NDLTD
language fr
sources NDLTD
topic Concurrence
Vérification formelle
Transformation de code
Modèles mémoire faible
FRAMA-C
Concurrency
Formal verification
Code transformation
Weak memory models
FRAMA-C
005.13
spellingShingle Concurrence
Vérification formelle
Transformation de code
Modèles mémoire faible
FRAMA-C
Concurrency
Formal verification
Code transformation
Weak memory models
FRAMA-C
005.13
Blanchard, Allan
Aide à la vérification de programmes concurrents par transformation de code et de spécifications
description Vérifier formellement des programmes concurrents est une tâche difficile. S’il existe différentes techniques pour la réaliser, très peu sont effectivement mises en oeuvre pour des programmes écrits dans des langages de programmation réalistes. En revanche, les techniques de vérification formelles de programmes séquentiels sont utilisées avec succès depuis plusieurs années déjà, et permettent d’atteindre de hauts degrés de confiance dans nos systèmes. Cette thèse propose une alternative aux méthodes d’analyses dédiées à la vérification de programmes concurrents consistant à transformer le programme concurrent en un programme séquentiel pour le rendre analysable par des outils dédiés aux programmes séquentiels. Nous nous plaçons dans le contexte de FRAMA-C, une plate-forme d’analyse de code C spécifié avec le langage ACSL. Les différentes analyses de FRAMA-C sont des greffons à la plate-forme, ceux-ci sont à ce jour majoritairement dédiés aux programmes séquentiels. La méthode de vérification que nous proposons est appliquée manuellement à la vérification d’un code concurrent issu d’un hyperviseur. Nous automatisons la méthode à travers un nouveau greffon à FRAMA-C qui permet de produire automatiquement, depuis un programme concurrent spécifié, un programme séquentiel spécifié équivalent. Nous présentons les bases de sa formalisation, ayant pour but d’en prouver la validité. Cette validité n’est valable que pour la classe des programmes séquentiellement consistant. Nous proposons donc finalement un prototype de solveur de contraintes pour les modèles mémoire faibles, capable de déterminer si un programme appartient bien à cette classe en fonction du modèle mémoire cible. === Formal verification of concurrent programs is a hard task. There exists different methods to perform such a task, but very few are applied to the verification of programs written using real life programming languages. On the other side, formal verification of sequential programs is successfully applied for many years, and allows to get high confidence in our systems. As an alternative to dedicated concurrent program analyses, we propose a method to transform concurrent programs into sequential ones to make them analyzable by tools dedicated to sequential programs. This work takes place within the analysis framework FRAMA-C, dedicated to the analysis of C code specified with ACSL. The different analyses provided by FRAMA-C are plugins to the framework, which are currently mostly dedicated to sequential programs. We apply this method to the verification of a concurrent code taken from an hypervisor. We describe the automation of the method implemented by a new plugin to FRAMAC that allow to produce, from a specified concurrent program, an equivalent specified sequential program. We present the basis of a formalization of the method with the objective to prove its validity. This validity is admissible only for the class of sequentially consistent programs. So, we finally propose a prototype of constraint solver for weak memory models, which is able to determine whether a program is in this class or not, depending on the targeted hardware.
author2 Orléans
author_facet Orléans
Blanchard, Allan
author Blanchard, Allan
author_sort Blanchard, Allan
title Aide à la vérification de programmes concurrents par transformation de code et de spécifications
title_short Aide à la vérification de programmes concurrents par transformation de code et de spécifications
title_full Aide à la vérification de programmes concurrents par transformation de code et de spécifications
title_fullStr Aide à la vérification de programmes concurrents par transformation de code et de spécifications
title_full_unstemmed Aide à la vérification de programmes concurrents par transformation de code et de spécifications
title_sort aide à la vérification de programmes concurrents par transformation de code et de spécifications
publishDate 2016
url http://www.theses.fr/2016ORLE2073/document
work_keys_str_mv AT blanchardallan aidealaverificationdeprogrammesconcurrentspartransformationdecodeetdespecifications
AT blanchardallan assistedconcurrentprogramverificationbycodeandspecificationtransformation
_version_ 1718734781151182848