Les systèmes informatiques font tourner le monde moderne, ce qui conduit parfois les défaillances techniques à être à l’origine d’accidents fatals dans le monde matériel. De telles défaillances résultent généralement d’erreurs humaines dans l’ingénierie, les calculs, le développement logiciel et les tests.
Voici les erreurs de programmation logicielle les plus retentissantes ainsi que des cas qui ont fait la une dans le monde entier, qui prouvent l’importance d’assurer l’assurance qualité de tout logiciel. Nous classerons les incidents selon leur coût, qu’il soit en temps, en argent ou en vies humaines.
Temps & argent
Nous savons tous que « le temps c’est de l’argent », donc les erreurs logicielles qui coûtent du temps entraînent indéniablement des pertes financières.
USS Yorktown
L’incident a eu lieu en 1997, lorsque le porte-avions américain USS Yorktown a perdu le contrôle de son système de propulsion à la suite de l’arrêt de toutes les machines du système. Il s’est avéré que l’administrateur système avait saisi la valeur 0 dans la base de données pour l’un des paramètres alors qu’il tentait de dépanner une vanne de carburant ; ainsi, lorsque les systèmes ont essayé d’utiliser cette variable, cela a provoqué une division par 0. Le navire s’est retrouvé immobilisé en mer, et il a fallu deux heures et quarante-cinq minutes pour redémarrer les systèmes et le faire repartir.
Aéroport de Los Angeles
En 2004, à l’aéroport de Los Angeles, la salle radio du contrôle aérien a perdu le contact vocal avec plus de 800 avions, et le système de communication de secours était également déconnecté. Cela s’est produit à cause d’un compteur ticker servant à identifier et synchroniser les messages. Il commençait au plus grand nombre 2^32, et chaque nouveau message le décrémentait de 1. Lorsque le nombre de tickers a atteint 0, il s’est avéré que le système ne pouvait plus envoyer de messages. Désormais, la procédure de sécurité de l’aéroport exige que le système soit redémarré tous les 30 jours, sachant qu’il faut 50 jours pour envoyer 2^32 messages. Malheureusement, cette leçon a été chèrement payée en argent et en ressources.
Missile Patriot
L’incident est survenu en 1991, lorsque le système Patriot n’a pas réussi à intercepter le missile lancé par les forces de Saddam Hussein. Le missile a frappé la caserne des soldats américains, faisant 28 morts. Lors du traitement du temps, les processeurs intercepteurs 24 bits commettaient une erreur de 0,013 seconde par heure ; ainsi, après plus de 100 heures de fonctionnement sans redémarrage du système, Patriot calculait incorrectement la position du missile, avec un écart de 600 mètres.
Ariane 5
Cette erreur a coûté 7 milliards de dollars et est considérée comme l’une des erreurs de programmation les plus coûteuses de l’histoire. En 1996, la fusée porteuse Ariane 5 devait mettre en orbite plusieurs satellites et d’autres équipements, mais elle a explosé immédiatement après le lancement à cause d’une erreur dans le logiciel de l’ordinateur de bord. L’un des modules du système a tenté de convertir un nombre à virgule flottante 64 bits en un entier 16 bits. La valeur était trop grande et ne tenait pas sur 16 bits, ce qui a provoqué un dépassement. Les ordinateurs principal et de secours utilisaient le même logiciel, ils ont donc fonctionné de la même manière.
Mariner 1
Mariner 1 est une sonde spatiale qui devait survoler Vénus en 1962, mais elle a à peine décollé de Cap Canaveral. Une erreur dans le code logiciel a fait dévier la fusée de sa trajectoire, la menaçant de s’écraser. En conséquence, les ingénieurs de la NASA ont dû déclencher l’autodestruction. Les pertes financières auraient dépassé 18 millions de dollars.
Vies humaines
Voici les cas dans lesquels les défaillances techniques ont coûté bien plus que du temps et de l’argent. Cela peut sembler irréel, mais même des erreurs mineures dans la programmation peuvent entraîner la mort de personnes.
Affaire Joshua Brown
Les gens sont actuellement obsédés par le rêve de véhicules autonomes qui éliminent totalement la participation humaine et roulent en pilote automatique. Cependant, le prix de leurs avantages est trop élevé lorsqu’on considère les accidents qui se produisent avec de telles voitures à cause d’erreurs techniques.
Joshua Brown est connu comme le premier conducteur de Tesla à être décédé alors qu’il roulait en pilote automatique. Sa voiture n’a pas reconnu le wagon clair sur le ciel clair et n’a pas déclenché le système de freinage, si bien que la voiture a percuté le wagon à pleine vitesse. Les représentants de Tesla ont affirmé que le système avait fonctionné et avait envoyé au conducteur des signaux pour qu’il pose les mains sur le volant, mais il les a ignorés. On ne sait toujours pas si c’est vrai, mais cet accident a fait naître des doutes chez les gens à propos du pilote automatique.
Affaire Elaine Herzberg
Une autre histoire tristement célèbre est celle d’Elaine Herzberg — la première femme à être décédée sous les roues d’une voiture autonome Uber. C’était la nuit, et la voiture n’a pas reconnu un humain. Le conducteur censé surveiller le pilote automatique n’a pas eu le temps de s’arrêter.
Ambulance de Londres
En 1992, lorsque le service d’ambulances de Londres a décidé de remplacer les opérateurs humains par un système informatique, ce dernier a été mis en service sans tests de charge et avec 81 bugs connus ! Le système est tombé en panne en raison d’erreurs dans la répartition des itinéraires des ambulances, ce qui a entraîné la mort de personnes. De plus, ils avaient acheté du matériel bon marché, qui est tombé en panne quelques heures après l’utilisation active du système.
Multidata Systems International
Ce cas concerne un logiciel de radiothérapie pour patients atteints de cancer, développé par Multidata Systems International. Une erreur dans le calcul de la bonne dose a exposé des patients à des niveaux de radiation nocifs et même mortels, causant la mort de 8 personnes.
Therac-25
Le cas le plus retentissant dans l’histoire de la programmation des appareils médicaux est l’incident impliquant l’appareil de radiothérapie Therac-25. À cause d’une erreur de race condition, lors du basculement rapide entre les modes magnétique et rayons X de l’appareil, l’obturateur des rayons X n’avait pas le temps de se mettre en place. En conséquence, dix patients ont reçu une dose létale de radiations, ayant entraîné soit la mort, soit l’amputation des parties du corps touchées.
Boeing 787 Dreamliner
Ce cas concerne la détection à temps d’une erreur dans l’avion Boeing 787 Dreamliner, dont la prévention a probablement sauvé la vie de centaines de personnes. Le bug aurait pu couper l’alimentation électrique de l’avion après 248 jours de fonctionnement, peu importe la phase de vol. La cause était un nombre 32 bits décrémenté qui, au bout de 248 jours, équivalait à 0,01 seconde, valeur qui ne tient pas dans la capacité et entraînerait une perte totale de contrôle de l’avion.
Conclusion
Ces histoires ne sont qu’une goutte d’eau dans l’océan, et il existe des milliers d’exemples où les erreurs de programmation ont coûté du temps, de l’argent et des vies. Et il y en aura encore davantage si l’on ne prête pas l’attention nécessaire à la qualité des logiciels développés ainsi qu’à leurs tests approfondis.
Chez QAwerk, nous adoptons une approche responsable à l’égard des solutions que nous concevons. Nous nous efforçons de fournir des services de développement logiciel et d’assurance qualité de premier ordre pour des clients issus de différents secteurs. Qu’il s’agisse d’une simple application mobile ou d’un projet complexe comme la modernisation du système de vote du Parlement européen, nos spécialistes accordent toujours la priorité à la qualité des produits développés.