Analyse statique par interprétation abstraite de programmes concurrents manipulant des structures de données complexes
Auteur / Autrice : | Valentin Barbazo |
Direction : | Xavier Rival |
Type : | Projet de thèse |
Discipline(s) : | Informatique |
Date : | Inscription en doctorat le 01/09/2023 |
Etablissement(s) : | Université Paris sciences et lettres |
Ecole(s) doctorale(s) : | École doctorale Sciences mathématiques de Paris centre (Paris ; 2000-....) |
Partenaire(s) de recherche : | Laboratoire : DIENS - Département d'informatique de l'École normale supérieure |
Equipe de recherche : ANTIQUE | |
établissement opérateur d'inscription : École normale supérieure (Paris ; 1985-....) |
Mots clés
Résumé
Avec la complexité croissante des mécanismes mis en jeu dans les logiciels que nous utilisons au quotidien et auxquels nous confions nos données personnelles, le développement et l'automatisation de méthodes de vérification de programmes constituent un enjeu majeur. Les méthodes d'analyse statique permettent de prouver des propriétés pour toutes les exécutions d'un programme cible uniquement à partir de son code source. L'interprétation abstraite fournit un cadre théorique permettant de réaliser de telles analyses, correctes par construction, en représentant les états du programme dans un domaine abstrait et en raisonnant sur des propriétés dans ce domaine. La logique de séparation a démontré son utilité pour abstraire des structures de données complexes (telles que des listes ou des arbres) manipulées par des programmes séquentiels. Cependant, la programmation concurrente complexifie fortement tout raisonnement sur les propriétés et les états des programmes. Notre recherche a donc pour but de développer un cadre théorique pour l'analyse statique de programmes parallèles manipulant des structures de données complexes. Nous nous appuyons sur les concepts de logique de séparation concurrente et de sémantique d'interférences afin de construire des abstractions permettant de décrire efficacement ces structures de données ainsi que les relations entre différents threads. Afin de valider la pertinence des choix théoriques et de s'assurer que chaque abstraction possède une représentation machine efficace, nous implémentons en parallèle un outil d'analyse statique, et nous évaluerons les résultats produits par celui-ci sur plusieurs familles de programmes cible.