Sven Rautenberg: Stabile Software: Was bedeutet das eigentlich?

Beitrag lesen

Moin!

ich bin dennoch der Meinung, dass kein Mensch in der Lage sein wird, ein 100% sicheres Programm erstellen zu können; egal, wie sie getestet wird.

Nur weil wir uns dran gewöhnt haben, dass Windows ständig abstürzt und die in C oder C++ geschriebenen Programme so ihre Macken haben, bedeutet das nicht, dass niemand fehlerfreie Programme schreiben kann.

Zum einen hängt die Fehlerfreiheit extrem von der gewählten Programmiersprache ab. C und C++ sind zwar vermeintlich sehr performant, aber sie verleiten auch zu Flüchtigkeitsfehlern, die man mit anderen Programmiersprachen garnicht erst machen kann. Und ich würde auch behaupten, das Assembler einerseits eine Sprache ist, die extrem wenig unentdeckte Fehler zulässt, wenn das Programm nur hinreichend klein ist, andererseits bei größeren Programmen C von der Fehleranfälligkeit her noch um Längen schlagen kann.

Zweitens hängen die Fehler deutlich vom Entwicklungsprozess der Software ab. Wenn man den Aussagen über den relativ neuen Ansatz "Extreme Programming" Glauben schenkt, dann hat das dort angewandte "Pair Programming" (ein Rechner, ein Programmierer tippt ein und erzählt, was er da macht, ein zweiter schaut ständig über die Schulter und kommentiert und korrigiert den ersten, wenn nötig) eine extrem viel geringere Fehlerrate, als das einzelne Programmieren im stillen Kämmerlein.

Und drittens: Man kann auch versuchen, mathematisch zu beweisen, dass eine Software zu 100% korrekt ist. Ist zwar aufwendig, aber dann auch bombensicher.

Doch, eine Software muss "eigenständig" auf solche Situationen reagieren können, bzw., diese erkennen (und entsprechende Maßnahemn ergreifen, warnen, etc.)

Dein Reaktorangriffszenario ist etwas zu undetailliert. Insbesondere was deine Erwartungen an die Software angeht. Aber nehmen wir das Szenario mal an.

In einem Reaktor sind sehr viele Systeme eingebaut. Diese funktionieren alle unabhängig voneinander mit ihrer eigenen Software, sofern eine Software für die Aufgabe überhaupt notwendig ist. Das bedeutet: Es gibt eben gerade KEIN "Reaktor-Windows" als riesige, unübersichtliche, schwer wartbare Mega-Applikation, sondern eine Vielzahl von kleinen Programmen mit exakt definiertem Aufgabenbereich. Eine Regelung für ein Ventil hat beispielsweise nichts anderes zu tun, als die Ventilstellung festzustellen, den Durchfluß zu kontrollieren, die Daten an einen Zentralrechner weiterzumelden und von diesem neue Befehle zur Änderung der Ventilstellung entgegenzunehmen.

Wenn es jetzt zu deinem Angriffsszenario kommt, ist davon auszugehen, dass die Infrastruktur des Reaktors irgendwie beschädigt wird. Es gehört hinsichtlich der Softwareentwicklung für das Ventil dazu, alle möglichen (und nicht nur die wahrscheinlichen) Beeinflussungen in der Software zu berücksichtigen. Was passiert also, wenn das Ventil klemmt, wenn der Durchfluß trotz der weitest offenen Stellung immer geringer wird - oder umgekehrt immer weiter steigt, was ist, wenn der Zentralrechner keine Befehle mehr gibt oder keine Datensendungen mehr quittiert?

All diese Szenarien müssen durchgespielt und von der Software berücksichtigt werden. Dabei ist es absolut egal, ob der Bruch der Leitung vor dem Ventil nun durch ein Flugzeug, eine Bombe oder Materialversagen verursacht wurde - das ist für das Ventil irrelevant. Für den Zentralrechner natürlich nicht.

Und weil du das natürlich hören willst: Wenn man gezielt den Zentralrechner killt, und gleichzeitig auch die gesamte elektrische Versorgung, dann wird der Reaktor wahrscheinlich hochgehen. Das ist dann aber kein Softwarefehler, sondern schlicht der Situation anzulasten.

Du wirst NIEMLAS eine Software finden, die 100% stabil, auf alle Situationen angepasst und fehlerfrei läuft. (Ich lasse mich gerne eines Besseren belehren)

Auf dem PC sicherlich nicht. Das fängt schon mit Bugs in der CPU an, geht mit Bugs im Betriebssystem weiter, Bugs in Treibern, Peripherie-Firmware etc., und ganz am Ende dann auch Bugs in den Applikationen.

Aber wenn man einen bewiesen korrekt arbeitenden Zentralchip mit einem bewiesen korrekt arbeitenden Betriebssystem oder direkt mit der bewiesen korrekt arbeitenden Software betreibt, dann ergibt das ein zu 100% korrekt laufendes Programm.

Sowas kauft man aber nicht von der Stange beim Aldi, sondern diese Entwicklung ist sauteuer und extrem darauf angewiesen, dass alle Komponenten exakt wie vorgesehen verwendet werden. Mal eben was austauschen gegen anderen Ersatz (um es zu verdeutlichen: Festplatte von Hitachi ersetzen gegen eine von Maxtor) ist strengstens verboten.

- Sven Rautenberg