slide1 l.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
PowerPoint Presentation
Download Presentation

Loading in 2 Seconds...

play fullscreen
1 / 19

- PowerPoint PPT Presentation


  • 204 Views
  • Uploaded on

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

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about '' - Jimmy


Download Now 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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
slide1

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
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 dynamique3
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
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 statique5
Analyse statique

Techniques utilisées :

  • Preuve à la Hoare
  • Interprétation abstraite
  • Programmation logique contrainte
  • Interprétation géométrique et topologie algébrique
analyse statique6
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 statique7
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 statique8
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 statique9
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 statique10
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
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

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 fonctionnel13
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
slide14

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

slide15

Properties

Source code

Residue

Commands

slide16

1 - Insertion of a precondition

2 – Proof of the postcondition

3 – Proof that all the calling functions satisfy the precondition

collaborations
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