Analyse statique de la portabilité des programmes par interprétation abstraite
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 |
Mots clés
Résumé
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).