Académique Documents
Professionnel Documents
Culture Documents
de codes critiques
Xavier Leroy
INRIA Paris-Rocquencourt
X. Leroy (INRIA)
V
erification de code
2010-05-17
1 / 35
Introduction
X. Leroy (INRIA)
V
erification de code
2010-05-17
2 / 35
Modelisation
mathematique
et physique
Mod`eles
Verification
par mod`eles
(model checking)
Verification
deductive
(preuve de programme)
Analyse
statique
Code machine
executable
X. Leroy (INRIA)
V
erification de code
2010-05-17
3 / 35
Cet expose
Analyse statique.
X. Leroy (INRIA)
V
erification de code
2010-05-17
4 / 35
Plan
Analyse statique
Verification deductive
Conclusions
X. Leroy (INRIA)
V
erification de code
2010-05-17
5 / 35
X. Leroy (INRIA)
V
erification de code
2010-05-17
6 / 35
X. Leroy (INRIA)
V
erification de code
2010-05-17
6 / 35
X. Leroy (INRIA)
V
erification de code
2010-05-17
7 / 35
Vraie alarme
(comportement dangereux)
Fausse alarme
(analyse pas assez precise)
V
erification de code
2010-05-17
8 / 35
Entiers :
I
I
Flottants :
I
I
X. Leroy (INRIA)
V
erification de code
2010-05-17
9 / 35
//
//
//
//
x [1.00025, 2]
y [0.5, 1]
OK
ALARME: r
esultat ind
efini
V
erification de code
2010-05-17
10 / 35
non fonctionnelles :
Consommation memoire.
Temps dexecution (WCET).
X. Leroy (INRIA)
V
erification de code
2010-05-17
11 / 35
X. Leroy (INRIA)
V
erification de code
2010-05-17
12 / 35
generalistes :
Coverity
MathWorks Polyspace verifier.
Frama-C value analyzer.
Outils specialises `a un domaine dapplication :
Microsoft Static Driver Verifier (code syst`eme Windows)
Astree (codes de contr
ole-commande).
Fluctuat (analyse symbolique des erreurs en flottants).
Outils operant sur le code machine apr`es compilation :
aiT WCET, aiT StackAnalyzer.
X. Leroy (INRIA)
V
erification de code
2010-05-17
13 / 35
Plan
Analyse statique
Verification deductive
Conclusions
X. Leroy (INRIA)
V
erification de code
2010-05-17
14 / 35
X. Leroy (INRIA)
V
erification de code
2010-05-17
15 / 35
X. Leroy (INRIA)
V
erification de code
2010-05-17
16 / 35
X. Leroy (INRIA)
V
erification de code
2010-05-17
17 / 35
V
erification de code
2010-05-17
18 / 35
X. Leroy (INRIA)
V
erification de code
2010-05-17
19 / 35
Analyse statique
Verification deductive
Proprietes
garanties
Absence derreurs
`a lexecution
Proprietes fonctionnelles
arbitrairement complexes
Annotations
manuelles
Beaucoup
Passage `a lechelle
X. Leroy (INRIA)
V
erification de code
2010-05-17
20 / 35
Outils et exemples
Quelques outils de verification deductive :
Pour Java : ESC/Java
Pour C# : Spec# / Boogie
Pour C : Caveat, Frama-C / Jessie
Quelques exemples de verifications de grande taille :
L4.verified (NICTA, Australie) :
verification du micro-noyau securise seL4 (8000 lignes).
Verisoft (Allemagne) :
verification compl`ete dun composant automobile
(du circuit jusquau code applicatif).
X. Leroy (INRIA)
V
erification de code
2010-05-17
21 / 35
Plan
Analyse statique
Verification deductive
Conclusions
X. Leroy (INRIA)
V
erification de code
2010-05-17
22 / 35
Verification
par mod`eles
(model checking)
generateur de code
Code source (C)
Verification
deductive
compilateur
Analyse
statique
Code machine
executable
V
erification de code
2010-05-17
23 / 35
X. Leroy (INRIA)
V
erification de code
2010-05-17
24 / 35
X. Leroy (INRIA)
V
erification de code
2010-05-17
25 / 35
f13;
f15;
f26;
f18; b += 8;
L18;
V
erification de code
2010-05-17
26 / 35
V
erification de code
2010-05-17
26 / 35
f13;
f15;
f26;
f18; b += 8;
L18;
V
erification de code
2010-05-17
26 / 35
X. Leroy (INRIA)
V
erification de code
2010-05-17
27 / 35
de travers de
X. Leroy (INRIA)
V
erification de code
2010-05-17
28 / 35
Que faire ?
Approche classique :
Utiliser des compilateurs
X. Leroy (INRIA)
V
erification de code
2010-05-17
29 / 35
Le projet CompCert
(INRIA/CNAM/Paris 7 ; X. Leroy, S. Blazy, et al)
X. Leroy (INRIA)
V
erification de code
2010-05-17
30 / 35
Clight
initiale
C#minor
allocation pile
Cminor
s
election dinstr.
construction du CFG
d
ecomposition des expr.
Linear
lin
earisation
du CFG
LTL
allocation registres
conventions dappel
RTL
explicitation des
blocs dactivation
Optimisations :
propagation des constantes ;
Mach
g
en
eration de
code assembleur
X. Leroy (INRIA)
Asm
sous-expressions communes
lazy code motion
V
erification de code
2010-05-17
31 / 35
Le GAC Gene-Auto
(IRIT ; N. Izerrouken, X. Thirioux, M. Pantel, M. Strecker)
X. Leroy (INRIA)
V
erification de code
2010-05-17
32 / 35
Plan
Analyse statique
Verification deductive
Conclusions
X. Leroy (INRIA)
V
erification de code
2010-05-17
33 / 35
Conclusions
X. Leroy (INRIA)
V
erification de code
2010-05-17
34 / 35
X. Leroy (INRIA)
V
erification de code
2010-05-17
35 / 35