Leserbrief zum Artikel „Für mehr Computersicherheit / Eine Liste der 25 gefährlichsten Programmierfehler“, NZZ vom 4. Februar 2009
Mit dem immer weiter verbreiterten Einsatz von Computern stellt sich auch die Frage nach der Sicherheit elektronischer Systeme immer mehr. Ein abstürzendes Email-Programm verärgert vielleicht nur einen Anwender; der Ausfall von wichtigen Internetverbindungen bringt sicherlich wirtschaftlichen Schaden; und Fehlfunktionen in Steuerungsanlagen vom Zug- oder Flugbetrieb können Menschenleben gefährden. So ist es sicherlich hilfreich, wenn wie in Ihrem Artikel beschrieben einige weit verbreitete Programmierfehler aufgeführt werden. Jeder Entwickler kann
davon profitieren, wenn er potentielle Gefahren vor Augen geführt bekommt.
Aber ob diese Liste wirklich die „25 gefährlichsten Programmierfehler“ enthält, das darf dann doch bezweifelt werden. Hintergrund ist die einfache Überlegung, dass Programmierfehler gar nicht gefährlich sind, so lange die Software nicht läuft. Erst dann, wenn eine Software läuft und dabei ein
Fehlverhalten an den Tag legt, dann besteht eine Gefahr.
Dies soll durch das bekannte Beispiel vom Absturz der Ariane V Rakete beim Jungfernflug 1996 illustriert werden. Der Milliarden-Schaden wurde durch den Ausfall eines Computerprogramms verursacht; dieses Computerprogramm enthielt somit einen Programmierfehler. Auf der anderen Seite hatte das gleiche Computerprogramm zuvor jahrelang ohne Probleme funktioniert, nämlich in der Vorgänger Rakete Ariane IV. Einzig das unterschiedliche Flugverhalten der beiden Raketen hat dazu geführt, dass das Computerprogramm in einem System fehlerfrei funktioniert hat, während es im anderen zu einem Totalausfall geführt hat.
Ein anderes, natürlich nicht so bedeutsames Beispiel aus meiner Tätigkeit als Software-Tester. Ein elektronisches System einer Bank bietet die Möglichkeit, Kassenobligationen in verschiedenen Währungen zu erfassen. Zu diesen Währungen gehören neben dem Schweizer Franken auch Euro,
Dollar und viele Exotenwährungen. Wenn die Bank eine Kassenobligation in einer Fremdwährung erfassen würde, dann bekämen die Bankkunden bei der Bestellung dieser Kassenobligationen einen sinnlosen Mix von Franken und der Fremdwährung angezeigt. Somit hätten wir hier einen
Programmierfehler, so denn die Bank Kassenobligationen in Fremdwährung anbieten wollte. Das will die Bank aber gar nicht, und so mit gibt es auch kein Fehlverhalten des Programms.
Zusammengefasst kann man also sagen, dass erst durch den Einsatz von Computerprogrammen in einem bestimmten Gebiet der „realen Welt“ eine Gefahr entsteht. Und will man die Gefahren beseitigen, so muss man immer dieses Gebiet mitberücksichtigen. Die eingangs genannte Liste tut
das nicht, sie kann es natürlich auch gar nicht, da ihre Weltsicht „nur“ die der Programmierung ist. Für eine qualitativ hochwertige Software ist aber die Verbindung der Programmierwelt mit der Welt des Einsatzgebietes wesentlich. Erst dann, wenn wir neben der Programmierung auch Wissen über die Finanzwelt, das Eisenbahnwesen, die Raumfahrt usw. haben, dann können wir qualitativ hochwertige Software herstellen. Solche Brückenschläge werden für mehr Computersicherheit benötigt und bilden einen wichtigen Punkt für die Faszination meiner Tätigkeit als Software-Tester.
Konrad Schlude