Praktisches & Grundsätzliches zur Informatik

Softwarefehler reduzieren, Software Qualitätssicherung, Software als Gefahr

Über die Notwendigkeit, Softwarefehler zu reduzieren

Das Bundesamt für Sicherheit in der Informationstechnik stellt fest:


Der stark wachsende Umfang an Anwendungs- und System-Software und die zunehmende Zahl von Abhängigkeiten (zu anderen Programmen ...) tragen dazu bei, dass Software-Fehler die zunehmend dominierende Ausfallursache für Systemausfälle sind.


Muss diese Tatsache (hier Beispiele: B1, B2) nicht zur Frage führen, ob wir schon in absehbarer Zukunft Software brauchen, die deutlich weniger Fehler enthält als sie das typischerweise heute tut?

Derzeit gilt:

Wir sehen: Die Informatik — wenigstens aber ihre Technik zur Qualitätssicherung — steckt heute wohl noch in Kinderschuhen, die vergleichbar sind mit denen, die die Mathematik zu Zeiten von Aristoteles, Pythagoras und Euklid trug.

Dies hat z.B. zur Folge, dass deutsche Unternehmen nach eigener Schätzung enorm viel Geld — etwa 2.6% ihres gesamten Umsatzes — darauf verwenden müssen, Schäden zu beheben, die ständig durch lange Zeit nicht lokalisierbare Software-Fehler entstehen (Systemabsturz, Sicherheitsprobleme, ver­fälschte Anwendungsdaten).

In extremen Ausnahmefällen [A], deren es in letzter Zeit aber zunehmend mehr gibt (wenigstens 10 in 2011), kann schon ein einziges Zuschlagen eines Software-Fehlers Schäden in 2 bis 3-stelliger Millionen­höhe zur Folge haben.

Neben Software, die Fehlfunktion zur Folge hat, sind natürlich auch Sicherheitslücken zu fürchten — und die sind zahlreich, wie die Tatsache zeigt, dass z.B. Oracle im Okt 2013 und Jan 2014 Patches aus­geliefert hat, die 127 und keine 4 Monate später 147 weitere solcher Lücken zu ent­schärfen hatten. Dass es darüber hinaus weit mehr noch gar nicht entdeckte gibt, scheint sicher ...


All das zeigt (siehe auch [1]):

Wir scheinen ein Problem zu haben ...


Es zu beherrschen haben wir noch nicht gelernt, denn:


Als in 2008 etwas über 1000 IT-Manager und Fachspezialisten nach der Höhe ihrer Kosten für Software-Test befragt wurden, haben 65% eingestanden, sie nicht zu kennen (International Software Testing, Pierre Audoin Consultants (PAC), Jan 2008).

Und eine Umfrage aus 2011 scheint zu belegen, dass etwa 30% aller in Deutschland produzierten Software auch nach ihrer Freigabe an die Nutzer noch schwerwiegende Fehler enthält:






Über typische Fehlerdichte/KLOC gibt Harry Sneeds Papier Auskunft.




Erfahrungen zu Software-Fehler-Dichte




Relativ harmlos — da einfach zu entdecken — sind rein formale Fehler (welcher Art und wie häufig in etwa sie sind, zeigen Analyse Reports). Dass ihr Auftreten nicht selten Absturz der Anwendung zur Folge hat, wirkt schadensbegrenzend.

Sie also wären das kleinere Problem, denn gutes Werkzeug kann sie finden: Im Code zu Libre Office etwa soll Einsatz von Coverty Scanso wird berichtet — die Dichte rein formaler Fehler von 1.11 pro 1000 LOC auf 0.08 gedrückt haben.

Vergleichbar häufig, recht gefährlich, aber wirklich NUR über aufwendige Reviews und sehr professionellen Test aufzu­decken sind Fehler applikationslogischer Natur. Schäden, die sie verursachen, werden i.A. hoch sein und proportional zum Stellenwert, den die Anwendung fürs Unternehmen hat.

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).

Vielleicht sollte man sich fragen, ob es nicht nochmals an der Zeit wäre, ganz gezielt darüber nachzu­denken, wie Software systematischer als bisher entwickelt werden kann: Es gibt durchaus Anzeichen, die darauf hindeuten, dass es auch heute noch bei zu wenig methodischem Vorgehen — wie schon in den 60-er Jahren — zu einer wirklich gefährlichen Software-Krise kommen könnte (wobei ihre Ursache dann aber weniger in der Schwierigkeit liegen wird, Code zu beherrschen, sondern vor allem in der Schwierig­keit, Komplexität von Anwendungslogik überschaubar zu halten, hinreichend schnell zu verstehen und auf ein Normalmaß begrenzen zu können). Siehe dazu:


Beispiele aus unserem Alltag:


Wie man Webanwendungen möglichst sicher macht: OWASP diskutiert, wie es immer wieder zu Sicherheitslücken kommt. Ein guter Weg, sie noch während der Entwicklung — durch Code-Analyse — zu entdecken, wäre Contrast (für Java und C#), siehe Info dazu.

Noch eine ganz andere Frage wäre, wie man Firmware absolut sicher macht. Spionage-Organisationen nämlich — und wohl keineswegs nur der NSA — gelang es schon, Sicherheitslücken in Rechnerkompo­nenten unterschiedlichster Hersteller so zu verstecken, dass sie dort über Jahre hinweg unentdeckt blieben. Insgesamt lässt sich feststellen: Welche Gefahren in selbst weltweit millionenfach täglich benutzter Software oder Firmware schlummern — dort unbeabsichtigt oder gar in böser Absicht einge­baut —, ist mit heutiger Technologie noch viel zu wenig feststellbar. Hieran wird sich über kurz oder lang etwas ändern müssen.

Sind wir uns dessen aber auch ausreichend bewusst? Eher wohl nicht, denn:

Eine Studie von Gartner (veröffentlicht im Februar 2015) stellt fest (Zitate aus CIO):

Es spricht also einiges dafür, dass deutsche CIOs die Aufgabe, für Sicherheit zu sorgen, eher bei der Politik sehen, wohingegen sie in Wirklichkeit — mindestens dort, wo Kriminelle am Werk sind — nur durch extrem sorgfältig durchdachte technische Lösungen gewährleistet werden kann.

Entsprechende Qualität zu erzwingen, wird jedoch kaum zur Chefsache gemacht:

Man denkt immer noch, Software-Entwickler würden von sich aus hinreichend gründlich arbeiten und das auch dann noch, wenn zu einseitig denkende Einkäufer sie durch Festpreise geknebelt haben. Kein Wunder also, dass Gartner feststellt: Insgesamt zeigen sich zu viele deutsche IT-Verantwortliche zu stark kostenorientiert. Sie vergessen:

» Value is not mainly created by reducing the cost of IT per dollar of revenue,

but by increasing revenue per dollar of IT cost. «




stw5717FSPFehler . Sicherheitslücke . ProblemNews?

Mehr + B G E + S H A + More

Costly Software Bugs in 2015

Folgenschwerer weltweiter IT Crash 2024, mehr als 8 Mio Computer betroffen:

Das Problem komplett zu beheben dauerte Wochen

Microsoft macht EU-Gesetzgeber dafür verantwortlich

Folgen des Desasters

WannaCry (2017) — Die bisher größte Ransomware-Attacke

89 Tote eines Software Fehlers wegen

Softwarefehler legt über Stunden hinweg tausende Unternehmen lahm

Erfahrungen zu Software-Fehler-Dichte

Brauchbare Code Reviews und was sie (per 100 LOC) kosten

Zur Gefahr gezielter Cyber-Attacken (s. Graphiken auf Seite 44)

Statement der NATO, 2021

The Growing Problem of Patching Software

Zur Gefahr von SQL Injection