Thèse soutenue

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

FR  |  
EN
Auteur / Autrice : Allan Blanchard
Direction : Frédéric Loulergue
Type : Thèse de doctorat
Discipline(s) : Informatique
Date : Soutenance le 06/12/2016
Etablissement(s) : Orléans
Ecole(s) doctorale(s) : École doctorale Mathématiques, Informatique, Physique Théorique et Ingénierie des Systèmes (Centre-Val de Loire ; 2012-....)
Partenaire(s) de recherche : Laboratoire : Laboratoire d'informatique fondamentale d'Orléans (Orléans ; 1987-....)
Jury : Président / Présidente : Sébastien Limet
Examinateurs / Examinatrices : Frédéric Loulergue, Sébastien Limet, Catherine Dubois, Sylvain Conchon, Jan-Georg Smaus, Nikolaï Kosmatov, Stephan Merz, Louis Rilling
Rapporteurs / Rapporteuses : Catherine Dubois, Sylvain Conchon

Résumé

FR  |  
EN

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.