Peut-on avoir confiance en l'informatique - LAMA - Univ. Savoie

Pourquoi traquer les bugs, c'est difficile ? 5. Qu'est ce que l'absence de bug ? 6. Les solutions actuelles. 7. Logiciels et preuves mathématiques. 8. Conclusion.
4MB taille 10 téléchargements 499 vues
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