190 likes | 486 Vues
Laboratoire Sûreté du Logiciel. R&D en Validation/Vérification outils pilotée par des besoins industriels Principales réalisations : Claire : environnement de test de systèmes temps-réel distribués utilisant des simulateurs de microprocesseurs (IRSN, Airbus, Duons,…)
E N D
Laboratoire Sûreté du Logiciel • R&D en Validation/Vérification outils • pilotée par des besoins industriels • Principales réalisations : • Claire : environnement de test de systèmes temps-réel distribués utilisant des simulateurs de microprocesseurs (IRSN, Airbus, Duons,…) • Caveat : analyse statique de programmes C (synthèse de propriétés et preuve) (Airbus, EDF, TNI,…) • GATeL : génération de tests à partir de descriptions Lustre (IRSN, Airbus) • Fluctuat : étude de la précision numérique de calculs en nombres flottants (IRSN, Airbus) • TAO : génération de tests à partir du source C (Rational)
Analyse dynamique Systèmes : • distribués : problèmes de synchronisation • temps-réel : pas d’instrumentation du code • formalismes multiples : problèmes d’échanges • composants logiciels et matériels à divers stades de maturité : simulation du matériel, remplacement de composants On développe : • générateurs d’environnement de test : pilote, bouchons, oracle • simulateurs du matériel • connexion à GDB
Analyse dynamique Simulateurs du matériel en SystemC (ex : 68040, PowerPC 755, Sharc) • Aspect fonctionnel (émulateur) • Aspect temporel (prise en compte des caches, pipeline) : précision ~10% Objectifs : • Performance : 1 MIPS simulé • Bibliothèque de composants de base réutilisables : cache, prédiction de branchement,… Difficultés : performance, précision (~documentation) Coopération : LRI
Analyse statique • Identification de menaces (division par zéro, blocage,…) • Preuve formelle • Précision de calculs utilisant des nombres flottants • Génération de cas de test (pilotes et oracles) Au niveau du : • du source (C ou SystemC) • du binaire exécutable (PowerPC755) • de spécifications (Lustre) • de modèles (Promela/SPIN, géométriques) extraits du source code
Analyse statique Techniques utilisées : • Preuve à la Hoare • Interprétation abstraite • Programmation logique contrainte • Interprétation géométrique et topologie algébrique
Analyse statique T2 interdit deadlock inatteignable Interprétation géométrique et topologie algébrique T1 et T2 partagent deux ressources a et b Va Vb Pa Pb T1 Pa Pb Va Vb
Analyse statique Travaux actuels autour de Caveat : • Synthèse d’invariants (prise en compte du contexte) • Améliorations diverses de nos outils de manipulation algébrique(avec le LIFO) : filtrage, base de règle de réécriture, démonstrateur de théorèmes • Coopération des techniques : • Hoare (exact mais interactif ; locale) • interprétation abstraite (approchée mais automatique ; globale) exemple : calcul et utilisation d’alias
Analyse statique Travaux actuels sur SystemC V2.0 : • Définition d’un premier sous-ensemble analysable de modules mis à plat(signaux, ports, notify, tous les wait, une seule horloge) • Analyseur statique : • Représentation interne conservant les communications (pas du C++ à plat, macros non expansées) • Synthèse de propriétés d’invariance, et preuve de propriétés temporelles • Connexion à AIF format d’échange : VHDL, VERILOG, LPV (JL. Lambert TNI-Valiosys),…
Analyse statique Travaux sur l’approche géométrique du parallélisme : • Référence : application EDF (100 000 lignes de C, multi-thread avec partage de ressources) • Développement d’un analyseur statique • Calcul d’invariants topologiques pour éviter l’explosion combinatoire Travaux actuels : • Calcul compositionnel d’invariants • Extension d’application : POSIX, temps-réel
Analyse statique Analyse par interprétation abstraite des causes d’imprécisions dans les calculs flottants (IEEE 754) par rapport aux calculs réels Acquis : Fluctuat analyseur pour programmes C Travaux actuels : • analyse du binaire PowerPC 755 • contrôle des élargissements dans les boucles • recherche d’autres domaines pour améliorer la précision de l’analyse
Test structurel/fonctionnel Application des outils d’analyse statique : Programme + assertions sur l’environnement + objectif de test Caveat sur source C : calcul de condition de vérification (à la Hoare), puis résolution TAO sur source C : objectif de test =automate de comportement calcul de la condition d’entrée (interprétation abstraite), puis résolution GATeL sur spécification Lustre : modèle +environnement + objectif (interprétation en CLP) puis dépliage + résolution + propagation
Test fonctionnel Test fonctionnel en présence de nombres flottants Objectif : produire un test et un oracle pour décider de la validité du résultat d’un calcul en nombres flottants y=f(x) {x1 = 3.14, y1 [5.10,5.21] [5.33,5.38]}, … Problèmes : • Bon conditionnement du modèle? • Sensibilité du graphe de contrôle du modèle. • Génération de solution d’un système de contraintes avec flottants. Travaux en cours : • Bibliothèque pour la résolution de contraintes en nombres flottants
Test fonctionnel Génération de test à partir de spécifications par pré/post-conditions en logique des prédicats du premier ordre Restrictions : • Variables du prédicat = variables du code (donc structurées) (pas d’abstraction) • Quantification sur ensembles finis (bornes éventuellement inconnues) • Pas de récursivité Objectif : recherche de solutions nominales et aux limites ( problèmes de caractérisation) Technique : • Programmation logique contrainte (Eclipse) • Exploitation des formes normales disjonctives • Quantification à bornes inconnues génération dynamique de contraintes
Génération de tests Assertions sur l’environnement True e s Modèle ou source Analyse statique (Caveat, Fluctuat, TAO, GATeL) Objectif de test v True traducteur Environnement Analyse dynamique (Claire) Application (binaire exécutable) e s v Oracle
Properties Source code Residue Commands
1 - Insertion of a precondition 2 – Proof of the postcondition 3 – Proof that all the calling functions satisfy the precondition
Collaborations • Industrielles : • Airbus : Caveat, Fluctuat, Claire, GATeL • EDF : Caveat, MIEL, ALCOOL • IPSN : Claire, GATeL, Fluctuat • (RATP : évaluation de Caveat) • (Dassault Aviation : évaluation de Caveat) • Rational : TAO • TNI-Valiosys : Caveat, Claire, SystemC • Duons Systèmes : Claire • Académiques • ENS : interprétation abstraite - analyse probabiliste • LIX : interprétation abstraite - VHDL • LIFO : filtrage pour réécriture • LRI : simulateurs de microprocesseurs • CNRS Strasbourg,… : analyse de programmes parallèles • (LRI : génération de test) • (LSV : échanges culturels, vivier pour embauches) • Projets nationaux ou européens