Untersuchung von Fehlertoleranz durch Software

BearbeiterIn:Jean-Christopher Jäger
Titel:Untersuchung von Fehlertoleranz durch Software
Typ:
Betreuer:Veldema, R.; Blaß, T.; Philippsen, M.
Status:abgeschlossen am 1. Oktober 2015
Vorausetzungen:
Thema:

Voraussetzungen

In modernen Autos werden fast alle Funktionen durch Software gesteuert. Dies erstreckt sich über kleine Sensoren, zu Bremssystemen bishin zum Zünden der Zündkerzen. Leider ist die in Autos verbaute Hardware nicht vollkommen fehlertolerant. Ein Problem ist z.B., dass bei steigender Temperatur des Motors die Wahrscheinlichkeit von Speicherfehlern zunimmt. Eine Lösung ist hierbei, in der Software zusätzliche Kontrollen durchzuführen, die sicherstellen, dass keine Bit-Fehler aufgetreten sind. Es kann fatale Folgen haben, derartige Tests zu vergessen. Toyota hat im Jahr eine Sammelklage über 3 Mrd. Dollar verloren, weil ihre Software nicht immer Test auf korrumpierte Daten durchgeführt hat, siehe [1]. Unter anderem hat unter bestimmten Vorraussetzungen die Bremsanlage versagt.
Um die Fehlertoleranz der Software zu erhöhen, gibt es beispielsweise folgende Möglichkeiten:

  • Variablen, Felder, Objekte duplizieren.
  • Code zweimal ausführen
  • Code parallel ausführen.

Das Problem ist, dass Autohersteller einerseits versuchen Geld einzusparen, so dass eine vollständige Replizierung von Code und Daten unwirtschaftlich ist, im Fehlerfall aber hohe Kosten durch mangelnde Fehlertoleranz entstehen können. Hier ist also ein goldener Mittelweg gefragt.

Thema

Am Lehrstuhl für Informatik 2 wurde eine neue Programmiersprache entwickelt, welche die Software-Entwicklung im Bereich eingebetteter Systeme effizienter gestaltet. Dies schließt auch die Entwicklung im Automotive-Bereich mit ein. Die neue Sprache ist kurzgefasst eine Mischung aus Java und Google GO [2], die um periodische Echtzeit-Tasks erweitert wurde. Ein Übersetzer übersetzt diese Programme zu C++, das dann durch einen Standard-C++-Compiler zu einem ausführbaren Programm übersetzt wird.
In dieser Arbeit sollen Sie den Compiler der Sprache so erweitern, dass (möglichst automatisch) kritische Variablen (Array-Elemente, Objektfelder, usw.) repliziert werden und zur Laufzeit miteinander abgeglichen werden, um Fehler im Datenspeicher zu erkennen und zu beheben.
Dabei sollen auch kritische Berechnungen repliziert werden, um Multicore-Systeme optimal auszunutzen. Außerdem soll untersucht werden, wie groß der Sicherheitsgewinn durch mehr Replizierung ist, wenn mehr Speicher verwendet wird.
Um die entwickelten Konzepte zu testen, soll ein einfaches Werkzeug zur Fehlerinjektion verwendet bzw. erstellt werden.

Meilensteine

Bachelorarbeit:

  • Einarbeitung in die Programmiersprache und den Compiler
  • Spracherweiterung zur Identifizierung kritischen Codes und kritischer Daten
  • Datenduplizierung und Konsistenztests
  • Code-Duplizierung + Konsistenztests
  • Messungen
  • Ausarbeitung

Um das Thema als Masterarbeit zu bearbeiten, kommt folgender Punkt hinzu:

  • Automatische identifizierung von kritischen Daten und Code durch eine Kombination von Heuristiken und Profiling

Literatur
1 2

watermark seal