SlideShare ist ein Scribd-Unternehmen logo
1 von 23
Downloaden Sie, um offline zu lesen
Les outils de v´erification:
`a la rescousse du logiciel fiable
Xavier Leroy
Inria Paris-Rocquencourt
Rencontre Inria-industrie, 2013-10-04
La qualit´e du logiciel `a l’Inria
De nombreux travaux sur diff´erentes facettes du probl`eme :
G´enie logiciel :
approches classiques (ing´eni´erie dirig´ee par les mod`eles) ou pas.
Langages de programmation :
langages fonctionnels (OCaml), langages r´eactifs, langages d´edi´es
(domain-specific languages).
V´erification et validation :
les outils de v´erification formelle comme alternative au test
(cet expos´e).
Fondations :
d´emonstration automatique (Alt-Ergo, VeriT), interactive (Coq) ;
s´emantiques formelles de langages comme C, Javascript, . . .
Les domaines d’application
Historiquement : le logiciel embarqu´e critique
o`u sont en jeu des vies humaines (a´eronautique, ferroviaire)
ou des int´erˆets ´economiques majeurs (cartes `a puce).
En plein essort : le logiciel d’infrastructure syst`eme et r´eseaux
(Linux, Windows, Apache, OpenSSL, . . . ).
Demain ? des logiciels utilisateurs grand public
(navigateurs Web, applis smartphones, applis Web)
notamment pour la confidentialit´e et le respect de la vie priv´ee.
La v´erification
M´ethode dominante aujourd’hui : le test
(mˆeme `a de tr`es haut niveaux d’exigence, p.ex. DO-178).
Une m´ethode qui atteint ses limites :
• Exigences r´eglementaires : certaines normes requi`erent des
garanties plus fortes (Crit`eres Communs niveau EAL7).
• Difficult´es `a couvrir l’ensemble d’un logiciel complexe
(notamment la bonne gestion des entr´ees erron´ees).
• Coˆuts consid´erables pour construire la suite de tests et pour
l’administrer.
V´erification et validation
Que faire lorsque le test ne suffit plus ?
R´eflexe de l’ing´enieur : utiliser des math´ematiques !
R´eflexe de l’informaticien : se faire aider par la machine !
→ Les outils de v´erification formelle de code.
La v´erification formelle de logiciel
´Etablir des propri´et´es de sˆuret´e ou de s´ecurit´e du logiciel qui sont
vraies
• de toute ex´ecution possible du logiciel ;
• pour toutes les valeurs possibles des entr´ees ;
• sans ex´ecuter le logiciel ;
• en temps fini et raisonnable.
Deux exemples dans la suite :
• Analyse statique de valeurs.
• V´erification d´eductive (preuve de programmes).
Les fondements de ces approches sont connus depuis longtemps
(preuve de programmes : 1969 ; interpr´etation abstraite : 1977 ;
model checking : 1981) mais c’est l’apparition r´ecente d’outils de
v´erification qui les rend praticables.
L’analyse statique de valeurs
Approximer (par un sur-ensemble) toutes les valeurs que peuvent
prendre les variables et les cases m´emoire d’un programme pendant
toutes ses ex´ecutions.
En d´eduire que le programme n’a pas de comportement dangereux.
L’analyse statique de valeurs
Approximer (par un sur-ensemble) toutes les valeurs que peuvent
prendre les variables et les cases m´emoire d’un programme pendant
toutes ses ex´ecutions.
En d´eduire que le programme n’a pas de comportement dangereux.
Exemple d’analyse statique
unsigned char entrees[10];
double table[256];
int i, somme, moyenne;
somme = 0;
for (i = 0; i < 10; i++) {
somme += entrees[i]; // somme ∈ [0, 2550]
}
moyenne = somme / 10; // moyenne ∈ [0, 255]
return table[moyenne]; // acc`es dans les bornes
Vraies et fausses alarmes
Vraie alarme Fausse alarme
(comportement dangereux) (analyse pas assez pr´ecise)
Approximation plus fine (poly`edre au lieu de rectangle) :
pas d’alarme
Propri´et´es garanties par analyse statique
Principalement : l’absence d’erreurs `a l’ex´ecution.
• Tableaux et pointeurs :
• Pas d’acc`es hors-bornes.
• Pas de d´er´ef´erencement du pointeur nul.
• Pas d’acc`es apr`es un free ; pas de double free.
• Contraintes d’alignement du processeur.
• Entiers :
• Pas de division par z´ero.
• Pas de d´ebordements arithm´etiques.
• Flottants :
• Pas de d´ebordements arithm´etiques (infinis).
• Pas d’op´erations ind´efinies (not-a-number).
Diff´erents types d’analyses de valeurs
Analyses non-relationnelles : propri´et´es d’une seule variable.
• De type num´erique : intervalle de variation x ∈ [a, b] ;
congruences x mod N = 0.
• De type pointeur : validit´e des acc`es m´emoire, non-aliasing
entre pointeurs.
Analyses relationnelles : invariants entre plusieurs variables.
(Exemple : poly`edres = in´egalit´es lin´eaires ax + by ≤ c.)
Analyses de propri´et´es non fonctionnelles :
• Consommation m´emoire.
• Temps d’ex´ecution (WCET).
• Flots d’information.
Analyse de temps d’ex´ecution : aiT WCET
Quelques outils d’analyse statique
Outils g´en´eralistes :
• Coverity
• MathWorks Polyspace verifier.
• Frama-C value analyzer.
Outils sp´ecialis´es `a un domaine d’application :
• Microsoft Static Driver Verifier (code syst`eme Windows)
• Astr´ee (codes de contrˆole-commande).
• Fluctuat (analyse symbolique des erreurs en flottants).
Outils op´erant sur le code machine apr`es compilation :
• aiT WCET, aiT StackAnalyzer.
V´erification d´eductive
(preuve de programmes)
Annoter le programme avec des formules logiques :
• Pr´econditions (exigences sur les arguments de fonctions)
• Postconditions (garanties sur les r´esultats de fonctions)
• Invariants de boucles.
V´erifier que :
• Pour chaque fonction, pr´econditions impliquent
postconditions.
• Pour chaque appel de fonction, les pr´econditions sont
satisfaites.
Outillage :
• G´en´erateurs d’obligations de v´erifications.
• D´emonstrateurs automatiques.
Exemple de v´erification d´eductive
Recherche dichotomique dans une table.
int binary_search(long t[], int n, long v) {
int l = 0, u = n-1;
while (l <= u) {
int m = l + (u - l) / 2;
if (t[m] < v)
l = m + 1;
else if (t[m] > v)
u = m - 1;
else return m;
}
return -1;
}
Sp´ecification des pr´e- et post-conditions
Dans le langage ACSL de l’outil Frama-C :
/*@ requires n >= 0 && valid_range(t,0,n-1);
@ behavior success:
@ assumes // array t is sorted in increasing order
@ forall integer k1, k2;
@ 0 <= k1 <= k2 <= n-1 ==> t[k1] <= t[k2];
@ assumes // v appears somewhere in the array t
@ exists integer k; 0 <= k <= n-1 && t[k] == v;
@ ensures 0 <= result <= n-1 && t[result] == v;
@ behavior failure:
@ assumes // v does not appear anywhere in the array t
@ forall integer k; 0 <= k <= n-1 ==> t[k] != v;
@ ensures result == -1;
@*/
Sp´ecification de l’invariant de boucle
int binary_search(long t[], int n, long v) {
int l = 0, u = n-1;
/*@ loop invariant 0 <= l && u <= n-1;
@ for success:
@ loop invariant
@ forall integer k;
@ 0 <= k < n && t[k] == v ==> l <= k <= u;
@ loop variant u-l;
@*/
while (l <= u) {
int m = l + (u - l) / 2;
if (t[m] < v)
l = m + 1;
else if (t[m] > v)
u = m - 1;
else return m;
}
return -1;
}
Production et preuve des obligations
Comparaison analyse statique /
v´erification d´eductive
Analyse statique V´erification d´eductive
Propri´et´es
garanties
Absence d’erreurs
`a l’ex´ecution
Propri´et´es fonctionnelles
arbitrairement complexes
Annotations
manuelles
Pas ou tr`es peu Beaucoup
Passage `a l’´echelle 105–106 lignes 102–103 lignes
Outils et exemples
Quelques outils de v´erification d´eductive :
• Pour Java : KeYs
• Pour C# : Spec# / Boogie
• Pour C : Caveat, Frama-C / WP
Quelques exemples de v´erifications d´eductives de grande taille :
• L4.verified (NICTA, Australie) :
v´erification du micro-noyau s´ecuris´e seL4 (8000 lignes).
• CompCert (Inria) :
v´erification d’un compilateur optimisant pour le langage C.
Conclusions
Des fondations th´eoriques d´ej`a anciennes . . .
. . . qui sont devenues praticables ces 10 derni`eres ann´ees.
Une premi`ere g´en´eration d’outils disponible . . .
. . . qui commencent `a ˆetre utilis´es pour le logiciel critique embarqu´e
. . . et ne demandent qu’`a ˆetre essay´es dans d’autres domaines.
Un domaine o`u l’industrie europ´eenne est en pointe. . .
. . . et o`u la recherche acad´emique est tr`es active.
Quelques directions de travail
Prise en compte du parall´elisme `a m´emoire partag´ee :
• Analyse statique (absence de data races ; WCET).
• V´erification d´eductive (logiques de s´eparation).
• Formalisation des mod`eles m´emoires faibles impl´ement´es
par les multicoeurs.
Traiter d’autres langages que C & Java.
V´erification fine des calculs flottants.
Vers une v´erification formelle des outils de g´en´eration de code et
de v´erification.

Weitere ähnliche Inhalte

Was ist angesagt?

Chap1V2019: Cours en C++
Chap1V2019: Cours en C++Chap1V2019: Cours en C++
Chap1V2019: Cours en C++Aziz Darouichi
 
Algorithme & structures de données Chap I
Algorithme & structures de données Chap IAlgorithme & structures de données Chap I
Algorithme & structures de données Chap IInes Ouaz
 
C++ Metaprogramming : multidimensional typelist
C++ Metaprogramming : multidimensional typelistC++ Metaprogramming : multidimensional typelist
C++ Metaprogramming : multidimensional typelistVincent Agnus
 
Chapitre4: Pointeurs et références
Chapitre4: Pointeurs et références Chapitre4: Pointeurs et références
Chapitre4: Pointeurs et références Aziz Darouichi
 
Cours langage c
Cours langage cCours langage c
Cours langage ccoursuniv
 
Cours de C++ / Tronc commun deuxième année ISIMA
Cours de C++ / Tronc commun deuxième année ISIMACours de C++ / Tronc commun deuxième année ISIMA
Cours de C++ / Tronc commun deuxième année ISIMALoic Yon
 
Introduction a la compilation Analyse lexicale - C2
Introduction a la compilation  Analyse lexicale - C2Introduction a la compilation  Analyse lexicale - C2
Introduction a la compilation Analyse lexicale - C2Beligh HAMDI
 
Chap 6 : classes et interfaces
Chap 6 : classes et interfacesChap 6 : classes et interfaces
Chap 6 : classes et interfacesAziz Darouichi
 
INF120 - Algo DUT SRC1 - Cours 4 (2012)
INF120 - Algo DUT SRC1 - Cours 4 (2012)INF120 - Algo DUT SRC1 - Cours 4 (2012)
INF120 - Algo DUT SRC1 - Cours 4 (2012)PGambette
 
INF120 - Algo DUT SRC1 - Cours 5
INF120 - Algo DUT SRC1 - Cours 5INF120 - Algo DUT SRC1 - Cours 5
INF120 - Algo DUT SRC1 - Cours 5PGambette
 
Seance 3- Programmation en langage C
Seance 3- Programmation en langage C Seance 3- Programmation en langage C
Seance 3- Programmation en langage C Fahad Golra
 
INF120 - Algo DUT SRC1 - Cours 3
INF120 - Algo DUT SRC1 - Cours 3INF120 - Algo DUT SRC1 - Cours 3
INF120 - Algo DUT SRC1 - Cours 3PGambette
 
Seance 4- Programmation en langage C
Seance 4- Programmation en langage CSeance 4- Programmation en langage C
Seance 4- Programmation en langage CFahad Golra
 
Chapitre2fonctionscppv2019
Chapitre2fonctionscppv2019Chapitre2fonctionscppv2019
Chapitre2fonctionscppv2019Aziz Darouichi
 
Chapitre1: Langage Python
Chapitre1: Langage PythonChapitre1: Langage Python
Chapitre1: Langage PythonAziz Darouichi
 
Chapitre 1 (algorithme)
Chapitre 1 (algorithme)Chapitre 1 (algorithme)
Chapitre 1 (algorithme)mahbouba
 

Was ist angesagt? (20)

Chap1: Cours en C++
Chap1: Cours en C++Chap1: Cours en C++
Chap1: Cours en C++
 
Chap1V2019: Cours en C++
Chap1V2019: Cours en C++Chap1V2019: Cours en C++
Chap1V2019: Cours en C++
 
Algorithme & structures de données Chap I
Algorithme & structures de données Chap IAlgorithme & structures de données Chap I
Algorithme & structures de données Chap I
 
C++ Metaprogramming : multidimensional typelist
C++ Metaprogramming : multidimensional typelistC++ Metaprogramming : multidimensional typelist
C++ Metaprogramming : multidimensional typelist
 
Chapitre4: Pointeurs et références
Chapitre4: Pointeurs et références Chapitre4: Pointeurs et références
Chapitre4: Pointeurs et références
 
Cours langage c
Cours langage cCours langage c
Cours langage c
 
Cours de C++ / Tronc commun deuxième année ISIMA
Cours de C++ / Tronc commun deuxième année ISIMACours de C++ / Tronc commun deuxième année ISIMA
Cours de C++ / Tronc commun deuxième année ISIMA
 
Introduction a la compilation Analyse lexicale - C2
Introduction a la compilation  Analyse lexicale - C2Introduction a la compilation  Analyse lexicale - C2
Introduction a la compilation Analyse lexicale - C2
 
langage C++
langage C++langage C++
langage C++
 
Chap 6 : classes et interfaces
Chap 6 : classes et interfacesChap 6 : classes et interfaces
Chap 6 : classes et interfaces
 
INF120 - Algo DUT SRC1 - Cours 4 (2012)
INF120 - Algo DUT SRC1 - Cours 4 (2012)INF120 - Algo DUT SRC1 - Cours 4 (2012)
INF120 - Algo DUT SRC1 - Cours 4 (2012)
 
INF120 - Algo DUT SRC1 - Cours 5
INF120 - Algo DUT SRC1 - Cours 5INF120 - Algo DUT SRC1 - Cours 5
INF120 - Algo DUT SRC1 - Cours 5
 
Seance 3- Programmation en langage C
Seance 3- Programmation en langage C Seance 3- Programmation en langage C
Seance 3- Programmation en langage C
 
INF120 - Algo DUT SRC1 - Cours 3
INF120 - Algo DUT SRC1 - Cours 3INF120 - Algo DUT SRC1 - Cours 3
INF120 - Algo DUT SRC1 - Cours 3
 
Seance 4- Programmation en langage C
Seance 4- Programmation en langage CSeance 4- Programmation en langage C
Seance 4- Programmation en langage C
 
Programmation en C
Programmation en CProgrammation en C
Programmation en C
 
Chapitre2fonctionscppv2019
Chapitre2fonctionscppv2019Chapitre2fonctionscppv2019
Chapitre2fonctionscppv2019
 
Chapitre1: Langage Python
Chapitre1: Langage PythonChapitre1: Langage Python
Chapitre1: Langage Python
 
Chapitre 1 (algorithme)
Chapitre 1 (algorithme)Chapitre 1 (algorithme)
Chapitre 1 (algorithme)
 
Algorithmique iv
Algorithmique ivAlgorithmique iv
Algorithmique iv
 

Andere mochten auch

La fatigue touche la moitié des malades de la sclérose en plaques
La fatigue touche la moitié des malades de la sclérose en plaquesLa fatigue touche la moitié des malades de la sclérose en plaques
La fatigue touche la moitié des malades de la sclérose en plaquesLiesbeth Vranckaert
 
Pilates para el cerebro
Pilates para el cerebroPilates para el cerebro
Pilates para el cerebrodopamina_86
 
2013 06 logement_autonome_jeunes
2013 06 logement_autonome_jeunes2013 06 logement_autonome_jeunes
2013 06 logement_autonome_jeunesLa Cé
 
Hotel-montpellier-mariage-2010
Hotel-montpellier-mariage-2010Hotel-montpellier-mariage-2010
Hotel-montpellier-mariage-2010Hotel Montpellier
 
Capes theatre
Capes theatreCapes theatre
Capes theatreimoiroux
 
Storytelling et Mind-Mapping valorisent vos Savoirs
Storytelling et Mind-Mapping valorisent vos SavoirsStorytelling et Mind-Mapping valorisent vos Savoirs
Storytelling et Mind-Mapping valorisent vos SavoirsPascal Bernardon
 
Systemèmes d' échafaudages (FR)
Systemèmes d' échafaudages (FR)Systemèmes d' échafaudages (FR)
Systemèmes d' échafaudages (FR)XSPlatforms
 
Sis històries en passat perfet
Sis històries en passat perfetSis històries en passat perfet
Sis històries en passat perfetngt1776
 
Presentación: Héctor Faúndez Ledezma, Derechos Humanos
Presentación: Héctor Faúndez Ledezma, Derechos HumanosPresentación: Héctor Faúndez Ledezma, Derechos Humanos
Presentación: Héctor Faúndez Ledezma, Derechos HumanosEspacio Público
 
06 excuse convaincante-__
06   excuse convaincante-__06   excuse convaincante-__
06 excuse convaincante-__hubi07500
 
Presentación1
Presentación1Presentación1
Presentación1ofito
 
Modelo de Negocio 2
Modelo de Negocio 2Modelo de Negocio 2
Modelo de Negocio 2Axeleratum
 
Une expérience en live : la classe virtuelle
Une expérience en live : la classe virtuelleUne expérience en live : la classe virtuelle
Une expérience en live : la classe virtuelleVincent Bellais
 

Andere mochten auch (20)

Ag 2013 cecca asmerade
Ag 2013 cecca asmeradeAg 2013 cecca asmerade
Ag 2013 cecca asmerade
 
La fatigue touche la moitié des malades de la sclérose en plaques
La fatigue touche la moitié des malades de la sclérose en plaquesLa fatigue touche la moitié des malades de la sclérose en plaques
La fatigue touche la moitié des malades de la sclérose en plaques
 
Pilates para el cerebro
Pilates para el cerebroPilates para el cerebro
Pilates para el cerebro
 
2013 06 logement_autonome_jeunes
2013 06 logement_autonome_jeunes2013 06 logement_autonome_jeunes
2013 06 logement_autonome_jeunes
 
La tribu himba
La tribu himbaLa tribu himba
La tribu himba
 
Hotel-montpellier-mariage-2010
Hotel-montpellier-mariage-2010Hotel-montpellier-mariage-2010
Hotel-montpellier-mariage-2010
 
Capes theatre
Capes theatreCapes theatre
Capes theatre
 
ACCOSS Lettre Circulaire n˚2015-0000042 - stagiaire
ACCOSS Lettre Circulaire n˚2015-0000042 - stagiaireACCOSS Lettre Circulaire n˚2015-0000042 - stagiaire
ACCOSS Lettre Circulaire n˚2015-0000042 - stagiaire
 
Storytelling et Mind-Mapping valorisent vos Savoirs
Storytelling et Mind-Mapping valorisent vos SavoirsStorytelling et Mind-Mapping valorisent vos Savoirs
Storytelling et Mind-Mapping valorisent vos Savoirs
 
Systemèmes d' échafaudages (FR)
Systemèmes d' échafaudages (FR)Systemèmes d' échafaudages (FR)
Systemèmes d' échafaudages (FR)
 
Maquetes
MaquetesMaquetes
Maquetes
 
Sis històries en passat perfet
Sis històries en passat perfetSis històries en passat perfet
Sis històries en passat perfet
 
Presentación: Héctor Faúndez Ledezma, Derechos Humanos
Presentación: Héctor Faúndez Ledezma, Derechos HumanosPresentación: Héctor Faúndez Ledezma, Derechos Humanos
Presentación: Héctor Faúndez Ledezma, Derechos Humanos
 
Guide pratique du créateur - APCE 2015 07
Guide pratique du créateur - APCE 2015 07Guide pratique du créateur - APCE 2015 07
Guide pratique du créateur - APCE 2015 07
 
06 excuse convaincante-__
06   excuse convaincante-__06   excuse convaincante-__
06 excuse convaincante-__
 
La fin d'un_mythe
La fin d'un_mytheLa fin d'un_mythe
La fin d'un_mythe
 
Presentación1
Presentación1Presentación1
Presentación1
 
Modelo de Negocio 2
Modelo de Negocio 2Modelo de Negocio 2
Modelo de Negocio 2
 
Une expérience en live : la classe virtuelle
Une expérience en live : la classe virtuelleUne expérience en live : la classe virtuelle
Une expérience en live : la classe virtuelle
 
Stma. trinidad c
Stma. trinidad cStma. trinidad c
Stma. trinidad c
 

Ähnlich wie Owf 2013 rii panorama leroy

Automatisation des tests - objectifs et concepts - partie 2
Automatisation des tests  - objectifs et concepts - partie 2Automatisation des tests  - objectifs et concepts - partie 2
Automatisation des tests - objectifs et concepts - partie 2Christophe Rochefolle
 
Contrôle de la qualité logiciel
Contrôle de la qualité logicielContrôle de la qualité logiciel
Contrôle de la qualité logicielSylvain Leroy
 
Test de logiciels
Test de logiciels Test de logiciels
Test de logiciels Bilel Abed
 
2-Cours de Géniel Logiciel
2-Cours de Géniel Logiciel2-Cours de Géniel Logiciel
2-Cours de Géniel Logiciellauraty3204
 
Vhdl cours
Vhdl coursVhdl cours
Vhdl courssgdaim
 
Introduction à NetLogo
Introduction à NetLogoIntroduction à NetLogo
Introduction à NetLogoAlvaro Gil
 
Presentation BMIA
Presentation BMIAPresentation BMIA
Presentation BMIAPMarsaud
 
Scikit learn: apprentissage statistique en Python
Scikit learn: apprentissage statistique en PythonScikit learn: apprentissage statistique en Python
Scikit learn: apprentissage statistique en PythonGael Varoquaux
 
Soirée du Test Logiciel - Intelligence Artificielle dans le test - J. VAN QUA...
Soirée du Test Logiciel - Intelligence Artificielle dans le test - J. VAN QUA...Soirée du Test Logiciel - Intelligence Artificielle dans le test - J. VAN QUA...
Soirée du Test Logiciel - Intelligence Artificielle dans le test - J. VAN QUA...TelecomValley
 
Javascript : que fait ce code?
Javascript : que fait ce code?Javascript : que fait ce code?
Javascript : que fait ce code?Ruau Mickael
 
Les bases de la programmation en JAVA
Les bases de la programmation  en JAVA   Les bases de la programmation  en JAVA
Les bases de la programmation en JAVA Asmaa BENGUEDDACH
 
Le Machine Learning pour lutter contre les menaces en termes de Cybersécurité...
Le Machine Learning pour lutter contre les menaces en termes de Cybersécurité...Le Machine Learning pour lutter contre les menaces en termes de Cybersécurité...
Le Machine Learning pour lutter contre les menaces en termes de Cybersécurité...Philippe Beraud
 

Ähnlich wie Owf 2013 rii panorama leroy (20)

Cours1.pptx
Cours1.pptxCours1.pptx
Cours1.pptx
 
Automatisation des tests - objectifs et concepts - partie 2
Automatisation des tests  - objectifs et concepts - partie 2Automatisation des tests  - objectifs et concepts - partie 2
Automatisation des tests - objectifs et concepts - partie 2
 
Contrôle de la qualité logiciel
Contrôle de la qualité logicielContrôle de la qualité logiciel
Contrôle de la qualité logiciel
 
Test de logiciels
Test de logiciels Test de logiciels
Test de logiciels
 
Metrique
MetriqueMetrique
Metrique
 
Support programmation orientée aspect mohamed youssfi (aop)
Support programmation orientée aspect mohamed youssfi (aop)Support programmation orientée aspect mohamed youssfi (aop)
Support programmation orientée aspect mohamed youssfi (aop)
 
2-Cours de Géniel Logiciel
2-Cours de Géniel Logiciel2-Cours de Géniel Logiciel
2-Cours de Géniel Logiciel
 
Lustre
LustreLustre
Lustre
 
Vhdl cours
Vhdl coursVhdl cours
Vhdl cours
 
Introduction à NetLogo
Introduction à NetLogoIntroduction à NetLogo
Introduction à NetLogo
 
Presentation BMIA
Presentation BMIAPresentation BMIA
Presentation BMIA
 
Scikit learn: apprentissage statistique en Python
Scikit learn: apprentissage statistique en PythonScikit learn: apprentissage statistique en Python
Scikit learn: apprentissage statistique en Python
 
Soirée du Test Logiciel - Intelligence Artificielle dans le test - J. VAN QUA...
Soirée du Test Logiciel - Intelligence Artificielle dans le test - J. VAN QUA...Soirée du Test Logiciel - Intelligence Artificielle dans le test - J. VAN QUA...
Soirée du Test Logiciel - Intelligence Artificielle dans le test - J. VAN QUA...
 
Test logiciel
Test logicielTest logiciel
Test logiciel
 
Javascript : que fait ce code?
Javascript : que fait ce code?Javascript : que fait ce code?
Javascript : que fait ce code?
 
La programmation fonctionnelle en javascript / PF
La programmation fonctionnelle en javascript / PFLa programmation fonctionnelle en javascript / PF
La programmation fonctionnelle en javascript / PF
 
Les bases de la programmation en JAVA
Les bases de la programmation  en JAVA   Les bases de la programmation  en JAVA
Les bases de la programmation en JAVA
 
Algorithmique
AlgorithmiqueAlgorithmique
Algorithmique
 
Le Machine Learning pour lutter contre les menaces en termes de Cybersécurité...
Le Machine Learning pour lutter contre les menaces en termes de Cybersécurité...Le Machine Learning pour lutter contre les menaces en termes de Cybersécurité...
Le Machine Learning pour lutter contre les menaces en termes de Cybersécurité...
 
Apprentissage du java
Apprentissage du javaApprentissage du java
Apprentissage du java
 

Mehr von Patrick MOREAU

Aristote reproductibilite des resultats
Aristote reproductibilite des resultatsAristote reproductibilite des resultats
Aristote reproductibilite des resultatsPatrick MOREAU
 
Captronic grenoble 01102014 version presentee
Captronic grenoble 01102014 version presenteeCaptronic grenoble 01102014 version presentee
Captronic grenoble 01102014 version presenteePatrick MOREAU
 
Owf 2013 rii why paskevich speaker3
Owf 2013 rii why paskevich speaker3Owf 2013 rii why paskevich speaker3
Owf 2013 rii why paskevich speaker3Patrick MOREAU
 
Owf 2013 rii veri t fontaine speaker4
Owf 2013 rii veri t fontaine speaker4Owf 2013 rii veri t fontaine speaker4
Owf 2013 rii veri t fontaine speaker4Patrick MOREAU
 
Owf 2013 rii intro moreau
Owf 2013 rii intro moreauOwf 2013 rii intro moreau
Owf 2013 rii intro moreauPatrick MOREAU
 
Owf 2013 rii coccinelle muller speaker 1
Owf 2013 rii coccinelle muller speaker 1Owf 2013 rii coccinelle muller speaker 1
Owf 2013 rii coccinelle muller speaker 1Patrick MOREAU
 
Owf 2013 rii alter go speaker 5
Owf 2013 rii alter go speaker 5 Owf 2013 rii alter go speaker 5
Owf 2013 rii alter go speaker 5 Patrick MOREAU
 
Owf 2013 rii moose speaker 2
Owf 2013 rii moose speaker 2Owf 2013 rii moose speaker 2
Owf 2013 rii moose speaker 2Patrick MOREAU
 

Mehr von Patrick MOREAU (8)

Aristote reproductibilite des resultats
Aristote reproductibilite des resultatsAristote reproductibilite des resultats
Aristote reproductibilite des resultats
 
Captronic grenoble 01102014 version presentee
Captronic grenoble 01102014 version presenteeCaptronic grenoble 01102014 version presentee
Captronic grenoble 01102014 version presentee
 
Owf 2013 rii why paskevich speaker3
Owf 2013 rii why paskevich speaker3Owf 2013 rii why paskevich speaker3
Owf 2013 rii why paskevich speaker3
 
Owf 2013 rii veri t fontaine speaker4
Owf 2013 rii veri t fontaine speaker4Owf 2013 rii veri t fontaine speaker4
Owf 2013 rii veri t fontaine speaker4
 
Owf 2013 rii intro moreau
Owf 2013 rii intro moreauOwf 2013 rii intro moreau
Owf 2013 rii intro moreau
 
Owf 2013 rii coccinelle muller speaker 1
Owf 2013 rii coccinelle muller speaker 1Owf 2013 rii coccinelle muller speaker 1
Owf 2013 rii coccinelle muller speaker 1
 
Owf 2013 rii alter go speaker 5
Owf 2013 rii alter go speaker 5 Owf 2013 rii alter go speaker 5
Owf 2013 rii alter go speaker 5
 
Owf 2013 rii moose speaker 2
Owf 2013 rii moose speaker 2Owf 2013 rii moose speaker 2
Owf 2013 rii moose speaker 2
 

Owf 2013 rii panorama leroy

  • 1. Les outils de v´erification: `a la rescousse du logiciel fiable Xavier Leroy Inria Paris-Rocquencourt Rencontre Inria-industrie, 2013-10-04
  • 2. La qualit´e du logiciel `a l’Inria De nombreux travaux sur diff´erentes facettes du probl`eme : G´enie logiciel : approches classiques (ing´eni´erie dirig´ee par les mod`eles) ou pas. Langages de programmation : langages fonctionnels (OCaml), langages r´eactifs, langages d´edi´es (domain-specific languages). V´erification et validation : les outils de v´erification formelle comme alternative au test (cet expos´e). Fondations : d´emonstration automatique (Alt-Ergo, VeriT), interactive (Coq) ; s´emantiques formelles de langages comme C, Javascript, . . .
  • 3. Les domaines d’application Historiquement : le logiciel embarqu´e critique o`u sont en jeu des vies humaines (a´eronautique, ferroviaire) ou des int´erˆets ´economiques majeurs (cartes `a puce). En plein essort : le logiciel d’infrastructure syst`eme et r´eseaux (Linux, Windows, Apache, OpenSSL, . . . ). Demain ? des logiciels utilisateurs grand public (navigateurs Web, applis smartphones, applis Web) notamment pour la confidentialit´e et le respect de la vie priv´ee.
  • 4. La v´erification M´ethode dominante aujourd’hui : le test (mˆeme `a de tr`es haut niveaux d’exigence, p.ex. DO-178). Une m´ethode qui atteint ses limites : • Exigences r´eglementaires : certaines normes requi`erent des garanties plus fortes (Crit`eres Communs niveau EAL7). • Difficult´es `a couvrir l’ensemble d’un logiciel complexe (notamment la bonne gestion des entr´ees erron´ees). • Coˆuts consid´erables pour construire la suite de tests et pour l’administrer.
  • 5. V´erification et validation Que faire lorsque le test ne suffit plus ? R´eflexe de l’ing´enieur : utiliser des math´ematiques ! R´eflexe de l’informaticien : se faire aider par la machine ! → Les outils de v´erification formelle de code.
  • 6. La v´erification formelle de logiciel ´Etablir des propri´et´es de sˆuret´e ou de s´ecurit´e du logiciel qui sont vraies • de toute ex´ecution possible du logiciel ; • pour toutes les valeurs possibles des entr´ees ; • sans ex´ecuter le logiciel ; • en temps fini et raisonnable. Deux exemples dans la suite : • Analyse statique de valeurs. • V´erification d´eductive (preuve de programmes). Les fondements de ces approches sont connus depuis longtemps (preuve de programmes : 1969 ; interpr´etation abstraite : 1977 ; model checking : 1981) mais c’est l’apparition r´ecente d’outils de v´erification qui les rend praticables.
  • 7. L’analyse statique de valeurs Approximer (par un sur-ensemble) toutes les valeurs que peuvent prendre les variables et les cases m´emoire d’un programme pendant toutes ses ex´ecutions. En d´eduire que le programme n’a pas de comportement dangereux.
  • 8. L’analyse statique de valeurs Approximer (par un sur-ensemble) toutes les valeurs que peuvent prendre les variables et les cases m´emoire d’un programme pendant toutes ses ex´ecutions. En d´eduire que le programme n’a pas de comportement dangereux.
  • 9. Exemple d’analyse statique unsigned char entrees[10]; double table[256]; int i, somme, moyenne; somme = 0; for (i = 0; i < 10; i++) { somme += entrees[i]; // somme ∈ [0, 2550] } moyenne = somme / 10; // moyenne ∈ [0, 255] return table[moyenne]; // acc`es dans les bornes
  • 10. Vraies et fausses alarmes Vraie alarme Fausse alarme (comportement dangereux) (analyse pas assez pr´ecise) Approximation plus fine (poly`edre au lieu de rectangle) : pas d’alarme
  • 11. Propri´et´es garanties par analyse statique Principalement : l’absence d’erreurs `a l’ex´ecution. • Tableaux et pointeurs : • Pas d’acc`es hors-bornes. • Pas de d´er´ef´erencement du pointeur nul. • Pas d’acc`es apr`es un free ; pas de double free. • Contraintes d’alignement du processeur. • Entiers : • Pas de division par z´ero. • Pas de d´ebordements arithm´etiques. • Flottants : • Pas de d´ebordements arithm´etiques (infinis). • Pas d’op´erations ind´efinies (not-a-number).
  • 12. Diff´erents types d’analyses de valeurs Analyses non-relationnelles : propri´et´es d’une seule variable. • De type num´erique : intervalle de variation x ∈ [a, b] ; congruences x mod N = 0. • De type pointeur : validit´e des acc`es m´emoire, non-aliasing entre pointeurs. Analyses relationnelles : invariants entre plusieurs variables. (Exemple : poly`edres = in´egalit´es lin´eaires ax + by ≤ c.) Analyses de propri´et´es non fonctionnelles : • Consommation m´emoire. • Temps d’ex´ecution (WCET). • Flots d’information.
  • 13. Analyse de temps d’ex´ecution : aiT WCET
  • 14. Quelques outils d’analyse statique Outils g´en´eralistes : • Coverity • MathWorks Polyspace verifier. • Frama-C value analyzer. Outils sp´ecialis´es `a un domaine d’application : • Microsoft Static Driver Verifier (code syst`eme Windows) • Astr´ee (codes de contrˆole-commande). • Fluctuat (analyse symbolique des erreurs en flottants). Outils op´erant sur le code machine apr`es compilation : • aiT WCET, aiT StackAnalyzer.
  • 15. V´erification d´eductive (preuve de programmes) Annoter le programme avec des formules logiques : • Pr´econditions (exigences sur les arguments de fonctions) • Postconditions (garanties sur les r´esultats de fonctions) • Invariants de boucles. V´erifier que : • Pour chaque fonction, pr´econditions impliquent postconditions. • Pour chaque appel de fonction, les pr´econditions sont satisfaites. Outillage : • G´en´erateurs d’obligations de v´erifications. • D´emonstrateurs automatiques.
  • 16. Exemple de v´erification d´eductive Recherche dichotomique dans une table. int binary_search(long t[], int n, long v) { int l = 0, u = n-1; while (l <= u) { int m = l + (u - l) / 2; if (t[m] < v) l = m + 1; else if (t[m] > v) u = m - 1; else return m; } return -1; }
  • 17. Sp´ecification des pr´e- et post-conditions Dans le langage ACSL de l’outil Frama-C : /*@ requires n >= 0 && valid_range(t,0,n-1); @ behavior success: @ assumes // array t is sorted in increasing order @ forall integer k1, k2; @ 0 <= k1 <= k2 <= n-1 ==> t[k1] <= t[k2]; @ assumes // v appears somewhere in the array t @ exists integer k; 0 <= k <= n-1 && t[k] == v; @ ensures 0 <= result <= n-1 && t[result] == v; @ behavior failure: @ assumes // v does not appear anywhere in the array t @ forall integer k; 0 <= k <= n-1 ==> t[k] != v; @ ensures result == -1; @*/
  • 18. Sp´ecification de l’invariant de boucle int binary_search(long t[], int n, long v) { int l = 0, u = n-1; /*@ loop invariant 0 <= l && u <= n-1; @ for success: @ loop invariant @ forall integer k; @ 0 <= k < n && t[k] == v ==> l <= k <= u; @ loop variant u-l; @*/ while (l <= u) { int m = l + (u - l) / 2; if (t[m] < v) l = m + 1; else if (t[m] > v) u = m - 1; else return m; } return -1; }
  • 19. Production et preuve des obligations
  • 20. Comparaison analyse statique / v´erification d´eductive Analyse statique V´erification d´eductive Propri´et´es garanties Absence d’erreurs `a l’ex´ecution Propri´et´es fonctionnelles arbitrairement complexes Annotations manuelles Pas ou tr`es peu Beaucoup Passage `a l’´echelle 105–106 lignes 102–103 lignes
  • 21. Outils et exemples Quelques outils de v´erification d´eductive : • Pour Java : KeYs • Pour C# : Spec# / Boogie • Pour C : Caveat, Frama-C / WP Quelques exemples de v´erifications d´eductives de grande taille : • L4.verified (NICTA, Australie) : v´erification du micro-noyau s´ecuris´e seL4 (8000 lignes). • CompCert (Inria) : v´erification d’un compilateur optimisant pour le langage C.
  • 22. Conclusions Des fondations th´eoriques d´ej`a anciennes . . . . . . qui sont devenues praticables ces 10 derni`eres ann´ees. Une premi`ere g´en´eration d’outils disponible . . . . . . qui commencent `a ˆetre utilis´es pour le logiciel critique embarqu´e . . . et ne demandent qu’`a ˆetre essay´es dans d’autres domaines. Un domaine o`u l’industrie europ´eenne est en pointe. . . . . . et o`u la recherche acad´emique est tr`es active.
  • 23. Quelques directions de travail Prise en compte du parall´elisme `a m´emoire partag´ee : • Analyse statique (absence de data races ; WCET). • V´erification d´eductive (logiques de s´eparation). • Formalisation des mod`eles m´emoires faibles impl´ement´es par les multicoeurs. Traiter d’autres langages que C & Java. V´erification fine des calculs flottants. Vers une v´erification formelle des outils de g´en´eration de code et de v´erification.