| Infos Home | Impressum | Original Artikel & Autoren Liste |
Die Bezeichnung Bug entstand angeblich, als 1945 eine Motte in einem der ersten Computer einen Kurzschluss verursacht hatte. US Navy Captain Grace Murray Hopper, eine Pionierin der Computerwissenschaft, entdeckte den Bug und klebte die Motte in ihr Logbuch ein, das heute am Smithsonian Institute aufbewahrt wird. Daraufhin behaupteten Programmierer oft scherzhaft, es sei wohl wieder ein Insekt, wenn ihre Programme fehlerhaft waren, bis der Ausdruck Bug schließlich allgemein gebräuchlich wurde. (siehe auch moderne Legende)
| Inhalt |
|
1 Vermeidung und Behebung von Programmfehlern 2 Arten von Programmfehlern 3 Folgen von Programmfehlern
3.1 |
Zum Einen versucht man, Programmfehler durch bestimmte Methoden während der verschiedenen Phasen der Software-Entwicklung von vornherein zu vermeiden. Unter anderem gehören dazu das Vier-Augen-Prinzip mittels regelmäßiger Code-Reviews, Paarprogrammierung und gemeinsamem Code-Besitz sowie die gute Planung, Analyse und Entwurf.
Zum Anderen will man Programmfehler möglichst schnell, zuverlässig und einfach finden. Dazu zählt u.a. das Debugging ("Entwanzung", Entfehlerung) mit Hilfe speziell dafür entwickelter Werkzeuge, genannt Debugger und die Einplanung spezieller Test-Phasen.
Manche Softwareanbieter führen diese Test-Phasen teilweise öffentlich durch und geben Betaversionen heraus, um die unvorhersehbar vielfältigen Nutzungsbedingungen verschiedener Anwender durch diese selbst testen und kommentieren zu lassen. Dies nennt man scherzhaft auch "Bananensoftware", weil sie erst beim Kunden reift.
Testss sind Prozeduren und Programme, die einen Programmfehler reproduzierbar auslösen sollen, um sie einzugrenzen und zu vermeiden, sie dienen sowohl zur Vermeidung als auch zum Auffinden von Programmfehlern.
Insbesondere in Bereichen, in denen der Einsatz von Software mit hohen finanziellen, wirtschaftlichen oder menschlichen Risiken verbunden ist, wie z.B. bei militärisch oder medizinisch genutzer Software oder in der Luft- und Raumfahrt, verwendet man zudem eine Verifizierung genannte Methode, bei der die Korrektheit einer Software formal-mathematisch nachgewiesen wird. Dieser Methode sind allerdings enge Grenzen gesetzt und sie ist daher bei komplexen Programmen praktisch unmöglich, teilweise auch theoretisch unmöglich anzuwenden; siehe auch Berechenbarkeit.
Auch die Entwicklung immer komplexerer Programmierparadigmen und Programmierstile wie die objektorientierte Programmierung, Design By Contract und die aspektorientierte Programmierung dienen unter anderem der Fehlervermeidung und Vereinfachung der Fehlersuche - bei im jeweiligen Paradigma unerfahrenen Programmierern entsteht allerdings oft eher der gegenteilige Effekt.
Eine Klassifizierung nach Auffindbarkeit kategorisiert Programmfehler in Bohrbugs und Heisenbugs.
Einen in einer früheren Programmversion bereits behobenen Bug, der in einer späteren Programmversion wieder auftaucht, nennt man dort Regressionsbug.
Weitere Klassifizierungskriterien sind z.B. die Wahrscheinlichkeit des Auftretens des Bugs, der den Bug enthaltende Programmteil, die Auswirkung eines Bugs auf die praktische Einsetzbarkeit des Programms, der zur Behebung nötige Aufwand, die Wahrscheinlichkeit dass bei der Behebung neue Bugs entstehen, oder das Test-Verfahren, das den Bug identifiziert.
Vermeidung und Behebung von Programmfehlern
Fehlern in Computerprogrammen wird auf vielfältige Art und Weise begegnet.Arten von Programmfehlern
Es gibt verschiedene Möglichkeiten, Programmfehler zu klassifizieren.Folgen von Programmfehlern
Die Folgen eines Programmfehlers können außerordentlich sein:
Siehe auch: Debugging, Debugger, Ada (Programmiersprache)
|
Der Ursprungsartikel stammt von der deutschsprachigen Wiki pedia (siehe oben: "Original Artikel & Autoren Liste"). Der Text steht unter der GNU Freie Dokumentation Lizenz. |