LIS
T/
DT
SI
115/11/2002 Journées SECC
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)
Laboratoire Sûreté du Logiciel
LIS
T/
DT
SI
215/11/2002 Journées SECC
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
LIS
T/
DT
SI
315/11/2002 Journées SECC
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
LIS
T/
DT
SI
415/11/2002 Journées SECC
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
LIS
T/
DT
SI
515/11/2002 Journées SECC
Analyse statique
Techniques utilisées :
Preuve à la Hoare Interprétation abstraite Programmation logique contrainte Interprétation géométrique et topologie algébrique
LIS
T/
DT
SI
615/11/2002 Journées SECC
Analyse statique
Interprétation géométrique et topologie algébrique
Pa Pb
Pb
Pa
Vb
Va
VbVa T1
T2
T1 et T2 partagent deux ressources a et b
interdit
dead lock
inatteignable
LIS
T/
DT
SI
715/11/2002 Journées SECC
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
LIS
T/
DT
SI
815/11/2002 Journées SECC
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),…
LIS
T/
DT
SI
915/11/2002 Journées SECC
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
LIS
T/
DT
SI
1015/11/2002 Journées SECC
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
LIS
T/
DT
SI
1115/11/2002 Journées SECC
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
LIS
T/
DT
SI
1215/11/2002 Journées SECC
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
LIS
T/
DT
SI
1315/11/2002 Journées SECC
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
LIS
T/
DT
SI
1415/11/2002 Journées SECC
Génération de tests
Environnement
Application (binaire exécutable)
Oracle
e s
v
Assertions sur l’environnement
Modèle ou source
Objectif de test
e s
v
True
True
Analyse statique
(Caveat, Fluctuat, TAO, GATeL)
Analyse dynamique
(Claire)
traducteur
LIS
T/
DT
SI
1515/11/2002 Journées SECC
Source codeProperties
Residue
Commands
LIS
T/
DT
SI
1615/11/2002 Journées SECC
1 - Insertion of a precondition
2 – Proof of the postcondition
3 – Proof that all the calling functions satisfy the precondition
LIS
T/
DT
SI
1715/11/2002 Journées SECC
Caveat : graphe d’appels avec menaces
LIS
T/
DT
SI
1815/11/2002 Journées SECC
Fluctuat : étude de la précision numérique
LIS
T/
DT
SI
1915/11/2002 Journées SECC
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