Bugs informatiques : comment les éviter ?

En informatique, un bug ou bogue est un défaut de conception d'un programme informatique à l'origine d'un dysfonctionnement. La gravité du dysfonctionnement peut aller de bénigne, causant par exemple des défauts d'affichage mineurs — on parlera alors parfois dans ce cas de « glitch(es) » — à majeure, tels un crash système pouvant entraîner de graves accidents, par exemple la destruction en vol de la première fusée Ariane 5, en 1996. L'industrie du développement logiciel fait de gros efforts pour trouver des méthodes de prévention des erreurs des programmeurs menant à des bugs...

- "La ligne de code la plus sûre au monde est celle que l'on n'écrit pas !" : rechercher la simplicité et la simplification, la cohérence, la réutilisation de code ou de librairies éprouvées, puis établir des règles de codage et de politique de nommage claire.

- Les règles de programmation. On s'impose l'uniformité du style d'écriture (réduit la confusion possible pour les autres développeurs) et l'écriture de documentations détaillées. Typiquement, l'écriture de programmes devra suivre un processus formalisé en étapes successives et documentées.

- Les techniques de programmation. Un bug peut parfois créer des incohérences dans les données internes d'un programme en fonctionnement. Les programmes peuvent être écrits pour vérifier la cohérence des données internes durant leur exécution. Si un problème est trouvé, le logiciel peut s'arrêter immédiatement pour que le bug puisse être trouvé et réparé, ou simplement avertir l'utilisateur, essayer de corriger l'incohérence et continuer à fonctionner. De plus, on peut interdire ou du moins sévèrement réglementer l'usage de fonctionnalités de maniement délicat du langage de programmation ou du système.

- Les méthodologies de développement. Il y a plusieurs méthodes pour gérer l'activité des programmeurs afin de minimiser les risques de bugs. Plusieurs de ces techniques relèvent de la spécialité du génie logiciel.

- Le support des langages de programmation. Les langages incluent parfois des fonctionnalités qui aident les programmeurs à traiter les bugs, comme le traitement des exceptions. De plus, plusieurs langages récents ont délibérément exclu des fonctions avancées susceptibles de mener à des bugs. Par exemple, les langages Java et Perl n'offrent pas d'accès de bas niveau aux pointeurs, évitant qu'un programme n'accède à une zone de la mémoire par inadvertance.

- Le test. Le logiciel est essayé dans diverses configurations, notamment des configurations difficiles et « extrêmes ». On va aussi tenter de couvrir toutes les fonctionnalités, ou toutes les portions de code du logiciel, ou tous les chemins dans le code (ce dernier critère est en général impossible à atteindre). Cependant, le test ne donne pas d'assurance sur le bon fonctionnement du logiciel dans tous les cas, car il ne tient compte que d'un nombre limité de configurations du système, d'entrées des utilisateurs ou du monde extérieur…

- Les méthodes formelles. Il s'agit ici de parvenir à une preuve, au sens mathématique, de bon fonctionnement du logiciel. La méthode peut fournir plus au moins d'automatisation : les assistants de preuve aident un utilisateur à formuler une preuve mathématique et la vérifient ; le model checking et l'analyse statique par interprétation abstraite sont automatiques ; il existe des gradations intermédiaires. Citons par exemple la Méthode B, utilisée pour la ligne 14 (Meteor) du métro parisien.

Trouver et corriger les bugs, ou débuguer, est une partie majeure de la programmation de logiciels. Maurice Vincent Wilkes, pionnier de l'informatique, décrit ses réalisations des années 1940 en disant que l'essentiel du reste de sa vie serait occupé à réparer les erreurs dans ses propres programmes. Alors que les programmes informatiques deviennent de plus en plus complexes, les bugs deviennent plus fréquents et difficiles à corriger. Quelquefois, les programmeurs passent plus de temps et d'efforts à trouver et à corriger les bugs qu'à écrire du nouveau code.

Habituellement, la partie la plus difficile du débugage est de trouver la partie du code responsable de l'erreur. Une fois localisée, la corriger est souvent facile. Des programmes appelés débogueurs existent afin d'aider les programmeurs à trouver les bugs. Toutefois, même avec l'aide d'un débogueur, dénicher un bug est une tâche souvent très difficile.

Ordinairement, la première étape pour trouver un bug est de trouver un moyen de le reproduire facilement. Une fois le bug reproduit, le programmeur peut utiliser le débogueur ou un autre outil pour observer l'exécution du programme dans son contexte habituel, et éventuellement trouver le problème. En revanche, il n'est pas toujours facile de reproduire un bug. Certains sont causés par des entrées au logiciel qui peuvent être difficiles à reproduire pour le programmeur. D'autres peuvent disparaître quand le programme est lancé dans un débogueur ; ceux-ci sont appelés heisenbugs (faisant, par plaisanterie, référence au principe d'incertitude de Heisenberg). Enfin, les bugs des programmes parallèles (composés de plusieurs modules s'exécutant de façon concurrente, par exemple sur plusieurs processeurs) sont souvent difficiles à reproduire s'ils dépendent de l'ordonnancement précis des calculs sur la machine.

Photo : DgMata - Fotolia.com. 

Des spécialistes de l'informatique :

Formation :

91330 - ALC INFORMATIQUE (ALCI) http://www.formateur-ciel-formation.com

Dépannage :

78310 - TAKENOLOGIC http://www.depannage-maintenance-informatique-78.com

Infogérance :

78310 - RCB INFORMATIQUE RESADIA http://www.infogerance-maintenance-informatique.com
92240 - NEODITEL http://www.outsourcing-infogerance-gestion-telecoms.com

Infrastructures et cloud :

75017 - ANDBUR http://www.informatique-mac-pc-paris-lille.com
93170 - APT-SYS MALLYANCE http://www.informatique-service-numerique-paris.com

Traçabilité :

91140 - PRESENCE MICRO SYSTEME (PMS) http://www.logiciel-metier-paris.com

Copieurs et gestion électronique des documents :

91140 - XEROBOUTIQUE SUD http://www.photocopieur-imprimante-couleur.com
92100 - CONCEPTA http://www.solutions-numeriques-informatiques-92.com


Voir toutes les newsletters :
www.haoui.com
Pour les professionnels : HaOui.fr