Komponentenbasierte Softwareentwicklung für sicherheitskritische eingebettete Systeme (2003)

Eingebettete Systeme, wie Antiblockiersysteme oder Motorsteuerungen dringen immer mehr in sicherheitskritische Anwendungsbereiche vor. Die Systeme werden zunehmend verteilt und untereinander vernetzt. Die Software in diesen Systemen gewinnt sehr stark an Bedeutung und wird gleichzeitig immer umfangreicher und komplexer. Es werden daher neue Methoden und Verfahren benötigt, um diese Komplexität zu beherrschen. Ziel der vorliegenden Arbeit war die Entwicklung einer Konzeption für die komponentenbasierte Softwareentwicklung für sicherheitskritische eingebettete Systeme. Dabei wurden zuerst die Eigenschaften von sicherheitskritischen eingebetteten Systemen untersucht. Daraus wurden Anforderungen an die Konzeption abgeleitet. Zusätzlich wurden Anforderungen an die komponentenbasierte Entwicklung definiert. In der anschließenden Untersuchung zum Stand der Technik wurden Methoden und Werkzeuge analysiert und bewertet, die eine komponentenbasierte Softwareentwicklung oder eine formale Verifikation der Software ermöglichen. Die gestellten Anforderungen konnten dabei jeweils nur teilweise erfüllt werden. Im Rahmen der durchgeführten Untersuchungen wurde festgestellt, dass sich ein synchrones, zeitgesteuertes Ausführungsmodell sehr gut eignet, um die Anforderungen erfüllen zu können. Deshalb wurden dann der synchrone Ansatz reaktiver Systeme und eine zeitgesteuerte Architektur für verteilte Systeme näher untersucht. Außerdem wurde die Model-Checking Technologie für die Verifikation von Sicherheitseigenschaften ausgewählt. All diese Technologien bilden die Grundlage für die entwickelte Konzeption. Auf der Basis des sychronen Modells wurde dann ein Komponentenmodell für synchrone Softwarekomponenten definiert. Dieses besteht aus einem reaktiven Teil und einem Datenverarbeitungsteil. Das Verhalten der Komponente wird durch den reaktiven Teil bestimmt, der die Datenverarbeitung steuert und ein deterministisches Verhalten aufweist. Es wurde ein Konzept für die komponentenbasierte Entwicklung mit synchronen Softwarekomponenten entwickelt. Der Entwurf der Software erfolgt dabei in einem Entwurfsmodell auf graphischer Ebene. Dabei definiert der Applikationsentwickler Baugruppen als funktionale Einheiten. Diese Baugruppen werden schrittweise weiter verfeinert, bis sie sich durch die vorhandenen Komponenten realisieren lassen. Die Softwarekomponenten können dazu aus einer Bibliothek ausgewählt, parametriert und durch Signale miteinander verbunden werden. Aus dem komponentenbasierten Entwurf kann durch automatische Codegenerierung direkt ablauffähiger Code erzeugt werden. Durch das synchrone Zeitmodell und die formale Semantik der verwendeten Sprache ESTEREL ist eine formale Verifikation von Sicherheitseigenschaften möglich. Damit kann nachgewiesen werden, dass die Software bestimmte sicherheitskritische Anforderungen erfüllt und somit das Vertrauen in die Software erhöht werden. Die Verifikation erfolgt dabei vollautomatisch durch Model-Checking. Zur Evaluierung der entwickelten Konzeption wurde eine Werkzeugumgebung entworfen und prototypisch implementiert. Die Werkzeugumgebung ViPER (Visual Programming Environment for Embedded Real-Time Systems) erlaubt die Entwicklung verteilter eingebetteter Systeme mit synchronen Softwarekomponenten. Das entwickelte Konzept wurde an zwei Beispielen aus der Automobilforschung erprobt. Das erste Beispiel ist ein einfaches Steer-by-Wire System. Dabei wurde die mechanische Lenkung eines Go-Kart durch eine elektronische Lenkung ersetzt. Bei dem zweiten Beispiel handelt es sich um Software für einen Prototypen eines Brake-by-Wire Systems, das bei der DaimlerChrysler Forschung entwickelt wurde. Dabei konnte eine Reihe von Sicherheitseigenschaften der Software nachgewiesen werden.