Generierung von Komp... Examensarbeiten Modellbasierte Erzeu...

Diplomarbeit

Einschränkungen von Programmiersprachen

 

Zusammenfassung

Bei der Entwicklung von sicherheitskritischer Software sollte eine Programmiersprache verwendet werden, die möglichst wenig fehleranfällige Konstrukte enthält. Daher gibt es Bestrebungen, gängige Programmiersprachen, die fehleranfällige Konstrukte enthalten, einzuschränken. Die Einschränkungen dienen dazu, besonders fehleranfällige Konstrukte auszugrenzen. Dadurch entstehen Teilmengen von Sprachen, die geeignet sind zur Entwicklung sicherheitskritischer Software. Solche Teilmengen heißen auch „sichere“ Teilmengen. Neben diesen Teilmengen gibt es auch Bestrebungen, Programmiersprachen durch bestimmte Erweiterungen für die Entwicklung von sicherheitskritischer Software geeigneter zu machen.

In dieser Arbeit wurden nach Identifizierung existierender Teilmengen von C, C++ und Ada einige ausgewählte hinsichtlich folgender Aspekte untersucht:

  1. Einschränkungen
  2. Erweiterungen
  3. Unzulänglichkeiten
  4. Vorgesehener Benutzerkreis

MISRA C ist bei den Teilmengen von C eher geeignet für die Programmierung von sicherheitskritischer Software, da sie auf der einen Seite die meisten Einschränkungen und keine Erweiterungen hat, und auf der anderen Seite die größte Toolunterstützung hat.
Für Ada existieren nicht viele Teilmengen. Für die Programmierung von sequentieller Software mit nur einem Prozess (Task in Ada) empfiehlt sich die Anwendung von SPARK. Für die Programmierung von nebenläufiger Software, wo viele zeitkritische Prozesse eine Rolle spielen ist Raven geeignet.
Für C++ wurde nur eine Teilmenge identifiziert. Die Einschränkungen dieser Teilmenge betreffen nicht die Entwicklung sicherheitskritischer Software sondern die Entwicklung von eingebetteten Systemen.

Die Werkzeuge, die zur Unterstützung der jeweiligen Teilmenge entwickelt wurden (u.a. statische Analysetools, Compiler, usw.), wurden untersucht und soweit möglich miteinander verglichen.

Die Programmiersprache Java wurde hinsichtlich besonders fehleranfälliger Konstrukte untersucht. Es wurde sechs unsichere Konstrukte identifiziert. Darauf basierend wurden sechs einschränkende Programmierregeln für Java erstellt.

Basierend auf den erstellten Programmierregeln wurde ein Analysetool entwickelt, um eine Java-Datei hinsichtlich der Einhaltung der Regeln zu überprüfen und bei Verstoß eine entsprechende Meldung auszugeben.

Bearbeiter: Bernard Kiiru

Betreuer: Dipl.-Math. Jens Palluch