Peut-on avoir confiance en l’informatique ? Rene´ David et Christophe Raffalli www.lama.univ-savoie.fr
Mai 2007
Introduction
` de l’informatique Progres ´ e´ multipliees ´ Depuis 20 ans les performances des ordinateurs ont et ´ en 1983 est par 10.000. Un calcul qui aurait pris une annee maintenant effectue´ en moins d’une heure. ´ Le revers de la medaille ` est elev ´ ee ´ : la fiabilite´ des systemes ` La ranc¸on de ce progres ´ e´ neglig ´ ´ informatiques a et ee. ´ Les ordinateurs se bloquent, les sites Internet se deconnectent ... ´ Les budgets de maintenance, de reparation et de fonctionnement ´ ´ depassent les couts et logiciels. ˆ totaux en materiel Il y a des bugs !
R.David - C.Raffalli
Avoir confiance en l’informatique ?
Mai 2007
2 / 78
Introduction
` de l’informatique Progres ´ e´ multipliees ´ Depuis 20 ans les performances des ordinateurs ont et ´ en 1983 est par 10.000. Un calcul qui aurait pris une annee maintenant effectue´ en moins d’une heure. ´ Le revers de la medaille ` est elev ´ ee ´ : la fiabilite´ des systemes ` La ranc¸on de ce progres ´ e´ neglig ´ ´ informatiques a et ee. ´ Les ordinateurs se bloquent, les sites Internet se deconnectent ... ´ Les budgets de maintenance, de reparation et de fonctionnement ´ ´ depassent les couts et logiciels. ˆ totaux en materiel Il y a des bugs !
R.David - C.Raffalli
Avoir confiance en l’informatique ?
Mai 2007
2 / 78
Introduction
` de l’informatique Progres ´ e´ multipliees ´ Depuis 20 ans les performances des ordinateurs ont et ´ en 1983 est par 10.000. Un calcul qui aurait pris une annee maintenant effectue´ en moins d’une heure. ´ Le revers de la medaille ` est elev ´ ee ´ : la fiabilite´ des systemes ` La ranc¸on de ce progres ´ e´ neglig ´ ´ informatiques a et ee. ´ Les ordinateurs se bloquent, les sites Internet se deconnectent ... ´ Les budgets de maintenance, de reparation et de fonctionnement ´ ´ depassent les couts et logiciels. ˆ totaux en materiel Il y a des bugs !
R.David - C.Raffalli
Avoir confiance en l’informatique ?
Mai 2007
2 / 78
Introduction
` de l’informatique Progres ´ e´ multipliees ´ Depuis 20 ans les performances des ordinateurs ont et ´ en 1983 est par 10.000. Un calcul qui aurait pris une annee maintenant effectue´ en moins d’une heure. ´ Le revers de la medaille ` est elev ´ ee ´ : la fiabilite´ des systemes ` La ranc¸on de ce progres ´ e´ neglig ´ ´ informatiques a et ee. ´ Les ordinateurs se bloquent, les sites Internet se deconnectent ... ´ Les budgets de maintenance, de reparation et de fonctionnement ´ ´ depassent les couts et logiciels. ˆ totaux en materiel Il y a des bugs !
R.David - C.Raffalli
Avoir confiance en l’informatique ?
Mai 2007
2 / 78
Introduction
` de l’informatique Progres ´ e´ multipliees ´ Depuis 20 ans les performances des ordinateurs ont et ´ en 1983 est par 10.000. Un calcul qui aurait pris une annee maintenant effectue´ en moins d’une heure. ´ Le revers de la medaille ` est elev ´ ee ´ : la fiabilite´ des systemes ` La ranc¸on de ce progres ´ e´ neglig ´ ´ informatiques a et ee. ´ Les ordinateurs se bloquent, les sites Internet se deconnectent ... ´ Les budgets de maintenance, de reparation et de fonctionnement ´ ´ depassent les couts et logiciels. ˆ totaux en materiel Il y a des bugs !
R.David - C.Raffalli
Avoir confiance en l’informatique ?
Mai 2007
2 / 78
Introduction
R.David - C.Raffalli
Avoir confiance en l’informatique ?
Mai 2007
3 / 78
Introduction
Plan 1
` Breve histoire de l’informatique
2
Quelques exemples de gros « bugs »
3
Qu’est ce qu’un bug ?
4
Pourquoi traquer les bugs, c’est difficile ?
5
Qu’est ce que l’absence de bug ?
6
Les solutions actuelles
7 8
´ Logiciels et preuves mathematiques Conclusion
R.David - C.Raffalli
Avoir confiance en l’informatique ?
Mai 2007
4 / 78
` Breve histoire de l’informatique
Plan 1
` Breve histoire de l’informatique
2
Quelques exemples de gros « bugs »
3
Qu’est ce qu’un bug ?
4
Pourquoi traquer les bugs, c’est difficile ?
5
Qu’est ce que l’absence de bug ?
6
Les solutions actuelles
7 8
´ Logiciels et preuves mathematiques Conclusion
R.David - C.Raffalli
Avoir confiance en l’informatique ?
Mai 2007
5 / 78
` Breve histoire de l’informatique
(1) Les hommes Alan Turing (1912 - 1954) Angleterre
` theorique ´ Modele des ordinateurs ´ Logique Mathematique Machine de Turing R.David - C.Raffalli
Avoir confiance en l’informatique ?
Mai 2007
6 / 78
` Breve histoire de l’informatique
(1) Les hommes Alonzo Church (1903 - 1995) USA
` theorique ´ Modele de la programmation ˆ Le λ-calcul, ancetre des langages fonctionnels (Lisp, ML, ...) R.David - C.Raffalli
Avoir confiance en l’informatique ?
Mai 2007
7 / 78
` Breve histoire de l’informatique
(1) Les hommes John von Newmann (1903 - 1957) USA
Concepteur des ordinateurs modernes Un pionnier de l’informatique Il a aussi introduit les automates cellulaires et donc le calcul ` parallele. R.David - C.Raffalli
Avoir confiance en l’informatique ?
Mai 2007
8 / 78
` Breve histoire de l’informatique
´ (2) Le materiel ` ´ ´ Les premieres calculatrices mecaniques (elles font les 4 operations)
La machine de Pascal (1650)
La machine de Leibniz (1694) R.David - C.Raffalli
Avoir confiance en l’informatique ?
Mai 2007
9 / 78
` Breve histoire de l’informatique
´ (2) Le materiel ` machine programmable La premiere
La machine de Jacquard (1801), elle ne servait pas a` calculer !
R.David - C.Raffalli
Avoir confiance en l’informatique ?
Mai 2007
10 / 78
` Breve histoire de l’informatique
´ (2) Le materiel ` machine (presque) programmable pour calculer des La premiere ˆ polynomes
La machine de C. Babbage (1833), elle n’a jamais vraiment fonctionne´ R.David - C.Raffalli
Avoir confiance en l’informatique ?
Mai 2007
11 / 78
` Breve histoire de l’informatique
´ (2) Le materiel ` machine electro-m ´ ´ La premiere ecanique
La machine de H. Aiken (1943), elle pesait 5 tonnes
R.David - C.Raffalli
Avoir confiance en l’informatique ?
Mai 2007
12 / 78
` Breve histoire de l’informatique
´ (2) Le materiel ´ Les machines electroniques
(vers 1950)
R.David - C.Raffalli
Avoir confiance en l’informatique ?
Mai 2007
13 / 78
` Breve histoire de l’informatique
´ (2) Le materiel ´ Les machines electroniques (suite)
´ (vers 1960) Machine utilisant des cartes perforees
R.David - C.Raffalli
Avoir confiance en l’informatique ?
Mai 2007
14 / 78
` Breve histoire de l’informatique
´ (2) Le materiel Les machines modernes
´ es ´ ... Depuis 1980 les machines utilisent des circuits integr
R.David - C.Raffalli
Avoir confiance en l’informatique ?
Mai 2007
15 / 78
` Breve histoire de l’informatique
(3) Le logiciel
Les programmes La notion de programme, d’algorithme existait bien avant que l’on ne sache construire des ordinateurs : algorithme d’Euclide (325 - 265 BC, Alexandrie), Al Khuwarizmi (780 - 850).
R.David - C.Raffalli
Avoir confiance en l’informatique ?
Mai 2007
16 / 78
` Breve histoire de l’informatique
(3) Le logiciel Un ordinateur ne fait que manipuler des 0 et 1 ´ Dans les annees 40 : on programme avec des 0 et des 1 et le fer a` souder. ´ ´ Debut des annees 50 : on programme en « assembleur », les instructions ont un nom. ´ Depuis la fin des annees 50 : on utilise des langages de programmation. Les langages de programmation ˆ On utilise un langage lisible par l’etre humain et un « compilateur » pour traduire en langage machine.
R.David - C.Raffalli
Avoir confiance en l’informatique ?
Mai 2007
17 / 78
` Breve histoire de l’informatique
Les langages de programmation (classement chronologique)
Avant 1950 : Algorithmes et machines a` calculer : pas de langage. 1950 - 1960 : Fortran, Lisp, Cobol, Algol. 1960 - 1970 : Apl, Basic, Pl/1, Logo. 1970 - 1980 : Pascal, Prolog, SmallTalk, C, Ada, ... 1980 - 1990 : Dbase, C++, Eiffel, Mathematica, Maple, ... 1990 - 2000 : VisualBasic, Java, Php, Mysql, ...
R.David - C.Raffalli
Avoir confiance en l’informatique ?
Mai 2007
18 / 78
` Breve histoire de l’informatique
Les langages de programmation (classement par trait) ´ Langages imperatifs : APL - ASP - Assembleur - BASIC - C - Cobol Forth - Fortran - Limbo - Logo - Pascal - Perl PHP - ... Langages a` objets : 4D - C++ - D - Delphi - Eiffel - Groovy - Java Python - Ruby - Simula - Smalltalk - Visual Basic WinDev - ... Langages fonctionnels : Haskell - SML/OCaml - Lisp Common Lisp Scheme - XSLT - ... ´ Langages declaratifs : Clips - Prolog - Lambda-Prolog - ... Langages concurrents : Ada 95 - Erlang - ... Langage de balisage : TeX - LaTeX - HTML - SGML - XML - PHP - ...
R.David - C.Raffalli
Avoir confiance en l’informatique ?
Mai 2007
19 / 78
` Breve histoire de l’informatique
Les programmes ont des bugs !
´ Maurice Wilkes, l’un des createurs des ordinateurs (1949) ` que nous avons commence´ a` programmer, nous avons « Des ´ ´ decouvert, a` notre grande surprise, qu’il n’etait pas aussi facile d’obtenir des programmes corrects que nous le pensions. J’ai alors ´ ´ a` decouvrir ´ realis e´ qu’une grande partie de ma vie serait consacree des fautes dans mes propres programmes. »
R.David - C.Raffalli
Avoir confiance en l’informatique ?
Mai 2007
20 / 78
Quelques exemples de gros « bugs »
Plan 1
` histoire de l’informatique Breve
2
Quelques exemples de gros « bugs »
3
Qu’est ce qu’un bug ?
4
Pourquoi traquer les bugs, c’est difficile ?
5
Qu’est ce que l’absence de bug ?
6
Les solutions actuelles
7 8
´ Logiciels et preuves mathematiques Conclusion
R.David - C.Raffalli
Avoir confiance en l’informatique ?
Mai 2007
21 / 78
Quelques exemples de gros « bugs »
Quelques exemples de gros « Bugs »
Il y en a des milliers ... ˆ ´ Il y a meme des journaux qui repertorient tous ces bugs : Risk Digest, ...
R.David - C.Raffalli
Avoir confiance en l’informatique ?
Mai 2007
22 / 78
Quelques exemples de gros « bugs »
´ Ariane 5 L’explosion de la fusee
R.David - C.Raffalli
Avoir confiance en l’informatique ?
Mai 2007
23 / 78
Quelques exemples de gros « bugs »
´ Ariane 5 L’explosion de la fusee
Le premier tir eut lieu le 4 juin 1996 a` Kourou. Le lanceur fut ´ ` approximativement 40 secondes de vol. detruit apres ´ L’echec est duˆ a` une erreur informatique : un programme d’un ´ e´ composant (un gyroscope) provenant d’Ariane 4 n’a pas et ´ re-teste.
R.David - C.Raffalli
Avoir confiance en l’informatique ?
Mai 2007
24 / 78
Quelques exemples de gros « bugs »
´ Ariane 5 L’explosion de la fusee
´ Le programme etait destine´ a` recalibrer les gyroscopes. Ce cas ´ de figure, envisage´ initialement pour Ariane 3, etait depuis ´ longtemps exclu des procedures de tir. ´ e´ provoquee ´ par un programme qui ne servait a` rien. L’erreur a et C’est l’une des erreurs informatiques les plus couteuses de ˆ l’histoire.
R.David - C.Raffalli
Avoir confiance en l’informatique ?
Mai 2007
24 / 78
Quelques exemples de gros « bugs »
` guerre d’Irak : bug d’un missile patriot Premiere
R.David - C.Raffalli
Avoir confiance en l’informatique ?
Mai 2007
25 / 78
Quelques exemples de gros « bugs »
Bug d’un missile patriot
´ Dans la nuit du 25/02/91, un missile Patriot operant de Dhahran (en Arabie Saoudite) n’a pas pu intercepter un Scud. ´ Le missile iraquien a tue´ 28 soldats americains et en a blesse´ 98. ` ´ ` ´ Le probleme etait un probleme informatique : la place memoire ´ ´ prevue pour stocker la vitesse de la cible n’etait pas suffisante et cela a donne´ des erreurs d’arrondis ...
R.David - C.Raffalli
Avoir confiance en l’informatique ?
Mai 2007
26 / 78
Quelques exemples de gros « bugs »
Mars Climate Orbiter a loupe´ sa cible
R.David - C.Raffalli
Avoir confiance en l’informatique ?
Mai 2007
27 / 78
Quelques exemples de gros « bugs »
Mars Climate Orbiter a loupe´ sa cible
´ de mesure au sol et dans la sonde n’etaient ´ Les unites pas les ˆ ´ systeme ` ´ memes : anglaise d’un cote, metrique de l’autre. On avait repris un logiciel venant de Mars global Surveyor et pas ´ e´ la compatibilite. ´ verifi ´ ´ Ce genre de verification etaient faites pour des missions ´ edentes ´ ´ a` cause de coupures budgetaires. ´ prec mais supprimees
R.David - C.Raffalli
Avoir confiance en l’informatique ?
Mai 2007
28 / 78
Quelques exemples de gros « bugs »
` ´ ´ Problemes medicaux avec le Therac-25
R.David - C.Raffalli
Avoir confiance en l’informatique ?
Mai 2007
29 / 78
Quelques exemples de gros « bugs »
´ Bug du Therac-25
´ Le 3 juin 1985, en Georgie, une femme de 61 ans atteinte d’un ´ cancer du sein debuta un traitement avec le Therac-25, une ´ machine de radiotherapie. ` le traitement, la patiente souffrit de douleurs dans la Peu apres ´ ´ Elle continua a` souffrir de ses brulures region irradiee. et son bras ˆ ´ resta paralyse. Quelques mois plus tard, une autre personne mourut des suites ´ des blessures occasionnees.
R.David - C.Raffalli
Avoir confiance en l’informatique ?
Mai 2007
30 / 78
Quelques exemples de gros « bugs »
´ Bug du Therac-25
´ ´ L’erreur etait un manque de fiabilite´ du logiciel gerant la machine. ´ Des depassements de capacite´ se produisaient et engendraient la ´ ´ ´ desactivation de certains tests de securit e. ´ L’ensemble etait programme´ en assembleur, un langage courant a` ´ ´ l’epoque mais difficile a` analyser et « debogguer » par rapport aux langages de plus haut niveau.
R.David - C.Raffalli
Avoir confiance en l’informatique ?
Mai 2007
30 / 78
Quelques exemples de gros « bugs »
Machine a` voter en Belgique
R.David - C.Raffalli
Avoir confiance en l’informatique ?
Mai 2007
31 / 78
Quelques exemples de gros « bugs »
Machine a` voter en Belgique
´ Le 18 mai 2003 a` Schaerbeek (Belgique), le decompte des voix ´ depasse ´ exprimees de plus de 4 000 le nombre d’inscrits dans la circonscription. ` probablement et ´ e´ Les experts concluent que « l’erreur a tres ´ par une inversion spontanee ´ et aleatoire ´ occasionnee d’un bit ». ´ ` ´ Ils ajoutent que « ce phenom ene est abondamment decrit dans la ´ ´ ´ litterature specialisee ». ´ Il ne l’est pas dans le code electoral ...
R.David - C.Raffalli
Avoir confiance en l’informatique ?
Mai 2007
32 / 78
Quelques exemples de gros « bugs »
Machine a` voter en Belgique
´ Le 18 mai 2003 a` Schaerbeek (Belgique), le decompte des voix ´ depasse ´ exprimees de plus de 4 000 le nombre d’inscrits dans la circonscription. ` probablement et ´ e´ Les experts concluent que « l’erreur a tres ´ par une inversion spontanee ´ et aleatoire ´ occasionnee d’un bit ». ´ ` ´ Ils ajoutent que « ce phenom ene est abondamment decrit dans la ´ ´ ´ litterature specialisee ». ´ Il ne l’est pas dans le code electoral ...
R.David - C.Raffalli
Avoir confiance en l’informatique ?
Mai 2007
32 / 78
Qu’est ce qu’un bug ?
Plan 1
` histoire de l’informatique Breve
2
Quelques exemples de gros « bugs »
3
Qu’est ce qu’un bug ?
4
Pourquoi traquer les bugs, c’est difficile ?
5
Qu’est ce que l’absence de bug ?
6
Les solutions actuelles
7 8
´ Logiciels et preuves mathematiques Conclusion
R.David - C.Raffalli
Avoir confiance en l’informatique ?
Mai 2007
33 / 78
Qu’est ce qu’un bug ?
Qu’est ce qu’un bug ?
Il s’est passe´ quelque-chose de ´ non souhaite, ´ non prevu, ...
R.David - C.Raffalli
Avoir confiance en l’informatique ?
Mai 2007
34 / 78
Qu’est ce qu’un bug ?
Qui est coupable ? ` A Fox et D Patterson - Pour la science 2003) (d’apres
Materiel : 15%
Logiciel : 34%
Humain : 51%
R.David - C.Raffalli
Avoir confiance en l’informatique ?
Mai 2007
35 / 78
Qu’est ce qu’un bug ?
Les erreurs humaines
´ Mauvaise comprehension de la documentation Erreurs de manipulation ....
R.David - C.Raffalli
Avoir confiance en l’informatique ?
Mai 2007
36 / 78
Qu’est ce qu’un bug ?
´ Les erreurs materiel
Panne d’un composant : un circuit a « grille´ » Erreur de communication, erreur de stockage : codes correcteurs d’erreurs. Les rayons cosmiques peuvent perturber le fonctionnement des machines. ˆ Erreur de conception : la puce ne fait pas ce qu’il faut ... meme si ` proche du bug on sait souvent « prouver » les circuits. Bug tres logiciel. ....
R.David - C.Raffalli
Avoir confiance en l’informatique ?
Mai 2007
37 / 78
Qu’est ce qu’un bug ?
´ Les erreurs materiel Les rayons cosmiques
Les rayons cosmiques provoquent des erreurs dans les ordinateurs. ` Ce sont les neutrons qui posent probleme. ` A` 10 kilometres d’altitude, il y a 10.000 neutrons qui traversent ` chaque centimetre carre´ par heure. Un chercheur du CNRS estime qu’un PC portable, en avion, a un risque de planter toutes les 5 heures.
R.David - C.Raffalli
Avoir confiance en l’informatique ?
Mai 2007
38 / 78
Qu’est ce qu’un bug ?
´ Les erreurs materiel Bug du pentium
´ En 1994, un chercheur decouvre un bug dans l’unite´ de valeur en virgule flottante du Pentium. ` Dans un premier temps, Intel nie le probleme mais ces erreurs ´ par d’autres dans les divisions sont rapidement confirmees personnes. ` (dans le silicium) L’erreur provient de l’initialisation incomplete d’une table de valeurs servant a` un nouvel algorithme plus rapide.
R.David - C.Raffalli
Avoir confiance en l’informatique ?
Mai 2007
39 / 78
Qu’est ce qu’un bug ?
´ Les erreurs materiel Bug du pentium
Si x = 4195835, y = 3145727 et z = x − yx × y ´ On devrait trouver 0 mais la puce repond 256. ´ ` Des organismes independants montrerent cependant le peu ´ ´ d’importance des consequences du bug et que l’effet etait ´ negligeable dans la plupart des utilisations.
R.David - C.Raffalli
Avoir confiance en l’informatique ?
Mai 2007
39 / 78
Qu’est ce qu’un bug ?
Les erreurs logiciel Les bugs logiciel Un programme qui ne fait pas ce que l’on veut.
Le reste de l’expose´ Qu’est ce que l’on veut ? Comment l’obtient-on ?
R.David - C.Raffalli
Avoir confiance en l’informatique ?
Mai 2007
40 / 78
Qu’est ce qu’un bug ?
Les erreurs logiciel Les bugs logiciel Un programme qui ne fait pas ce que l’on veut.
Les erreurs logiciel classiques ´ Diviser par zero ´ Depassement des bornes d’un tableau ` memoire ´ Acces non autorise´ ´ Utilisation d’une variable non initialisee Les erreurs d’arrondis dans les calculs Erreur « logique » (on ne calcule pas ce que l’on veut) ... R.David - C.Raffalli
Avoir confiance en l’informatique ?
Mai 2007
40 / 78
Qu’est ce qu’un bug ?
Les erreurs d’arrondis
En math (1050 + 1) − 1050 = 1 Pour un ordinateur (1050 + 1) − 1050 = 0
R.David - C.Raffalli
Avoir confiance en l’informatique ?
Mai 2007
41 / 78
Qu’est ce qu’un bug ?
Les erreurs d’arrondis
En math (1050 + 1) − 1050 = 1 Pour un ordinateur (1050 + 1) − 1050 = 0
R.David - C.Raffalli
Avoir confiance en l’informatique ?
Mai 2007
41 / 78
Qu’est ce qu’un bug ?
Erreurs d’arrondis a` la bourse de Vancouver
En 1982, on introduit un indice initialise´ a` 1000. ` chaque transaction, il est reactualis ´ ´ Apres e. 22 mois plus tard, sa valeur est a` 525. ´ La vraie valeur etait de 1099. Les erreurs d’arrondis (allant ˆ ´ ´ toujours dans le meme sens) s’etaient cumulees.
R.David - C.Raffalli
Avoir confiance en l’informatique ?
Mai 2007
42 / 78
Qu’est ce qu’un bug ?
Erreurs d’arrondis a` la bourse de Vancouver
En 1982, on introduit un indice initialise´ a` 1000. ` chaque transaction, il est reactualis ´ ´ Apres e. 22 mois plus tard, sa valeur est a` 525. ´ La vraie valeur etait de 1099. Les erreurs d’arrondis (allant ˆ ´ ´ toujours dans le meme sens) s’etaient cumulees.
R.David - C.Raffalli
Avoir confiance en l’informatique ?
Mai 2007
42 / 78
Qu’est ce qu’un bug ?
´ Erreur logique dans les elections au parlement de Schleswig-Holstein en 1992
` En Allemagne, pour avoir des sieges, un parti doit avoir au moins 5% des voix. ´ es ´ de 5%, obtiennent donc des elus. ´ Les verts, credit ´ En fait le pourcentage etait de 4.97% ...
R.David - C.Raffalli
Avoir confiance en l’informatique ?
Mai 2007
43 / 78
Qu’est ce qu’un bug ?
´ Erreur logique dans les elections au parlement de Schleswig-Holstein en 1992
` En Allemagne, pour avoir des sieges, un parti doit avoir au moins 5% des voix. ´ es ´ de 5%, obtiennent donc des elus. ´ Les verts, credit ´ En fait le pourcentage etait de 4.97% ...
R.David - C.Raffalli
Avoir confiance en l’informatique ?
Mai 2007
43 / 78
Pourquoi traquer les bugs, c’est difficile ?
Plan 1
` histoire de l’informatique Breve
2
Quelques exemples de gros « bugs »
3
Qu’est ce qu’un bug ?
4
Pourquoi traquer les bugs, c’est difficile ?
5
Qu’est ce que l’absence de bug ?
6
Les solutions actuelles
7 8
´ Logiciels et preuves mathematiques Conclusion
R.David - C.Raffalli
Avoir confiance en l’informatique ?
Mai 2007
44 / 78
Pourquoi traquer les bugs, c’est difficile ?
R.David - C.Raffalli
Avoir confiance en l’informatique ?
Mai 2007
45 / 78
Pourquoi traquer les bugs, c’est difficile ?
R.David - C.Raffalli
Avoir confiance en l’informatique ?
Mai 2007
45 / 78
Pourquoi traquer les bugs, c’est difficile ?
(1) Les limitations dues a` la vitesse Question : ´ ´ Combien d’operations un ordinateur qui fait 1014 operations a` la seconde qui calculerait depuis le Big Bang aurait-il fait ? ´ eralement ´ Il est gen estime´ que notre cerveau, avec ses 1011 neurones et 1015 ´ synapses, fait entre 1013 et 1019 operations a` la seconde.
´ Reponse : ´ ´ 1031 operations, c’est a` dire 1 suivi de 31 zeros ` grand ce qui est tres ˆ mais quand meme trop petit ...
R.David - C.Raffalli
Avoir confiance en l’informatique ?
Mai 2007
46 / 78
Pourquoi traquer les bugs, c’est difficile ?
(1) Les limitations dues a` la vitesse Question : ´ ´ Combien d’operations un ordinateur qui fait 1014 operations a` la seconde qui calculerait depuis le Big Bang aurait-il fait ? ´ eralement ´ Il est gen estime´ que notre cerveau, avec ses 1011 neurones et 1015 ´ synapses, fait entre 1013 et 1019 operations a` la seconde.
´ Reponse : ´ ´ 1031 operations, c’est a` dire 1 suivi de 31 zeros ` grand ce qui est tres ˆ mais quand meme trop petit ...
R.David - C.Raffalli
Avoir confiance en l’informatique ?
Mai 2007
46 / 78
Pourquoi traquer les bugs, c’est difficile ?
(1) Les limitations dues a` la vitesse Question : ´ ´ Combien d’operations un ordinateur qui fait 1014 operations a` la seconde qui calculerait depuis le Big Bang aurait-il fait ? ´ eralement ´ Il est gen estime´ que notre cerveau, avec ses 1011 neurones et 1015 ´ synapses, fait entre 1013 et 1019 operations a` la seconde.
´ Reponse : ´ ´ 1031 operations, c’est a` dire 1 suivi de 31 zeros ` grand ce qui est tres ˆ mais quand meme trop petit ...
R.David - C.Raffalli
Avoir confiance en l’informatique ?
Mai 2007
46 / 78
Pourquoi traquer les bugs, c’est difficile ?
` ´ (2) Problemes indecidables ´ eme ` Theor ` ´ Il existe des problemes indecidables, c’est a` dire qu’il n’y a pas ´ eral ´ pour les resoudre. ´ d’algorithme gen
begin ... ... i := i + 1 ; ... ... end
R.David - C.Raffalli
ˆ ? Ce programme va-t-il s’arreter Ce programme va-t-il utiliser cette instruction ? ˆ Ce programme a-t-il exactement le meme comportement que tel autre ?
Avoir confiance en l’informatique ?
Mai 2007
47 / 78
Pourquoi traquer les bugs, c’est difficile ?
` (3) Complexite´ croissante des systemes
` ´ Taille des systemes : nombre de lignes de code (place memoire de Windows XP et Vista). ` ´ » (meme ˆ Systemes « distribues si ce n’est pas le cas des applications critiques).
R.David - C.Raffalli
Avoir confiance en l’informatique ?
Mai 2007
48 / 78
Pourquoi traquer les bugs, c’est difficile ?
´ (4) Preciser « ce que l’on veut » n’est pas si simple
Quelques examples : le passage a` niveau, le bug de l’an 2000, ´ de mesure pour Mars voyager. les unites
R.David - C.Raffalli
Avoir confiance en l’informatique ?
Mai 2007
49 / 78
Pourquoi traquer les bugs, c’est difficile ?
´ (5) Definir « ce que fait un programme » n’est pas si simple
´ On ne peut pas verifier qu’un programme fait « ce que l’on veut » si on ne sait pas ce que le programme fait. ´ Il faut donner un sens parfaitement precis aux programmes, ce ´ ´ qu’on appelle une « semantique mathematique ». ´ ´ De bons langages (avec une bonne « semantique ») reduisent le taux d’erreurs de fac¸on majeure.
R.David - C.Raffalli
Avoir confiance en l’informatique ?
Mai 2007
50 / 78
Pourquoi traquer les bugs, c’est difficile ?
(6) Rigidite´ du monde industriel
´ ` de la recherche dans le monde Difficile d’integrer les progres industriel. Les choix technologiques du monde industriel sont trop souvent ´ »: « spontanes pourquoi C++ et pas objective C, pourquoi Java et pas ML, pourquoi Perl. Il faut souvent attendre d’avoir des bugs majeurs pour promouvoir la recherche dans ce domaine.
R.David - C.Raffalli
Avoir confiance en l’informatique ?
Mai 2007
51 / 78
Qu’est ce que l’absence de bug ?
Plan 1
` histoire de l’informatique Breve
2
Quelques exemples de gros « bugs »
3
Qu’est ce qu’un bug ?
4
Pourquoi traquer les bugs, c’est difficile ?
5
Qu’est ce que l’absence de bug ?
6
Les solutions actuelles
7 8
´ Logiciels et preuves mathematiques Conclusion
R.David - C.Raffalli
Avoir confiance en l’informatique ?
Mai 2007
52 / 78
Qu’est ce que l’absence de bug ?
´ e´ L’absence de bug est parfois une propriet indispensable
´ dans les avions, les voitures ou les Pour les logiciels embarques ´ ´ appareils medicaux, la securit e´ est absolument fondamentale. Il n’est pas question de diffuser des versions plus ou moins ´ en demandant aux utilisateurs de tel ´ echarger ´ buggees les ` nouvelles versions quand on trouve un probleme.
R.David - C.Raffalli
Avoir confiance en l’informatique ?
Mai 2007
53 / 78
Qu’est ce que l’absence de bug ?
La norme ISO/CEI 9126
´ Elle decrit les exigences qualite´ des logiciels ´ Capacite´ fonctionnelle : Est-ce que le logiciel repond aux besoins ´ ? fonctionnels exprimes Fiabilite´ : Est-ce que le logiciel maintient son niveau de service ´ ´ dans des conditions precises et pendant une periode ´ ´ ? determin ee Facilite´ d’utilisation : Est-ce que le logiciel requiert peu d’effort a` l’utilisation ? ...
R.David - C.Raffalli
Avoir confiance en l’informatique ?
Mai 2007
54 / 78
Qu’est ce que l’absence de bug ?
´ ´ es ´ Absence de bugs = presence de propriet
ˆ pas de maniere ` inattendue. Ne plante pas = ne s’arrete Le logiciel a un comportement correct : certaines situations sont impossibles ; ´ enements ´ certains ev vont se produire.
R.David - C.Raffalli
Avoir confiance en l’informatique ?
Mai 2007
55 / 78
Qu’est ce que l’absence de bug ?
´ ´ es ´ Absence de bugs = presence de propriet
Solution ´ ´ ˆ aux M ATH EMATIQUES On decrit tout cela grace . ´ Les specifications ´ es ´ mathematiques ´ C’est le nom que l’on donne aux propriet qu’un ˆ programme doit satisfaire pour etre correct (sans bug). R.David - C.Raffalli
Avoir confiance en l’informatique ?
Mai 2007
55 / 78
Qu’est ce que l’absence de bug ?
Un exemple : le passage a` niveau
` ´ depuis N minutes. Si un train passe : les barrieres sont fermees ` Les barrieres sont parfois ouvertes ! Au moins P minutes entre une ouverture et une fermeture et un signal P minutes avant la fermeture !
R.David - C.Raffalli
Avoir confiance en l’informatique ?
Mai 2007
56 / 78
Qu’est ce que l’absence de bug ?
Un exemple : le passage a` niveau
` ´ depuis N minutes. Si un train passe : les barrieres sont fermees ` Les barrieres sont parfois ouvertes ! Au moins P minutes entre une ouverture et une fermeture et un signal P minutes avant la fermeture !
R.David - C.Raffalli
Avoir confiance en l’informatique ?
Mai 2007
56 / 78
Qu’est ce que l’absence de bug ?
Un exemple : le passage a` niveau
` ´ depuis N minutes. Si un train passe : les barrieres sont fermees ` Les barrieres sont parfois ouvertes ! Au moins P minutes entre une ouverture et une fermeture et un signal P minutes avant la fermeture !
R.David - C.Raffalli
Avoir confiance en l’informatique ?
Mai 2007
56 / 78
Qu’est ce que l’absence de bug ?
´ ˆ Les specifications sont utiles en elles memes
´ Les specifications formelles sont un cahier des charges fiable pour le logiciel. Bug de l’an 2000 ´ ` Les specifications ont mis (auraient du mettre ?) le probleme en ´ evidence. Mars orbiter ´ ` ´ e´ les unites. ´ Des specifications completes auraient precis
R.David - C.Raffalli
Avoir confiance en l’informatique ?
Mai 2007
57 / 78
Les solutions actuelles
Plan 1
` histoire de l’informatique Breve
2
Quelques exemples de gros « bugs »
3
Qu’est ce qu’un bug ?
4
Pourquoi traquer les bugs, c’est difficile ?
5
Qu’est ce que l’absence de bug ?
6
Les solutions actuelles
7 8
´ Logiciels et preuves mathematiques Conclusion
R.David - C.Raffalli
Avoir confiance en l’informatique ?
Mai 2007
58 / 78
Les solutions actuelles
Le test du logiciel
On produit un vecteur de tests : ´ une liste d’entrees, les sorties correspondantes.
´ ´ du vecteur. On verifie la sortie du programme sur chaque entree ˆ Les tests peuvent etre ´ ecrits a` la main, ´ er ´ es. ´ gen
R.David - C.Raffalli
Avoir confiance en l’informatique ?
Mai 2007
59 / 78
Les solutions actuelles
Exemple de l’ascenseur
´ Un immeuble de 9 etages + RDC ´ : etage ´ ´ Entree + boutons appuyes. Sortie : monte, descend, ne fait rien. ´ possibles. Il y a 10 × 220 ∼ 10 millions d’entrees Conclusion Le test complet est impossible.
R.David - C.Raffalli
Avoir confiance en l’informatique ?
Mai 2007
60 / 78
Les solutions actuelles
Exemple de l’ascenseur
´ Un immeuble de 9 etages + RDC ´ : etage ´ ´ Entree + boutons appuyes. Sortie : monte, descend, ne fait rien. ´ possibles. Il y a 10 × 220 ∼ 10 millions d’entrees Conclusion Le test complet est impossible.
R.David - C.Raffalli
Avoir confiance en l’informatique ?
Mai 2007
60 / 78
Les solutions actuelles
Les limites du test
Test exhaustif presque toujours impossible. Test partiel ⇒ risque de bugs. ´ er ´ es ´ a` la main ⇒ risque de bugs. Tests gen ´ er ´ es ´ automatiquement ⇒ un programme de plus avec Tests gen ses bugs !
R.David - C.Raffalli
Avoir confiance en l’informatique ?
Mai 2007
61 / 78
Les solutions actuelles
Le « model checking »
´ ´ 80. Introduit au debut des annees ` utilise´ pour la preuve de circuits. Tres ´ Ameliorations du test : ´ ´ Specification pour verifier le vecteur de tests. On ne teste pas tous les cas. Pour le passage a` niveau a` 2 voies : 2 cas au lieu de 4.
´ ` ´ Repose sur la theorie des modeles ⇒ fondement mathematique fiable.
R.David - C.Raffalli
Avoir confiance en l’informatique ?
Mai 2007
62 / 78
Les solutions actuelles
Le « model checking »
´ ´ 80. Introduit au debut des annees ` utilise´ pour la preuve de circuits. Tres ´ Ameliorations du test : ´ ´ Specification pour verifier le vecteur de tests. On ne teste pas tous les cas. Pour le passage a` niveau a` 2 voies : 2 cas au lieu de 4.
´ ` ´ Repose sur la theorie des modeles ⇒ fondement mathematique fiable.
R.David - C.Raffalli
Avoir confiance en l’informatique ?
Mai 2007
62 / 78
Les solutions actuelles
´ ´ Les langages plus evolu es
´ Les langages ne sont pas tous egaux : Assembleur < C < C++ < Java < ML Pourquoi ? 1 + "toto" : possible en C, pas en ML ! ´ eme, ` En ML ceci est un theor pas en Java !
R.David - C.Raffalli
Avoir confiance en l’informatique ?
Mai 2007
63 / 78
Les solutions actuelles
Les contraintes du langage augmentent la fiabilite´ ` memoire ´ ´ Acces illegal : ´ ´ Solution : entier different de adresse memoire. Une chaˆıne a` la place d’un entier : Solution : typage statique. ´ On utilise un objet que l’on a detruit : Solution : « garbage collector ». Nouveaux paradigmes programmes plus courts et plus clairs, moins de bugs, ´ ´ ´ reutilisation de codes eprouv es ⇒ programmes plus surs. ˆ Mais plus de contraintes ! R.David - C.Raffalli
Avoir confiance en l’informatique ?
Mai 2007
64 / 78
Les solutions actuelles
Comparaison C - OCaml En C
En OCaml
int valeur(expr e) { switch(e->tag) { constante : return valeur(e->u.cst) ; somme : return valeur(e->u.args.arg1) + valeur(e->u.args.arg2) ; ... }
R.David - C.Raffalli
let rec valeur = function | constante(n)-> n | Somme(e1,e2)-> valeur(e1) + valeur(e2) | ...
Avoir confiance en l’informatique ?
Mai 2007
66 / 78
´ Logiciels et preuves mathematiques
Plan 1
` histoire de l’informatique Breve
2
Quelques exemples de gros « bugs »
3
Qu’est ce qu’un bug ?
4
Pourquoi traquer les bugs, c’est difficile ?
5
Qu’est ce que l’absence de bug ?
6
Les solutions actuelles
7 8
´ Logiciels et preuves mathematiques Conclusion
R.David - C.Raffalli
Avoir confiance en l’informatique ?
Mai 2007
67 / 78
´ Logiciels et preuves mathematiques
´ Necessit e´ de prouver les programmes ´ Exigence de securit e´ Depuis 1995, en Europe, les ITSEC (Information Technology Security ´ Evaluation Criteria) exigent l’usage de methodes formelles a` partir ´ ´ Transports, medecine ´ d un certain niveau de securit e. Banques, ´ ecommunications, ´ Tel ... ´ Les « methodes formelles » comprennent ´ Specification Test Model-Checking Preuve de logiciel
R.David - C.Raffalli
Avoir confiance en l’informatique ?
Mai 2007
68 / 78
´ Logiciels et preuves mathematiques
´ Specification et preuves
Question ´ ´ Puisque specifications = formules mathematiques, pourquoi ne pas faire des preuves ?
Oui mais : ˆ ´ Meme en mathematiques on fait des erreurs dans les preuves. ´ ´ En mathematiques, la « communaute´ »verifie les preuves. En informatique, personne ne relira une preuve d’un programme !
R.David - C.Raffalli
Avoir confiance en l’informatique ?
Mai 2007
69 / 78
´ Logiciels et preuves mathematiques
´ Specification et preuves
Question ´ ´ Puisque specifications = formules mathematiques, pourquoi ne pas faire des preuves ?
Solution : ´ On peut verifier une preuve a` l’aide d’un ordinateur. ` tres ` elev ´ e´ (mais pas 100%). Degre´ de fiabilite´ tres
R.David - C.Raffalli
Avoir confiance en l’informatique ?
Mai 2007
69 / 78
´ Logiciels et preuves mathematiques
Correspondance de Curry-Howard
´ ´ eme. ` Specification = Theor Preuve = Programme. On prouve : ∀e ∃s Specif(e, s) De la preuve, on extrait un programme correct calculant la sortie s ´ e. en fonction de l’entree Limitations peu efficace, ` dur d’ecrire ´ tres le programme que l’on veut.
R.David - C.Raffalli
Avoir confiance en l’informatique ?
Mai 2007
70 / 78
´ Logiciels et preuves mathematiques
Correspondance de Curry-Howard
´ ´ eme. ` Specification = Theor Preuve = Programme. On prouve : ∀e ∃s Specif(e, s) De la preuve, on extrait un programme correct calculant la sortie s ´ e. en fonction de l’entree Limitations peu efficace, ` dur d’ecrire ´ tres le programme que l’on veut.
R.David - C.Raffalli
Avoir confiance en l’informatique ?
Mai 2007
70 / 78
´ Logiciels et preuves mathematiques
Correspondance de Curry-Howard
´ ´ eme. ` Specification = Theor Preuve = Programme. On prouve : ∀e ∃s Specif(e, s) De la preuve, on extrait un programme correct calculant la sortie s ´ e. en fonction de l’entree Limitations peu efficace, ` dur d’ecrire ´ tres le programme que l’on veut.
R.David - C.Raffalli
Avoir confiance en l’informatique ?
Mai 2007
70 / 78
´ Logiciels et preuves mathematiques
Preuve de programmes
Qu’est ce que c’est ? ´ On prouve que le logiciel satisfait ses specifications.
R.David - C.Raffalli
Avoir confiance en l’informatique ?
Mai 2007
71 / 78
´ Logiciels et preuves mathematiques
Preuve de programmes
´ Deux methodes principales : ´ Programmes imperatifs : logique de Hoare ´ ´ Methode B : Ligne de metro 14 a` Paris, ... Approche fonctionnelle Boyer-Moore : preuve d’un micro processeur, d’un compilateur Pascal, ... Plus de limites ... en principe
R.David - C.Raffalli
Avoir confiance en l’informatique ?
Mai 2007
71 / 78
´ Logiciels et preuves mathematiques
Logique de Hoare (methode B)
´ aux programmes imperatifs ´ Appliquee : Affectation, Boucles (invariants ...). ´ ´ ere ` des A` partir du programme et des specifications on gen « obligations de preuves ». ´ ´ La theorie mathematique sous jacente a` la logique de Hoare assure que cela suffit.
R.David - C.Raffalli
Avoir confiance en l’informatique ?
Mai 2007
72 / 78
´ Logiciels et preuves mathematiques
Logique de Hoare (exemple) X := a ; while (|X 2 − a| ≥ e) do 1 a X := (X + ) ; 2 X done ; return(X) ; Preuve : Invariant de boucle : X > 0 (non nul). √ Post-condition : |X − a| < e.
(e est la marge d’erreur)
Obligations de preuve : a > 0, X > 0 ⇒ 12 (X +
a X)
> 0.
rappel : attention aux erreurs d’arrondis. R.David - C.Raffalli
Avoir confiance en l’informatique ?
Mai 2007
73 / 78
´ Logiciels et preuves mathematiques
Langage fonctionnel Remarque : ´ Les fonctions existent en mathematiques. Exemple : f (X ) = X si |X 2 − a| < e et f (X ) = f ( 12 (X +
a X ))
sinon
Preuve ˆ Meme contenu que pour la logique de Hoare. ´ Mais proche d’une preuve mathematique usuelle. ´ Justification de la methode un peu plus simple.
R.David - C.Raffalli
Avoir confiance en l’informatique ?
Mai 2007
74 / 78
´ Logiciels et preuves mathematiques
Limitation de la preuve de programme
´ Demande du temps, mais pas forcement plus que la recherche et la correction des bugs. On doit le faire avant de vendre le produit. Les industriels actuels n’ont pas fait assez de maths. Les industriels changent difficilement de langage de programmation.
R.David - C.Raffalli
Avoir confiance en l’informatique ?
Mai 2007
75 / 78
Conclusion
Plan 1
` histoire de l’informatique Breve
2
Quelques exemples de gros « bugs »
3
Qu’est ce qu’un bug ?
4
Pourquoi traquer les bugs, c’est difficile ?
5
Qu’est ce que l’absence de bug ?
6
Les solutions actuelles
7 8
´ Logiciels et preuves mathematiques Conclusion
R.David - C.Raffalli
Avoir confiance en l’informatique ?
Mai 2007
76 / 78
Conclusion
Peut-on avoir confiance en l’informatique ? Bureautique et informatique courante ` Les industriels ont conscience du probleme. ´ Pression economique encourageant les bugs ! ´ Outils peu ou pas utilises. Des bugs, encore des bugs, ... ` Systemes critiques ` Les industriels ont conscience du probleme. ´ ´ ´ Pression economique encourageant la securit e. ` constant. Outils en progres On peut avoir confiance ... R.David - C.Raffalli
Avoir confiance en l’informatique ?
Mai 2007
77 / 78
Conclusion
Peut-on avoir confiance en l’informatique ? Bureautique et informatique courante ` Les industriels ont conscience du probleme. ´ Pression economique encourageant les bugs ! ´ Outils peu ou pas utilises. Des bugs, encore des bugs, ... ` Systemes critiques ` Les industriels ont conscience du probleme. ´ ´ ´ Pression economique encourageant la securit e. ` constant. Outils en progres On peut avoir confiance ... R.David - C.Raffalli
Avoir confiance en l’informatique ?
Mai 2007
77 / 78
Conclusion
Peut-on avoir confiance en l’informatique ? Bureautique et informatique courante ` Les industriels ont conscience du probleme. ´ Pression economique encourageant les bugs ! ´ Outils peu ou pas utilises. Des bugs, encore des bugs, ... ` Systemes critiques ` Les industriels ont conscience du probleme. ´ ´ ´ Pression economique encourageant la securit e. ` constant. Outils en progres On peut avoir confiance ... R.David - C.Raffalli
Avoir confiance en l’informatique ?
Mai 2007
77 / 78
Conclusion
Fin
R.David - C.Raffalli
Avoir confiance en l’informatique ?
Mai 2007
78 / 78