Fehlerjagd – auf den Spuren des richtigen Codes
Irren ist menschlich; Fehler machen Leute, stärken den Charakter und können jedem passieren – und es ist das natürlichste der Welt. Und solange man daraus lernt, sind Fehler auch nichts Schlimmes.
Programme werden von Menschen geschrieben, daher sind auch Programmierfehler keine Seltenheit. Wichtig ist jedoch, dass diese vor der Weitergabe an die Käufer festgestellt und beseitigt werden. Sie betreffen den Code einer Software und kann fehlerbedingt der Grund dafür sein, warum die Anwendung nicht wie erwartet funktioniert.
Der Begriff ‚Programmierfehler‘ impliziert, dass der Code der Software inkorrekt umgesetzt wurde. Die Entwickler haben irgendwo in den unendlichen vielen Codezeilen eine Anforderung der Sprache missachtet, in der sie den Programmcode verfasst haben.
Horror pur – der „Das Programm reagiert nicht“-Hinweis
Wohl jeder von uns hat schon einmal einen kleinen Tobsuchtsanfall erlebt, wenn man vor dem Bildschirm sitzt und die Welt einfach nicht mehr versteht: eben grade noch ging also noch wie sonst auch, dann flackert der Bildschirm flackert kurz, anschließend stürzt das laufende Programm ab und nichts geht mehr. Ein Bug!
Und die Ursache dieser kleinen Parasiten, die auch als Software- oder Programmfehler bekannt sind, liegen in der Programmierung; es sind Programmierfehler.
Ein Fehler gleicht dem andern; wohl eher nicht. Fehlerjagd für Profis
Die Begrifflichkeiten werden oft als Synonyme verwendet, da die Grenzen sehr schwammig sind und teilweise nahtlose ineinander übergehen. Jedoch kann man Fehlerart und -gattung nicht immer in einen Topf stecken:
So kann beispielweise ein Laufzeitfehler ist zwar als Softwarefehler durchgehen; er muss aber nicht zwingend ein Programmierfehler sein, da er auch durch einen falschen Programmaufruf oder fehlerhafte Eingaben provoziert werden kann.
5 auf einen Streich
Grundsätzlich unterscheidet man in diesem Zusammenhang fünf Fehlertypen, die sich teilweise gegenseitig bedingen.
- Lexikalische Fehler
Diese Sorte Fehler ist der am einfachsten und gleichzeitig der wohl am schwierigsten ausfindig zu machende Bug: ein Rechtschreibfehler in Abermillionen von Zeilen … Viel Spaß beim Suchen: Irgendwo wurde ein Rechtschreibfehler gemacht. Häufig ist es die Groß- und Kleinschreibung, die Probleme macht, aber auch Buchstabendreher fallen in diese Kategorie.
- Syntaktischer Fehler
Die „Grammatik“ der Sprache ist falsch, was eigentlich nur bedeutet, dass Satzbau falsch ist. Semantischer Fehler
Dieses Problem entsteht, wenn mit nicht definierten Variablen gearbeitet wird, wodurch der Satz bzw. Code einfach keinen Sinn ergibt – auch wenn er grammatikalisch und auch orthografisch vollkommen korrekt ist. bei derartigen Fehlern geht es um den Kontext.
Rede ich vollkommen zusammenhangslos davon, dass ich auf einer Bank war, können Sie unmöglich wissen, ob ich von einer Sitzmöglichkeit oder doch von dem Ort spreche, an dem sich das Geld befindet.
- Laufzeitfehler
Diese Probleme treten beim Programmablauf auf und können von Compilern nicht erkannt werden. Sie führen zu einem Abbruch der Anwendung und wir erhalten den Hinweis, dass das Programm nicht reagiert.
Laufzeitfehler passieren bei sogenannten „unmöglichen Operationen“ – beispielsweise bei dem Versuch der Division durch Null. Sie lassen sich per Debugger ausfindig machen.
- Logischer Fehler
Es werden Rechenoperationen vertauscht, wodurch die Befehlskette keinen Sinn ergibt. Bei der Prozentrechnung wird beispielsweise eine Addition statt einer Multiplikation vom Programm angefordert. Das Problem dabei: Weder Debugger noch Compiler können einen logischen Fehler erkennen. Dies ist ausschließlich durch einen ausführlichen Programmtest möglich.
Folgefehler
Ein lexikalischer und syntaktischer Fehler kann sich beispielsweise gegenseitig bedingen. Schließlich kann eine andere Schreibweise eines Wortes zu einem anderen Sinn führen und wird deshalb nicht notgedrungen als Rechtschreibfehler erkannt: ‚offen‘ anstelle von ‚Ofen‘, ‚Aschenbecher‘ statt ‚Taschenrechner‘ oder ‚floh‘ für ‚flog‘…. Schuselfehler – wie Deutschlehrer bei der Diktatkorrektur meistens denken werden.
Durch derartige Patzer entstehen semantischer Fehler, da eine Variable auf einmal nicht mehr definiert zu sein scheint. Deshalb sollte bei der „Bugjagd“ nicht nur nach einem einzigen Fehlertyp gesucht werden., sondern auch nach Kombinationen oder Folgefehlern.