Gibt es auf der Welt wirklich kein einziges Computerprogramm das wirklich(!) Fehlerfrei läuft!?

9 Antworten

Menschen machen Fehler und auch Entwickler können nicht an alles denken. Dass der Softwaretest alle Fehler findet, ist ebenfalls ein Trugschluss.

Eine der 7 goldenen Regeln des Softwaretests ist, dass man nicht alles testen kann. Grund dafür ist, dass der Softwaretest bei den meisten Softwareentwicklungsmodellen am Ende kommt. Und da meistens schon während der Konzeption und Entwicklung mehr Geld verbrannt wird als geplant, ist dann für den Test nicht mehr so viel übrig.

Es gibt das "magische Dreieck", bestehend aus Budget, Qualität und Zeit. Diese stehen in Wechselwirkung zueinander, heißt, wenn zB kein Budget mehr da ist, leidet die Qualität und die Zeit.

Ist dem so, müssen Testfälle priorisiert werden, sodass wenigstens die groben Sachen getestet und ggf Fehler behoben werden können. Da kann es schon passieren, dass kleinere Fehler, die unkritisch sind, nicht (zeitnah) behoben werden können.

Da in der Softwareentwicklung alles immer auf der Arbeit anderer aufbaut, kannst du dir nie sicher sein, dass der Quellcode fehlerfrei läuft. Ich habe in den letzten Jahren schon Bugs im .NET Framework entdeckt, obwohl man ja eigentlich davon ausgeht, dass dieser Quellcode fehlerfrei sein müsste. Das ist aber ein Trugschluss.

Ein "Hallo Welt" Programm kann niemals fehlerfrei sein, weil die Bibliotheken auf denen deine Sprache aufbaut Millionen von Zeilen an Quellcode beinhalten.

LG Knom

Woher ich das weiß:Studium / Ausbildung – Softwareentwickler mit 10 Jahren Berufserfahrung 💾

Mit welcher Fehlerdichte man in als "gebrauchsbereit" deklarierter Software i.A. rechnen muss, zeigt die Graphik https://www.heise.de/developer/imgs/06/7/3/0/6/8/5/abb7-9812fac513a45238.png .

Eine typischerweise besonders häufige Fehlerursache sind Error Handling Issues und Stellen, an denen Error Handling fehlt, obgleich es es notwendig wäre.

Wie schwierig es sein kann, über welche Methodik auch immer, selbst in sehr kurzen Programmen wirklich fatale Fehler zu finden, zeigt dieses Beispiel (selbst nach formaler Programmverifikation — auch sie war offenbar nicht perfekt — vergingen 20 Jahre, über die hinweg der Fehler in diesem oft diskutierten Code-Stück nicht erkannt wurde. Selbst im weltweit intensiv genutzten JDK war er 9 Jahre lang präsent, bis er dann doch eine Anwendung zum Absturz brachte — erst hierdurch hat man ihn entdeckt).

Nicht vergessen sollte man: Es gibt Systemkatastrophen, die sich wirklich nur über hinreichend redundate Installation der Anwendungen entschärfen lassen (siehe Beispiele, z.B. aktuelle oder sehr teure).

Dennoch: Es ist ganz offensichtlich, dass heute selbst in Großprojekten — auch in solchen, die SAP oder IBM verantwortet — viel zu wenig getestet wird — und das obgleich nicht entdeckte Software-Fehler heute, wenn sie zuschlagen, schnell Kosten in bis zu 3-stelliger Millionenhöhe verursachen können (siehe Beispiele aus 2011 und 2012).

grtgrt  16.11.2019, 17:55

Wie selbst noch um die Jahrtausendwende durchgeführte Untersuchungen gezeigt haben, muss man damit rechnen, dass 1000 Zeilen Source Code im Durchschnitt mindestens einen Fehler enthalten.

Lediglich der den Linux Kerner darstellende Code scheint qualitativ besser zu sein.

Wo wenig gut ausgebildete Software-Entwickler am Werk sind, steigt insbesondere die Dichte applikationslogischer Fehler stark an: Wie einige Großprojekte zeigen bis hin zu dem Punkt, an dem die Lösung unbrauchbar wird, das entsprechende Projekt demnach als gescheitert eingestuft werden muss. (Durch die Presse gingen während des letzten Jahrzehnts mindestens 3 solcher Beispiele — stets aus dem ERP-Bereich. So versucht etwa der Staat Californien nun schon über 20 Jahre hinweg vergeblich, sein Gehaltsabrechnungssystem in moderner Technologie implementiert zu bekommen. Selbst SAP ist an dieser Aufgabe gescheitert, obgleich bekannt war, dass das Projekt schon einmal gescheitert war. Der nächste Versuch, nun über einige Jahre hinweg gut vorbereitet, soll Mitte 2020 beauftragt werden.)

0

Definiere Fehlerfrei

Wenn meine Anforderung ist:

“Ich möchte irgendeine Software die abstürzt“

Dann ist eine Software mit einem Absturzfehler Fehlerfrei.

Woher ich das weiß:Studium / Ausbildung – Promoviert

Je mehr Code ein Projekt hat, umso höher die Chance das (un)entdeckte Fehler vorhanden sind! Menschen machen Fehler und nur weil Softwaretests keine Fehler finden heißt das nicht das keine existieren! :)