Thèse soutenue

Analyse statique de la portabilité des programmes par interprétation abstraite

FR  |  
EN
Auteur / Autrice : David Delmas
Direction : Antoine Miné
Type : Thèse de doctorat
Discipline(s) : Informatique
Date : Soutenance le 28/11/2022
Etablissement(s) : Sorbonne université
Ecole(s) doctorale(s) : École doctorale Informatique, télécommunications et électronique de Paris
Partenaire(s) de recherche : Laboratoire : LIP6 (1997-....)
Jury : Président / Présidente : Emmanuel Chailloux
Examinateurs / Examinatrices : Sylvie Putot, Jérôme Feret, Vincent Soumier
Rapporteurs / Rapporteuses : Eran Yahav, Bor-Yuh Evan Chang

Résumé

FR  |  
EN

Les logiciels tendent à être utilisés plus longtemps que prévu lors de leur conception, et dans une plus grande variété d'environnements. L'adaptation d'un logiciel à de nouvelles utilisations peut s'avérer difficile et coûteuse. Assurer la portabilité des programmes est un enjeu majeur : garantir que leur compilation et leur exécution dans un environnement différent a un effet maîtrisé sur leur sémantique. Cette thèse vise au développement d'analyses statiques par interprétation abstraite pour vérifier de telles propriétés de portabilité. Vérifier la portabilité consiste à prouver l'équivalence de deux versions syntaxiquement proches d'un programme, qui s'exécutent dans des environnements différents. Nous abordons d'abord le cas particulier de la vérification de non régression, qui vise à prouver l'équivalence de deux versions qui s'exécutent dans le même environnement. Nous proposons une analyse statique de patchs logiciels capable d'inférer de telles équivalences, notamment dans le contexte de programmes C de bas niveau comme ceux utilisés dans les systèmes embarqués. Puis nous construisons une analyse portabilité comme une extension de l'analyse de patchs. Notre analyse infère deux propriétés liées à la représentation de la mémoire : la portabilité vis-à-vis d'un changement de représentation des scalaires (endianisme), et vis-à-vis d'une organisation différente de la mémoire (offsets des champs scalaires des structures C). Nous avons implanté un analyseur statique prototype sur la plateforme MOPSA, l'avons expérimenté sur des logiciels open sources et industriels. Il analyse avec succès de grands logiciels avioniques (jusqu'à un million de lignes de C).