Modular analysis of numerical properties by abstract interpretation
Analyse modulaire de propriétés numériques par interprétation abstraite
Résumé
Any software bug or device malfunction in safety-critical systems can have catastrophicconsequences. The validation and analysis of programs in critical systems is of paramountimportance to guarantee that the software satisfies its specification and that it is devoidedof runtime errors.Static program analysis by abstract interpretation computes a sound approximationof the set of reachable states of a program. It discovers invariant properties of programswhich are represented by elements of an abstract domain. Most industrial static analysistools do not use expressive relational numerical abstract domains like convex polyhedradue to their computational cost.We propose a new modular analysis for the automatic discovery of numerical propertiesbased on the computation of disjunctive relational summaries of procedures. Proceduresummaries are computed once and for all, and used to compute the effect of procedurecalls, in a bottom-up fashion. Our approach is especially applied to improve the scalabilityof Linear Relation Analysis, or abstract interpretation with convex polyhedra, althoughit is based on a more general framework usable with any relational abstract domain.Disjunctive relational summaries are finite sets of abstract input-output relations represented by elements of a relational abstract domain. They are computed based on apartitioning of procedure preconditions. We give heuristics to compute an abstract partition of a procedure precondition. We also give ways to improve the precision of summarycomputation, notably through a careful treatment of preconditions during analysis. Ourapproach also applies to recursive procedures where summaries are computed recursivelyin terms of themselves.We implemented our approach in a new static analysis platform for C programs calledmars. We conducted experiments on programs from the Mälardalen benchmark showingthat our approach can significantly reduce the analysis time for Linear Relation Analysiscompared to a full context-sensitive analysis where procedures are analyzed completelyin each call context. Analysis precision is not significantly damaged and can even beimproved due to the use of disjunction.In a second part, we present an approach for the modular analysis of reactive systems for numerical properties. We propose a flexible representation of the behavior ofreactive components called Relational Mode Automata (RMA), which allows the analysisof reactive systems behavior at various levels of abstraction. RMA can be constructedautomatically from disjunctive summaries of the procedures implementing componentreactions. The analysis results of individual components using RMA can be reused toanalyze larger reactive systems with multiple component instantiations in a modular way.We give an application of this approach to the analysis of a simplified automated subwaycontrol system.
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.
Origine | Version validée par le jury (STAR) |
---|
Loading...