1 / 19

R&D en Validation/Vérification  outils pilotée par des besoins industriels Principales réalisations :

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,…)

Jimmy
Télécharger la présentation

R&D en Validation/Vérification  outils pilotée par des besoins industriels Principales réalisations :

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 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)

  2. 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

  3. 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

  4. 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

  5. Analyse statique Techniques utilisées : • Preuve à la Hoare • Interprétation abstraite • Programmation logique contrainte • Interprétation géométrique et topologie algébrique

  6. 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

  7. 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

  8. 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),…

  9. 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

  10. 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

  11. 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

  12. 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

  13. 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

  14. 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

  15. Properties Source code Residue Commands

  16. 1 - Insertion of a precondition 2 – Proof of the postcondition 3 – Proof that all the calling functions satisfy the precondition

  17. Caveat : graphe d’appels avec menaces

  18. Fluctuat : étude de la précision numérique

  19. 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

More Related