Fehlerfrei programmieren mit FOP

Fehlerfrei programmieren – das klingt reißerisch. Bedenkt man es genau, sollte es aber definitiv das Ziel jeder Software-Programmierung sein, diese fehlerfrei durchzuführen. Ähnlich wie beispielsweise ein Lackierer mit entsprechender Ausrüstung, Reinräumen und Sorgfalt dafür sorgen kann, dass sein Werk einwandfreie Qualität aufweist, ist es auch in der Software-Entwicklung möglich.

Fehlerfreie Software ist theoretisch möglich

Es kursiert das Gerücht, dass unmöglich ist, fehlerfreie Software herzustellen. Es gibt vom informatischen Standpunkt her allerdings sogar formale Methoden, die Fehlerfreiheit von Software nachzuweisen. Warum wird also die theoretisch mögliche Qualität in der Praxis fast nie erreicht?

Ein Grund liegt darin, dass die formale Verifikation, also das Nachmessen, ob eine Software fehlerfrei funktioniert, nicht komplett automatisierbar ist. Das sogenannte Halteproblem sagt aus, dass gewisse Eigenschaften von Software nicht automatisch geprüft werden können. Dazu ist immer ein Software-Ingeneur notwendig, der die sogenannte Schleifen-Invarianten festlegt, eine Formel, die das Verhalten der Software in Wiederholungen vorhersagt. Damit wird formale Verifikation teuer und wird fast nur in der Raumfahrt verwendet, wo ein Programmierfehler eine milliarden Euro teure Mission scheitern lassen kann.

In der Automobilindustrie begnügt man sich mit Testabdeckungen, die zwar einen Großteil der Fehler erkennen und damit vermeiden können, allerdings immer noch Schlupflöcher für ungetestete Konstellationen in der Software hinterlassen. Für Standardsoftware sind die Test-Bedingungen schon viel relaxter. Bei Individualsoftware wird das Testen aus Kostengründen meist ganz weggelassen.

Ausweg: Reduzierung der Komplexität

Der einzig effiziente Weg, fehlerfreiere Software zu produzieren ist, weniger Code zu schreiben. Ein Beispiel aus dem Betriebssystem-Bereich sind die Mikro-Kernel: Anstatt ein aufgeblähtes Betriebssystem mit Treibern und Schnittstellen zu bauen, bestehen Mikro-Kernel aus wenigen tausend Zeilen Code. Der Mikro-Kernel verwaltet nur noch den Speicher der Programme und sorgt dafür, dass diese untereinander kommunizieren können. Es gibt Mikrokernel, die formal verifiziert sind, das heißt, es wurde mathematisch bewiesen, dass diese 100%ig fehlerfrei sind. Diese Systeme können zum Beispiel genutzt werden, um auf einem virenverseuchten Rechner ein nicht-hackbares Feld fürs Online-Banking einzublenden.

Weniger Code zu schreiben erreicht man unter anderem dadurch, dass man allgemeineren Code schreibt, der in vielen Situationen funktioniert. Das bedeutet, für eine Software, die Kunden und Rechnungen verwaltet muss zum Beispiel das Sortieren der Kunden und das Sortieren der Rechnungen auf dem selben Code basieren. Durch das tausendfache Wiederverwenden ein- und desselben Codes wird dieser auf ganz natürliche Weise getestet und Fehler kommen schneller zu Tage.

FOP ersetzt das Code-Schreiben durch Code-Verwenden

FOP ist ein auf der Prädikatenlogik basierendes System, das es erlaubt, Software ohne Programmcode zu entwickeln. Anstatt in traditionellen Programmiersprachen Programme zu programmieren, definiert man anhand von sogenannten »Fakten« die Anforderungen an die Software. Ein auf logischen Schlussfolgerungen (Implikation) basierendes System wählt dann aus mehreren Programmiersprachen die Code-Schnipsel, die die geforderten Features am besten umsetzen.

Das heißt ganz praktisch, dass durch die Anwendungen überhaupt kein Code mehr entsteht, der Fehler enthalten könnte. Die Code-Schnipsel aus den Fakten-Definitionen hingegen können noch Fehler enthalten, werden aber tausende Male verbaut mit jeder erdenklichen Parameterisierung, sodass der wenige Code sehr gut getestet ist. Eine formale Verifikation der Code-Schnipsel wäre ebenfalls möglich.

Fazit

Fehlerfreie Software ist möglich, aber leider unwirtschaftlich. Mit neuen Programmier-Methoden wird sich das Gleichgewicht aber zu fehlerfreierem Code hin verschieben.

Durch die weitere Nutzung der Seite stimmst du der Verwendung von Cookies zu. Weitere Informationen

Die Cookie-Einstellungen auf dieser Website sind auf "Cookies zulassen" eingestellt, um das beste Surferlebnis zu ermöglichen. Wenn du diese Website ohne Änderung der Cookie-Einstellungen verwendest oder auf "Akzeptieren" klickst, erklärst du sich damit einverstanden.

Schließen