le logiciel ne fait pas bien ce quil doit faire (ex.: trop lentement
puis, la personne dsigne traite le problme, et indique que le problme est rgl;
la popularit exceptionnelle dun jeu qui connaît toutefois des bugs est souvent initiatrice dune communaut t
Dans les domaines o un bug causerait la mort dtres humains, (par exemple dans laronautique), des mthodes lourdes et complexes sont utilises pour prouver labsence de bug dans le logiciel, lors de sa conception. Ainsi, le logiciel de contrôle du mtro automatique ligne 14 Paris a t lorigine ralis avec lanotation Z. Pourtant, cest laMthode Bqui a t utilise pour en crer la version finale[20]. Lamthode Best dailleurs considre comme le meilleur outil pour garantir quun programme informatique est conforme aux spcifications de son comportement. En effet, lutilisation de la Mthode B pour crer le programme conduit aussi (automatiquement) dmontrer mathmatiquement la conformit du programme ainsi cr, qui devient donc par dfinition un thorme dmontr.
. On simpose luniformit du style dcriture (rduit la confusion possible pour les autres dveloppeurs) et lcriture de documentations dtailles. Typiquement, lcriture de programmes devra suivre un processus formalis en tapes successives et documentes.
le logiciel fait quelque chose quil ne doit pas faire;
Le mot anglaisbugappartient au jargon des ingnieurs dematrielet reprsentant les problmes qui y survenaient. Lutilisation du terme pour dcrire les dfauts de systmes mcaniques date dau moins avant lesannes 1870Thomas Edison, entre autres, utilisait le mot dans ses notes[4].
Limpossibilit de la recherche automatique universelle des bugs est donc un problme dordre fondamental, et non une limitation de la technologie actuelle.
Les bugs sont une des causes de dysfonctionnement des appareils informatiques, parmi les autres causes de dysfonctionnement on trouve:
ensuite, un expert effectue une analyse, il regarde sil sagit rellement dun bug ou dune mprise (manuel pas clair par exemple, ou utilisateur mal form);
si une correction est possible (peut tre aussi bien une correction dans le code quune prcision ajouter dans le manuel, une spcification corriger, une traduction amliorer…), la dcision est prise de faire une correction ou pas, et avec quelle priorit. Le travail faire est gnralement affect quelquun en particulier;
Une petite erreur dans un logiciel peut entraîner de nombreuses consquences par effet «boule de neige».
Unesituation de comptition(anglaisrace condition) est un dysfonctionnement dû un bug, qui fait que dans un mme logiciel deux automatismes qui travaillent simultanment donnent des rsultats diffrents suivant lautomatisme qui termine avant lautre.
. Le logiciel est essay dans diverses configurations, notamment des configurations difficiles et «extrmes». On va aussi tenter de couvrir toutes les fonctionnalits, ou toutes les portions de code du logiciel, ou tous les chemins dans le code (ce dernier critre est en gnral impossible atteindre). Cependant, le test ne donne pas dassurance sur le bon fonctionnement du logiciel dans tous les cas, car il ne tient compte que dun nombre limit de configurations du systme, dentres des utilisateurs ou du monde extrieur
«Lerreur est humaine, mais un vrai dsastre ncessite un ordinateur.»
Dans son livre paru en 1987,Frederick Brooksdit que la prsence de bugs dans les logiciels nest pas un accident mais est due la nature mme des logiciels, autrement dit, il existe des bugs dans les logiciels parce que ce sont des logiciels. Il dit galement quil nexistepas de balle en argent- un outil miracle – pour parer aux bugs, faisant ici allusion une lgende duMoyen Âge[12]selon laquelle seule uneballeenargent, vocatrice de la couleur de la Lune, peut parer auloup-garou[13].
Une autre mesure prventive pour viter les bugs est lapreuve formelle(ou dmonstration mathmatique) du fonctionnement du programme, de manire gnrique. Contrairement au test qui ne vrifie quun seul cas de fonctionnement donn, cette preuve cherche assurer que le programme fonctionne dans tous les cas, quelles que soient les conditions dutilisation. Mais toutes les techniques de vrification formelles sont lourdes et complexes. Dans labsolu, on ne sait pas vrifier le bon fonctionnement dun programme quelconque dans tous les cas. En revanche, il existe des mthodes de cration de logiciels, qui, au cours de la cration du logiciel, mettent en place des lments de suivi du passage vers chaque tape intermdiaire entre les spcifications ou le cahier des charges du logiciel dune part, et le programme final dautre part. Grâce ces lments de suivi, des vrifications sont ensuite possibles, et des contraintes de respect de la spcification peuvent tre imposes et verrouilles.
Le dbogueur permet danalyser ltat dexcution dun logiciel un instant donn, les oprations en cours, les informations en mmoire, les fichiers ouverts, etc. Avec undbogueur en ligne, il est possible de suspendre lexcution du logiciel tout moment, danalyser ltat, puis de continuer les traitements.
un comportement inattendu non couvert par la spcification (par exemple, cas non prvu de deux actions contradictoires traiter simultanment, cas dubug de lan 2000).
Undpassement de pileest un dysfonctionnement dans lequel la taille de lapile dexcutiondun logiciel dpasse la capacit de lammoire tamponqui la contient, ce qui provoque des dysfonctionnements similaires undpassement de tampon. La pile dexcution est unestructure de donnesstocke enmmoirequi contient ltat du droulement des automatismes du logiciel (voirprocessus (informatique)), cette structure est enregistre dans une mmoire tampon dont la taille est sur-dimensionne. Un dpassement de pile rsulte dun droulement erron la suite dun bug.
Le siteFranceTermerecommande le terme bogue ainsi que les drivs dboguer, dbogage etdbogueur[7].
Les erreurs de manipulation, lesvirus informatiques deslogiciels malveillantsqui falsifient les logiciels prsents dans lappareil. Mais aussi le dpassement des capacits du matriel – mmoire pleine, rseau satur, processeur occup – ainsi que labsence decompatibilit, les pannes dumatriel informatique, les valeurs incorrectes des paramtres deconfigurationet les influences extrieures (temprature etchamps magntiques).
Le dbogage est lactivit qui consiste diagnostiquer et corriger des bugs. Lors dudbogage en ligne, lingnieur excute le logiciel pas pas et effectue aprs chaque pas une srie de vrifications. Lors dudbogage post-mortem, lingnieur examine un logiciel la suite dun crash informatique.
LeTLFine retient le mot «bogue» que dans son acception de «Enveloppe piquante de la châtaigne, de la faîne, de la noisette et de certaines graines de lgumineuses»[6].
Les tests logiciel sont la premire mesure pour contrer les bugs. Ils consistent utiliser le logiciel dans le plus de conditions possibles. Le but des tests est de dceler diffrents problmes:
Schrödinbug: (duchat de Schrödinger) un bug qui ne se manifeste pas jusqu ce que quelquun lise le code source, utilise le programme dune façon peu ou pas usuelle et constate quil naurait jamais dû fonctionner.
Lebug de lan 2000, aussi appelbug du millnaire: un ou plusieurs bugs dans un logiciel qui manipule des dates provoquent des dysfonctionnements lorsque les dates sont postrieures au 31 dcembre 1999. Une des causes est que les calculs sur les dates se font uniquement sur lesdeux derniers chiffresde lanne.
Le terme de bug dans lesjeux vidoa pour signification premire une erreur dans le droulement suppos dune action. La rsultante finale du bug noccasionnera pas la mme gne suivant son intensit. Une main dun joueur traversant un mur dans unFPSnaura pas la mme nuisance quune impossibilit daccomplir la qute principale dunjeu de rôle.
Humour et citations clbres lies aux bugs
Les bugs rsultent derreurs humaines lors des travaux despcification, deconception, deprogrammationet detestsde logiciel et de matriel informatique. La complexit grandissante des logiciels, les problmes de communication, le manque de formation des ingnieurs et la pression des dlais et des coûts durant les travaux dingnierie sont des facteurs qui tendent augmenter le nombre de bugs[17].
Lestests de logicielssont la premire mesure pour contrer les bugs. Pour des raisons pratiques (coût des travaux et dlais), il nest pas possible de tester un logiciel dans toutes les conditions quil pourrait rencontrer lors de son utilisation et donc pas possible de contrer la totalit des bugs: un logiciel commeMicrosoft Wordcompte 850 commandes et 1600 fonctions, ce qui fait un total de plus de 500 millions de conditions tester[18].
conserv laSmithsonian Institution.
Un bug peut provoquer unplantagecest–dire un arrt inattendu dun logiciel voire dimportantes pertes dinformations ou dans des cas extrmes une vritable catastrophe (voir explosion duvol 501de la fuseAriane 5). Unefaille de scuritest un dfaut mineur qui ne provoque pas de dysfonctionnement en utilisation courante, mais permet un utilisateur malicieux ou unlogiciel malveillantdeffectuer des oprations non autorises partir dunexploit.
. Il y a plusieurs mthodes pour grer lactivit des programmeurs afin de minimiser les risques de bugs. Plusieurs de ces techniques relvent de la spcialit dugnie logiciel.
Cependant, la complexit dutilisation de cette mthode entraine un surcroit de travail tel, quun programmeur seul peut avoir besoin de 100 fois plus de temps pour crer un programme avec cette mthode que sil avait cr le mme programme de manire traditionnelle. Cela signifie alors que cela coute 100 fois plus cher de crer le programme avec cette mthode. En consquence, malgr son efficacit, cette mthode nest que trs rarement utilise, et il existe de nombreux domaines dans lesquels des bugs peuvent causer la mort dtres humains et o lon se contente pourtant de crer des programmes bourrs de bugs, de manire traditionnelle, puis de faire des tests trs rigoureux pour en liminer la plupart. partir du moment o la probabilit quun bug cre un dysfonctionnement qui tue des gens reste infrieure la probabilit quune erreur humaine cre le mme genre de dysfonctionnement, cela est souvent jug acceptable. (Et le surcout entrain par lutilisation de la mthode B pour garantir que personne ne meurt est jug inacceptable).
Les tests sont rpts plusieurs fois, mesure de lavance de la programmation et des corrections, ceci afin de valider les corrections et dceler dventuelsbugs dergression: des bugs survenus la suite de la correction errone dun autre bug. Les tests peuvent tre automatiss laide de logiciels qui agissent la place de lutilisateur. Parfois un second logiciel est dvelopp pour servir aux tests.
Larevue de codeconsiste soumettre le code source fraîchement dvelopp une tierce personne qui va le relire et rechercher des dfauts.
Lindustrie du dveloppement logiciel fait de gros efforts pour trouver des mthodes de prvention des erreurs des programmeurs menant des bugs.
Lorsque le bug est dcel et corrig aprs la distribution du logiciel, le fournisseur met souvent disposition unpatch, cest–dire un kit qui remplace les parties dfaillantes du logiciel par celles qui ont t corriges.
Trouver et corriger les bugs, oudbuguer, est une partie majeure de laprogrammationde logiciels.Maurice Vincent Wilkes, pionnier de linformatique, dcrit ses ralisations desannes 1940en disant que lessentiel du reste de sa vie serait occup rparer les erreurs dans ses propres programmes. Alors que les programmes informatiques deviennent de plus en plus complexes, les bugs deviennent plus frquents et difficiles corriger. Quelquefois, les programmeurs passent plus de temps et defforts trouver et corriger les bugs qu crire du nouveau code.
On peut se demander sil existe des mthodes universelles, sans faille et automatiques quil suffirait de suivre pour se rendre compte si un programme est bugu ou non. La rponse est non. En effet, si une telle mthode existait, il serait possible de lautomatiser par un ordinateur, cest–dire par un logiciel danalyse. Cet analyseur devrait oprer sur des programmes analyser quelconques et devrait, par exemple, rpondre la question suivante: «ltat final du programme peut-il tre un tat derreur lexcution, ou est-il forcment un tat correct (ou une non-terminaison)». Or, lethorme de Ricedit quon ne peut rpondre cette question sur un systme tat infini. Plus gnralement, toute question de spcification portant sur ltat final du programme estindcidable, cest–dire quun logiciel ou une mthode automatique ne peut y rpondre, sauf les questions dont la rponse est toujours vraie ou toujours fausse.
Uneerreur de segmentationest un dysfonctionnement dû un bug dans des oprations de manipulations depointeursou dadresses mmoire. Le logiciel dfaillant va tenter de lire ou dcrire des informations dans un emplacement demmoire(segment) qui nexiste pas ou qui ne lui est pas autoris. Le mcanisme de dtection des exceptions provoque alors la mise hors service du logiciel dfaillant.
le logiciel ne fait pas ce quil doit faire;
Lcran bleu de la mortest, dans le langage populaire, le nom donn au message de mise hors service des, qui saffiche lorsquune exception est dcele au cœur du systme dexploitation. LaKernel panicest le message affich dans des conditions similaires sur les systmes dexploitationUNIX.
Lestest unitairesconsistent utiliser une fonction unique du logiciel en vue de dceler des dysfonctionnements. Lestests dintgrationconsistent utiliser un ensemble de fonctions en vue de contrôler la cohrence de lensemble. Lestests de validationconsistent utiliser lensemble du logiciel en vue dvaluer son adquation au besoin de lacheteur.
Entre 2009 et 2011, la Lexus ES350 a t implique dans de nombreuses sorties de route grande vitesse. Le constructeur, Toyota, ragit initialement en incriminant une mauvaise utilisation de la voiture par des chauffeurs qui auraient confondu les pdales de frein et dacclration. Unrecours collectifen justice mit pourtant en lumire de graves lacunes dans le fonctionnement de lordinateur de bord. Celui-ci pouvait enclencher lacclration jusqu150km/het dsactiver la pdale de frein. Ce bug fit entre 200 et 400 morts aux tats-Unis. Cest le bug informatique le plus grave de lhistoire[21].
Bohr bug: Un bug rptable, qui se reproduit lorsquun ensemble – mme inconnu – de conditions sont remplies
Every non-trivial program has at least one bug
Le support des langages de programmation
Rponse frquente (et teinte dhumour) des dveloppeurs de logiciels leurs utilisateurs
la recherche et la correction de bugs dmontrs permettent souvent une correction dautres bugs inconnus ce jour et/ou une optimisation ducode source, ce qui est trs profitable au joueur (jouabilit amliore) comme au dveloppeur (le support technique rgulier dun jeu est un gage de renomme);
Habituellement, la partie la plus difficile du dbugage est de trouver la partie du code responsable de lerreur. Une fois localise, la corriger est souvent facile. Des programmes appelsdbogueursexistent afin daider les programmeurs trouver les bugs. Toutefois, mme avec laide dundbogueur, dnicher un bug est une tâche souvent trs difficile.
Ordinairement, la premire tape pour trouver un bug est de trouver un moyen de le reproduire facilement. Une fois le bug reproduit, le programmeur peut utiliser ledbogueurou un autre outil pour observer lexcution du programme dans son contexte habituel, et ventuellement trouver le problme. En revanche, il nest pas toujours facile de reproduire un bug. Certains sont causs par des entres au logiciel qui peuvent tre difficiles reproduire pour le programmeur. Dautres peuvent disparaître quand le programme est lanc dans undbogueur; ceux-ci sont appelsheisenbugs(faisant, par plaisanterie, rfrence auprincipe dincertitudede Heisenberg). Enfin, les bugs des programmes parallles (composs de plusieurs modules sexcutant de façon concurrente, par exemple sur plusieurs processeurs) sont souvent difficiles reproduire sils dpendent de lordonnancement prcis des calculs sur la machine.
LeMac triste: cran indiquant un code erreur sur les premires versions duMacIntoshApple.
«Tout programme nontrivialpossde au moins un bug (
Lchec duvol inauguralde la fuseAriane 5en 1996 a pour origine un dfaut dans les appareils davioniquede la fuse, appareils utiliss avec succs pendant plusieurs annes sur la fuseAriane 4. Lors du dcollage, lappareil informatique qui calculait la position de la fuse en fonction de son acclration ne supporta pas les acclrations dAriane 5, 5 fois plus fortes que celles dAriane 4. Undpassement dentierprovoque le crash informatique de lappareil. Aveugl, le pilote automatique perdit le contrôle de la fuse, et un dispositif de scurit provoqua son auto-destruction quelques secondes aprs le dcollage. Cest lun des bugs informatiques les plus coûteux de lhistoire[21].
Eninformatique, unbug(motanglaisbug) oubogue(auNouveau-Brunswick, auQubec[1]et enFrance[note 1]) est un dfaut de conception dunprogramme informatique lorigine dundysfonctionnement.
Une fois un ou plusieurs dfauts corrigs, ceux-ci sont regroups dans unpatch, un kit qui contient uniquement les composants du logiciel qui ont t corrigs. Il sera utilis par toute personne qui possde une copie du logiciel pour y appliquer les corrections et le faire correspondre une version donne.
Les ordinateurs sont parmi les produits les plus complexes que lhomme ait fabriqu, et ils ont par consquent un trs grand nombre dtats. Les logiciels sont plus complexes que les ordinateurs, et, contrairement une automobile, aucune pice ne se ressemble. La conformit de nombreusesnormes, caractristique des domaines proches de latlcommunication, accroît la complexit de ces derniers. Les logiciels sont de plus des produits invisibles, qui ne peuvent pas tre reprsents dans un espace gomtrique, les reprsentations graphiques de logiciels comportent souvent deux, voire trois ou quatre diagrammes qui correspondent chacun une ralit diffrente[13].
Le terme «bogue» est rfrenc dans le dictionnaire Larousse en ligne avec pour dfinition «Dfaut de conception ou de ralisation dun programme informatique, qui se manifeste par des anomalies de fonctionnement de lordinateur.»[5].
«Quand un logiciel na plus aucun bug, il est gnralement obsolte.»
Tir de laloi de Murphyapplique linformatique.
Le terme est parfois faussement attribu Grace Hopper. Elle constata dans son journal dentretien, conserv laSmithsonian Institution, en date du9 septembre 1947,15h45, que deux contacts dunrelaiscausaient le mauvais fonctionnement duHarvard Mark II, lun des premiersordinateurslectromcaniques.
Photo du «premier cas rel de bug (insecte)», dans le journal dentretien duHarvard Mark
un non-respect de laspcificationdu systme (cest–dire de la dfinition de ce que le systme est cens faire);
Unefuite de mmoireest un dysfonctionnement dû un bug dans les oprations dallocation de mmoire. Avec ce dysfonctionnement, la quantit de mmoire utilise par le logiciel dfaillant va en augmentant continuellement. Si le logiciel dfaillant arrive utiliser la quasi-totalit de la mmoire disponible, celui-ci gne alors le droulement des autres logiciels et les entraîne des dysfonctionnements.
Une spcification peut tre informelle et vague (comme: «le logiciel est un traitement de textes qui ne provoque pas derreur lexcution»), ou formelle et prcise («tri(t) est une permutation dettelle que tri(t) est ordonne pour la relation »), y compris au point dobtenir des formules mathmatiques. En supposant la spcification la plus complte possible, un programme bugu est un programme dont lamise en œuvrene vrifie pas cette spcification.
si tout va bien, le problme est clos. Sinon, le problme est rouvert et le cycle recommence.
Lexistence des bugs napportent pas que des points ngatifs:
et lanalyse statiqueparinterprtation abstraitesont automatiques; il existe des gradations intermdiaires. Citons par exemple laMthode B, utilise pour la ligne 14 (Meteor) dumtroparisien
Unsystme critiqueest un dispositif informatique dont le dysfonctionnement peut mettre en danger la sant et la vie des gens et des cosystmes, provoquer des importants dgâts matriels ou avoir des rpercussions sur la stabilit conomique et politique.
En 1962, la missionMariner 1a connu un incident similaire[22].
Undpassement de tamponest un dysfonctionnement dû un bug. Un logiciel qui doit crire des informations dans un emplacement dtermin et limit de mmoire (mmoire tampon) dpasse les limites de cet emplacement et va alors crire des informations sur un emplacement destin un autre usage, cette modification inopine entraine une excution erratique du logiciel, qui peut se terminer par une erreur de segmentation ou un dpassement de capacit. Cest unefaille de scuritcourante desserveursqui est souvent exploite par lespirates informatiques. voirExploit.
Un article de Wikipdia, lencyclopdie libre.
. Un bug peut parfois crer des incohrences dans les donnes internes dun programme en fonctionnement. Les programmes peuvent tre crits pour vrifier la cohrence des donnes internes durant leur excution. Si un problme est trouv, le logiciel peut sarrter immdiatement pour que le bug puisse tre trouv et rpar, ou simplement avertir lutilisateur, essayer de corriger lincohrence et continuer fonctionner. De plus, on peut interdire ou du moins svrement rglementer lusage de fonctionnalits de maniement dlicat du langage de programmation ou du systme.
«Ce nest pas un bug, cest une fonctionnalit non documente! (
Unchien de gardeest un dispositif lectronique autonome qui sert dceler les dysfonctionnements. Ce mcanisme est souvent utilis avec les systmes critiques et linformatique industrielle.
Its not a bug, its an undocumented feature
Ctait un terme utilis par les ingnieurs en mcanique et lectricit, expliquant les difficults rencontres dans lquipement, longtemps avant que Grace Hopper ait entendu parler de ce mot.[11],[note 2]
. Leslangagesincluent parfois des fonctionnalits qui aident les programmeurs traiter les bugs, comme letraitement des exceptions. De plus, plusieurs langages rcents ont dlibrment exclu des fonctions avances susceptibles de mener des bugs. Par exemple, les langagesJavaetPerlnoffrent pas daccs de bas niveau auxpointeurs, vitant quun programme naccde une zone de la mmoire par inadvertance.
Mandelbug: (desensembles de Mandelbrot) un bug dont les causes sont si obscures et complexes que le rsultat est un comportement chaotique et non dterministe.
le logiciel fait quelque chose qui ne lui est pas demand;
Les problmes potentiels poss par la date du 31 dcembre 1999 ont t anticips la premire fois parBob Berneren 1971[23]. Ils ont provoqu une importante mobilisation des entreprises degnie logicielquelques annes avant la date butoir et le coût total des travaux de contrôle et demaintenance prventivesont estims plus de 600 millions de dollars[24].
Plus le code est complexe, plus il est difficile de localiser un bug. Des bugs qui dpendent dune combinaison de conditions imprvues et improbables sont particulirement difficiles localiser. Dans le folklorehackeril existe des catgories de bugs bizarres dont les noms humoristiques sont drivs de ceux dminents scientifiques en physique quantique et en mathmatique[14].
. Il sagit ici de parvenir une preuve, au sens mathmatique, de bon fonctionnement du logiciel. La mthode peut fournir plus au moins dautomatisation: lesassistants de preuveaident un utilisateur formuler une preuve mathmatique et la vrifient; le
Les logiciels sont des produits invisibles et immatriels, leur modification ne requiert pas de matire premire. Lvolution trs rapide du march informatique engendre une forte demande en changement. Tous ces facteurs font que les changements dans les logiciels sont beaucoup plus frquents que dans dautres produits tels que lesautomobilesou lesbâtiments[13].
Le logiciel de suivi de problmes sert coordonner les travaux de dbogage, il est utilis pour collecter tous les dysfonctionnements constats, inscrire les causes et les actions de correction effectues et ainsi suivre lavancement des corrections. Les causes peuvent tre des bugs, mais aussi des dfauts dans les paramtres deconfigurationou des erreurs de manipulation. Le logiciel de suivi de problmes est utilis aussi bien par les usagers du logiciel dfaillant que par les ingnieurs ou lesadministrateurs systmes.
Un bug peut rsider dans unlogiciel applicatif, dans les logiciels tiers utiliss par ce logiciel applicatif, voire dans lefirmwaredun composant matriel comme ce fut le cas dubug de la division du Pentium[2]. Unpatch(terme francis en «retouche» ou «correctif»)[3]est un morceau de logiciel destin corriger un ou plusieurs bugs.
Hopper ne trouva pas le bug, comme elle le reconnaissait volontiers. Les oprateurs qui lont trouv plus tard, y compris William «Bill» Burke, du laboratoire darmes naval taient familiers avec le terme dingnierie et amuss ont gard linsecte avec lannotation premier cas rel de bug trouv.[8],[9],[10]
une personne (dveloppeur, testeur, utilisateur…) qui voit quelque chose qui lui semble anormal remplit un formulaire, qui cre une entre dans la base de donne et lui affecte un numro;
Uninterblocage(anglaisdeadlock) est un dysfonctionnement durant lequel lorsque plusieurs automatismes sattendent mutuellement, cest–dire quils attendent chacun que lautre libre les ressources quil utilise pour poursuivre. Les ressources restent verrouilles durant les attentes, ce qui peut bloquer dautres automatismes et par effetdominobloquer lensemble du systme. Un mcanisme de prvention provoque lannulation de lopration lorsque la dure dattente dpasse le dlai admissible (anglaistimeout).
Lutilisation de langages de programmationde haut niveau, qui facilitent le travail de lingnieur. La mise en application de conventions de rdaction sont dautres techniques prventives destines diminuer le nombre de bugs.
Lexcution pas–pas dun logiciel laide dun dbogueur peut provoquer desHeisenbugdu simple fait que le logiciel se droule moins rapidement[15]. Et les situations de comptition peuvent entraîner desMandelbug, o le comportent du programme est diffrent chaque fois que celui-ci est excut[16].
Uneversion de logicielest ltat dun logiciel une date donne, y compris toutes les corrections et amliorations qui ont t faites jusqu cette date. La version est ditealphaoubetalorsquelle correspond ltat du logiciel avant la fin de la dure des tests. Une telle version est susceptible de contenir des bugs qui ont entretemps t dcels et corrigs.
Lobjectif «zro bug» ncessite un temps de dveloppement gnralement trs important, comparer la dure de vie espre du logiciel.
Pour ledbogage[note 3](de langlais: «debugging»), soit la recherche et la correction de bugs, les ingnieurs se servent dun logiciel, ledbogueur, ainsi quunlogiciel de suivi de problmes.
Les bugs peuvent amener les logiciels tenter deffectuer des oprations impossibles raliser (exceptions): division par zro, recherche dinformations inexistantes. Ces oprations – qui ne sontjamaisutilises lors de fonctionnement correct du logiciel – dclenchent unmcanisme la fois matriel et logiciel qui met alors hors service le logiciel dfaillant, ce qui provoque uncrash informatiqueou undni de service.
De nombreux langages de programmation incluent des mcanismes de vrification des dysfonctionnements. Les instructions ncessaires aux vrifications sont ajoutes automatiquement aucode machineou aubytecodedu logiciel lors de lacompilation. Les instructions peuvent provoquer lactivation automatique dudbogueur, le logiciel de diagnostic des bugs.
Avec un dbogueurpost-mortem, il est possible danalyser ltat dexcution dun logiciel aprs un crash. Lanalyse se fait sur la base dun fichier qui contient la copie du contenu de la mmoire au moment du crash. Fichier appelcore dumpsur les.
gnralement, une confirmation par une tierce personne (testeur, autre dveloppeur, utilisateur…) est requise;
La gravit du dysfonctionnement peut aller de bnigne (dfauts daffichage mineurs) majeure (crash systme pouvant entraîner de graves accidents: par exemple, lexplosion duVol 501 dAriane 5).
Les tests unitaires et dintgration sont typiquement effectus par lingnieur, tandis que les tests de validation sont typiquement effectus par lacheteur ou son reprsentant.
Les ingnieurs utilisent souvent unlogicielde suivi de problmes, cest–dire un logiciel debase de donnesdans lequel sont inscrits les diffrents bugs ainsi que les travaux raliss pour chacun:
Pour les articles homonymes, voirBogueetBug.
Heisenbug: (duprincipe dincertitude de Heisenberg) un bug qui disparaît ou se modifie quand on essaye de lisoler.
On pourrait objecter que les ordinateurs sont des systmes tat fini: chaque ordinateur a une quantit finie de mmoire. Cependant, lexception de systmes de trs petite taille, il convient, des fins danalyse, de considrer les ordinateurs comme des systmes mmoire non borne. En effet, les techniques danalyse utilisant la finitude de ltat vont toutes, de façon plus ou moins dtourne ou optimise, chercher numrer les tats du systme. Un systme nbits de mmoire a 2ntats; dans un ordinateur personnel actuel,nest de lordre de 238. On voit donc que toute tentative dnumration des tats du systme est voue lchec.
Undpassement dentierest un dysfonctionnement dû un bug dans des oprations de calcul mathmatique. Le logiciel dfaillant va tenter deffectuer un calcul dont le rsultat est suprieur la valeur maximum autorise. Le mcanisme de dtection des exceptions provoque alors la mise hors service du logiciel dfaillant.