Programmfehler
Ein Programmfehler, im englischen auch einfach Bug genannt, ist ein Ausdruck aus dem EDV-Bereich. Ein Programmfehler tritt in Computerprogrammen auf, wenn der Programmierer einen bestimmten Zustand in der Programmlogik nicht berücksichtigt hat, oder wenn die Laufzeitumgebung selber fehlerhaft arbeitet. Auch Unvollständigkeit, Fehler, Ungenauigkeiten, Mehrdeutigkeiten o.ä. in der Spezifikation des Programms können zu Bugs führen, bzw. als solche interpretiert werden. Es gibt eine Regel, nach der ein Computerprogramm ab einer bestimmten Größe immer auch Programmfehler beinhaltet. Auch nichtinitialisierte Variablen führen im Programmablauf zu undefinierten, meist nicht reproduzierbaren Zuständen.
Die Bezeichnung Bug entstand, 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 (siehe auch Urban Legend).
Um Fehler in Computerprogrammen aufzufinden, werden u.a. Debugger eingesetzt (zum so genannten Debugging, Entfehlerung) oder automatisiert Eingabe- und Bedienungsvorgänge simuliert. Manche Softwareanbieter 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. Außer durch Debugging versucht man, durch Methoden wie Verifizierung oder Code-Review Programmfehler zu vermeiden oder zumindest zu reduzieren.
Die Folgen eines Programmfehlers können außerordentlich sein:
- 1962 führte ein fehlender Bindestrich in einem Fortran-Programm zum Verlust der Venus-Sonde Mariner 1, welche über 80 Millionen US Dollar gekostet hatte.
- Zwischen 1985 und 1987 gab es mehrere Unfälle mit dem medizinischen Bestrahlungsgerät Therac-25. Infolge einer Überdosis, die durch fehlerhafte Programmierung und fehlende Sicherungsmaßnahmen verursacht wurde, mussten Organe entfernt werden, ein Patient verstarb drei Wochen nach der Bestrahlung.
- 1996 wurde der Prototyp der Ariane V-Rakete der Europäischen Raumfahrtbehörde eine Minute nach dem Start zerstört, weil Programmcode, der von der Ariane IV übernommen wurde und nur für einen (von der Ariane IV nicht überschreitbaren) Bereich funktionierte, die Steuersysteme zum Erliegen brachte, nachdem ebendieser Bereich von der Ariane V erreicht wurde.
- 1999 verpasste die NASA-Sonde Climate Orbiter den Landeanflug auf den Mars, weil die Programmierer das falsche Maßsystem verwendeten Yard statt Meter und verlor dadurch die mehrere hundert Millionen Dollar teure Sonde
Siehe auch: Ada (Programmiersprache)