Ganz ohne den Menschen geht es nicht

Feature | 25. Oktober 2006 von admin 0

Christof Fetzer

Christof Fetzer

Was sind „kritische Systeme“? Können Sie Beispiele nennen?

Fetzer: Vom Funktionieren solcher Systeme hängt entweder das Leben von Menschen (safety-critical), die Existenz einer Firma oder auch die Vermeidung von finanziellen Schäden (mission-critical) ab. Ihre Zahl nimmt kontinuierlich zu: Mechanische Systeme etwa werden durch computergesteuerte elektromechanische ersetzt. Beispiel hierfür ist „Brake-by-Wire“, eine mechatronische Bremse. Der Begriff bezeichnet die Art, wie das Bremssignal an die Bremse geleitet wird. Die reine Brake-by-Wire-Technik verzichtet dabei völlig auf Bremsflüssigkeit und Hydraulik. Hochleistungs-Elektromotoren erzeugen die Bremskräfte direkt an den Rädern, etwa von Hochgeschwindigkeitszügen. Die Motoren werden von einer elektronischen Regeleinheit gesteuert und über ein elektronisches Bremspedal mit Gefühlssimulator und Sensoren zur Fahrerwunscherkennung betätigt.

Welche Fehler führen bei solchen Systemen zu einem Computerausfall?

Fetzer: In Frage kommen Hard- oder Software-, Anwender-, Sicherheits- oder Netzwerkfehler. Das Problem ist, dass es meistens zu viele mögliche Ursachen gibt, um alle korrekt zu behandeln. So könnte beispielsweise der Wert von Programmvariablen sowohl durch Soft- als auch durch Hardwarefehler verfälscht werden. Auch die Fehlererkennungs- und Fehlerbehandlungsroutinen enthalten häufig Mängel: Sie werden relativ selten ausgeführt, sind meist schlecht testbar und decken nur in seltenen Fällen alle möglichen Fehlerszenarien ab.

Wie ist die Idee zu Ihrem Projekt entstanden?

Fetzer: Meist wird einfach angenommen, dass eine Software korrekt von der Hardware ausgeführt wird, und man sich daher auf die Validierung der Software beschränken könne. Tatsächlich hat sich die Zuverlässigkeit der Prozessoren von Computersystemen innerhalb der letzten Jahrzehnte dramatisch verbessert. Allerdings zeigen Statistiken, dass Hardwarefehler in großen Systemen immer noch häufiger sind als Softwarefehler. Der kommerzielle Vorteil unserer Software läge darin, dass sie es erlauben würde, auch billige Hardware, so genannte “Commodity Hardware”, für kritische Systeme einzusetzen.

Was versteht man unter „zuverlässigen Systemen“ – im Gegensatz zu kritischen Systemen?

Fetzer: Zuverlässige Systeme – so genannte „Dependable Systems“ oder auch „Trustworthy Systems“ – sind jene, in denen die Wahrscheinlichkeit für einen Systemfehler vernachlässigbar ist. Das bedeutet, dass Fehler erkannt und maskiert werden müssen; Komponentenfehler dürfen nicht zu einem Systemfehler führen. Zuverlässige Systeme müssen daher fehlertolerant ausgelegt werden: Oft benutzen sie eine Fehlervirtualisierung, um die Fehlerbehandlung zu vereinfachen. Bei der Virtualisierung wird ein schwierig zu behandelnder Fehler in einen einfacheren umgewandelt. Zum Beispiel könnten alle Hardwarefehler wie „Bit Flips“ oder falsche Ergebnisse in einen Crashfehler umgewandelt werden. Daher muss ein Programmentwickler nur Crashfehler von einzelnen Prozessen behandeln, anstatt alle Resultate selbst auf Korrektheit zu prüfen.

Welches Ziel verfolgen Sie mit Ihrer Software?

Fetzer: Die Software implementiert eine solche Fehlervirtualisierung. Das Ziel ist einfach: Wir wollen garantieren, dass ein Programm immer korrekt ausgeführt wird. Selbst wenn die Hardware Entwurfs-, Produktions- oder Laufzeitfehler aufweist, muss ein Programm entweder korrekt ausgeführt oder abgebrochen werden. Die Wahrscheinlichkeit inkorrekter Ausgaben kann hierbei vernachlässigt werden. Die Virtualisierung erlaubt zudem, kritische Programme auf Commodity Hardware sicher auszuführen und somit die Hardwarekosten zu reduzieren.

Welche Idee liegt Ihrer Software zugrunde?

Fetzer: Wir führen eine Fehlervirtualisierung durch. Programme werden hierzu codiert ausgeführt, und jede falsche Ausführung resultiert in einem fehlerhaften Code. Wir legen eine bestimmte Wahrscheinlichkeit fest, mit der alle Fehler entdeckt werden. Diese wird so klein gewählt, dass alle Systemfehler, die durch eine inkorrekte Ausführung verursacht werden, vernachlässigbar werden.

Wie zuverlässig lassen sich damit Unglücksfälle verhindern? Deckt Ihre Software alle eventuellen Risiken ab?

Fetzer: Wir garantieren mit einer vorgegebenen Wahrscheinlichkeit, dass keine fehlerhaften Ausgaben durch Hardwarefehler verursacht werden. Eine abgebrochene Aktion lässt sich anschließend nochmals lokal oder auch entfernt ausführen. Wir decken sämtliche Hardwarefehler ab, das heißt, wir brauchen keine Annahmen über die Art der Fehler zu machen und sind dennoch in der Lage, alle zu erkennen. Unabhängig von unserer Software muss natürlich auch sichergestellt werden, dass erstens die Software korrekt ist und zweitens auch wirklich die korrekte Software ausgeführt wird. Wir beschäftigen uns daher auch mit Model-Checking, einem Verfahren zur vollautomatischen Validierung von Programmen. Außerdem erforschen wir so genannte „Code Injection Attacks“, eine Technik, bei der Code in ein Computerprogramm oder System „injiziert“ wird. Meist werden mit dieser Methode negative Ziele verfolgt, wie beim Cracking, um unauthorisiert Zugang zu Systemen zu erhalten. Sie reduziert somit deren Zuverlässigkeit.

Welche Schwierigkeiten gibt es bei der Entwicklung?

Fetzer: Eine Codierung allgemeiner Programme ist sehr schwierig. Für kleine zyklische Programme, also solche, die zyklisch den gleichen Code ausführen – diese werden zum Beispiel in speicherprogrammierbaren Steuerungen (SPS) eingesetzt –, lässt sie sich teilweise noch statisch berechnen. Die meisten Anwendungen aber sind nichtzyklische Programme. Hier gibt es zu viele mögliche Pfade, um eine Codierung statisch zu berechnen. Die Lösung dieses Problems war die größte Hürde bei der Entwicklung, aber wir haben sie gemeistert. Bisher war zudem nur von einigen wenigen Operationen bekannt, wie sie sich codieren lassen; so war selbst die Division von zwei Zahlen nicht möglich. Inzwischen haben wir Codierungen für alle möglichen Operationen gefunden.

Wo sehen Sie mögliche Einsatzgebiete?

Fetzer: Wir haben natürlich gewisse Bereiche im Auge, in denen wir die Software gerne testen und einsetzen würden. So würde sich etwa der Automobilbereich anbieten. Aber auch viele andere kritische Anwendungsbereiche könnten profitieren. Bisher sind wir allerdings noch auf der Suche nach Partnern.

Wann wird die Arbeit an Ihrer Software abgeschlossen sein?

Fetzer: Wir haben einen Prototypen an der TU Dresden implementiert, der zurzeit durch Fehlerinjektionsexperimente validiert wird. Hierzu haben wir ein Werkzeug entwickelt, das nicht nur Fehler in Programme injiziert, sondern auch deren Ausbreitung und Erkennung verfolgt.

In naher Zukunft – etwa ab 2012 – wird die Variabilität von Transistoren auf Chips so zunehmen, dass ein großer Teil der Transistoren nicht korrekt funktionieren wird. Das bedeutet, dass es sehr viel schwieriger sein wird, die korrekte Ausführung von Programmen zu garantieren. Unsere Software aber wäre solch ein Garant, da die Wahrscheinlichkeit, dass sie eine fehlerhafte Ausführung nicht erkennt, vernachlässigbar ist. Wir hoffen, innerhalb der nächsten fünf Jahre für einen größeren Markt reif zu sein.

Kann sich die Menschheit irgendwann einmal hundertprozentig auf die Technik verlassen?

Fetzer: Hundertprozentige Zuverlässigkeit wird es nie geben. In kritischen Systemen sollten Computer daher nur dort eingesetzt werden, wo sie die Zuverlässigkeit erhöhen. Für viele Systeme bedeutet das allerdings, dass es weiterhin einen „Human in the Loop“ geben sollte, also einen Menschen, der die Systeme überwacht.

Tags:

Leave a Reply