L’informatique et ses fondements

Publié le 21/06/19Modifié le 06/11/19

Sur le même sujet

Qu'est-ce qu'un bug ?

Voici deux exemples de bugs connus :

  • Le premier concerne l'USS Yorktown, un bateau américain de guerre de 1996 avec un programme Navy's Smart Ship qui signifie « bateau intelligent ». Lors d'essais, un membre d'équipage s'est trompé sur ce qu'il rentrait dans la machine, comme valeur d'entrée. Il a rentré un 0 sur une valeur qui, en théorie, n'était pas censée être 0. En conséquence, dans le programme, il y a eu une division par 0 qui est remontée et qui a planté le système d'exploitation : plus rien ne marchait sur le bateau, en particulier les moteurs. Ce qu'il faut retenir, c'est qu'il faut tester les valeurs d'entrée parce qu'on n'est jamais sûr que l'utilisateur final est bien conscient qu'il y a des valeurs interdites. Ce genre de valeur non attendue est également une porte d'entrée pour les attaques sur les programmes.
  • Un autre exemple : le lanceur de satellites Ariane 5, qui est le successeur d'Ariane 4. C'est le même programme que celui d'Ariane 4 qui a été repris pour Ariane 5. Simplement, Ariane 5 est beaucoup plus grosse, beaucoup plus lourde qu'Ariane 4. Certaines valeurs maximales étaient correctes pour Ariane 4 mais plus pour Ariane 5. Au premier lancer d'Ariane 5, ces valeurs maximales ont donc été dépassées. En informatique, quand on dépasse les valeurs maximales autorisées d'un entier ou d'un flottant, il se passe des choses bizarres. Sur les nombres flottants, des valeurs très grandes peuvent devenir très petites. Sur les entiers, on peut avoir des entiers positifs qui deviennent négatifs. En conséquence, le lanceur de satellites a commencé à partir sur le côté à cause de cette mauvaise valeur, et il a fallu le détruire pour ne pas qu'il tombe sur les habitations.

Il faut donc faire attention aux variables qu'on utilise et à leur type pour être sûr qu'on ne va pas dépasser les valeurs maximales et minimales autorisées.

Type de bugs

Un bug, c'est quand l'utilisateur au final n'a pas ce qu'il veut. Il y a tout un tas de raisons pour lesquelles on peut avoir un bug. Ça peut être :

  • une erreur de programmation : oubli d'un cas particulier, faire une typo, avoir un dépassement de capacités, un accès illicite à la mémoire. 
  • une erreur de communication : c'est plus sournois et tout aussi fréquent. Entre la personne qui a demandé le programme et la personne qui l'a programmé à la fin, il y a eu une mauvaise compréhension sur les valeurs d'entrée, sur ce que devait faire le programme, etc. Il peut aussi y avoir une erreur de communication entre 2 programmeurs, parce que les programmes actuels ne sont pas écrits par une seule personne, ils sont écrits par des milliers de personnes qui doivent interagir, comprendre ce que fait le morceau de programme des autres personnes. Par exemple, un pacemaker, c'est à peu près 100 000 lignes de code, ce qui est déjà difficile à écrire par une seule personne et ce n'est qu'un petit programme. Le télescope spatial Hubble renferme 2 millions de lignes de code. Les serveurs de World of Warcraft ou le code embarqué d'un Boeing 787 peuvent représenter 5 millions de lignes de code. Facebook, 60 millions de lignes de code. C'est très compliqué, sur 60 millions de lignes de code, d'être sûr qu'il n'y a pas une erreur qui s'est insérée quelque part. Les programmes, de temps en temps, peuvent donc planter ou ne pas donner les bons résultats.

Nom de l'auteur : Liliane Kahmsay / Florent Masseglia

Producteur : Inria

Année de diffusion : 2016

Voir plus