Analyse modulaire de propriétés numériques par interprétation abstraite
Auteur / Autrice : | Rémy Boutonnet |
Direction : | Nicolas Halbwachs |
Type : | Thèse de doctorat |
Discipline(s) : | Informatique |
Date : | Soutenance le 09/03/2020 |
Etablissement(s) : | Université Grenoble Alpes |
Ecole(s) doctorale(s) : | École doctorale Mathématiques, sciences et technologies de l'information, informatique (Grenoble ; 1995-....) |
Partenaire(s) de recherche : | Laboratoire : Laboratoire Verimag (Grenoble) |
Jury : | Président / Présidente : Susanne Graf |
Examinateurs / Examinatrices : Cesare Tinelli, Corinne Ancourt, Olivier Bouissou | |
Rapporteur / Rapporteuse : Andreas Podelski, Antoine Miné |
Mots clés
Résumé
La présence de bugs ou de dysfonctionnements dans les systèmes critiques peut avoirdes conséquences terribles. La validation et l’analyse des programmes embarqués dans lessystèmes critiques est d’une importance majeure pour garantir que les logiciels présentssoient conformes à leur spécification et dépourvus d’erreurs à l’exécution.L’analyse statique par interprétation abstraite calcule une approximation sûre del’ensemble des états accessibles d’un programme. Elle permet de découvrir des propriétésinvariantes des programmes en les représentant par des éléments d’un domaine abstrait.Les domaines abstraits numériques, comme le domaine des octogones ou des polyèdresconvexes, ont des niveaux de précision différents. Les outils industriels d’analyse statiquen’utilisent généralement pas les domaines abstraits numériques les plus expressifs, commele domaine des polyèdres convexes, à cause de la complexité de leurs opérations.Nous présentons dans cette thèse une analyse modulaire des programmes pour ladécouverte de propriétés numériques, basée sur le calcul de résumés disjonctifs et relationnels de procédures. Les résumés de chaque procédure sont calculés de manière ascendante (bottom-up) et utilisés dans l’analyse de l’effet des appels de procédure. Bien quenotre approche soit appliquée à l’analyse de relations linéaires, ou interprétation abstraitepolyédrique, pour améliorer son passage à l’échelle, elle est définie dans un cadre pluslarge applicable à n’importe quel domaine abstrait relationnel.Les résumés disjonctifs de procédures sont des ensembles finis de relations d’entrée-sortie représentées par des éléments d’un domaine abstrait relationnel. Ils sont calculésen utilisant un partitionnement de la précondition d’une procédure. Nous proposonsdes heuristiques pour calculer des partitions de préconditions. Nous présentons aussi desaméliorations concernant la précision du calcul des résumés, notamment grâce à un traite-ment particulier des préconditions. Notre approche s’applique également aux procéduresrécursives, où les résumés sont calculés en fonction d’eux-mêmes.Notre analyse modulaire à été implémentée dans un nouvel outil d’analyse statiquepour les programmes C, appelé mars. Nos expérimentations montrent que notre approchepeut réduire significativement le temps d’analyse pour l’analyse des relations linéaires, parcomparaison avec une analyse classique qui analyse les procédures dans chaque contexted’appel. La précision des résultats n’est pas considérablement diminuée et peut mêmeêtre améliorée grâce à l’usage de la disjonction dans les résumés.Dans une seconde partie, nous présentons une approche pour l’analyse modulaire dessystèmes réactifs. Nous proposons une représentation flexible des composants réactifs appelée Automates Relationnels de Mode, ou Relational Mode Automata (RMA), permettantune analyse des systèmes réactifs à différents niveaux d’abstraction. Les automates relationnels de mode peuvent être construits automatiquement à partir des résumés disjonctifsdes procédures implémentant la réaction de chaque composant. Les résultats de l’analysede chaque composant peuvent être réutilisés dans l’analyse de systèmes réactifs de plusgrande taille où chaque composant peut être instancié plusieurs fois. Cette approche estappliquée à l’analyse d’un système simplifié de contrôle d’un réseau de métro.