Compiler-Qualifizierung

Wie qualifiziert Validas Software Werkzeuge? Klassifizierung und Qualifizierung von Software Werkzeugen erklärt am Beispiel eines Compilers

Die Klassifizierung und Qualifizierung von Software-Werkzeugen ist ein zweistufiger Prozess. Um zu klären, ob ein Software-Werkzeug qualifiziert werden muss, wird es zunächst klassifiziert. Der hier beschriebene Prozess lässt sich sowohl auf Open-Source, als auf auch proprietäre Werkzeuge anwenden.

Zur korrekten Klassifizierung eines Tools betrachtet Validas als erstes den Kontext, in dem es benutzt wird. In den meisten kommerziellen Projekten werden Compiler als Teil einer Werkzeugkette benutzt. Der Compiler liest beispielsweise generierten Source Code (application.c) ein und generiert Object Code (application.o). Die folgende Abbildung beschreibt eine vereinfachte Toolkette mit einem Compiler.

VASE

Die Werkzeugkette in einem Projekt ist kunden- und projektspezifisch und kann auch andere Werkzeuge beinhalten, wie beispielsweise Diagnostikwerkzeuge, Code Analyse Werkzeuge oder Automatisierungssysteme. Dieser Kontext hilft dabei, die Verwendung des Werkzeugs zu verstehen und mögliche Gegenmaßnahmen zu potenziellen Fehlern zu finden.

Validas analysiert die Konfiguration oder auch den „ Use Case” des Werkzeugs. Der „Use Case“ beschreibt, wie das Werkzeug benutzt wird und welche Optionen verwendet werden. Im folgenden Beispiel wird der Compiler „GCC “ von der Kommandezeile aus aufgerufen.

VASE

Für jede gewählte Option des Werkzeugs müssen die potenziellen Fehler und ihre Auswirkung auf die funktionale Sicherheit ermittelt werden. Ein potenzieller Fehler von der Option “fdata-sections” ist, dass der Compiler nicht alle Datensymbole in eine eigene Sektion schreibt. In diesem Fall lässt sich argumentieren, dass dieser Fehler kein Einfluss hat auf die funktionale Sicherheit. Aber in diesem Beispiel nehmen wir an, dass dieser Fehler kritisch ist und einen Einfluss hat. Nach der Identifizierung aller relevanten, kritischen, potenziellen Fehlern des Werkzeugs sucht Validas nach geeigneten Gegenmaßnahmen zur Abdeckung dieser Fehler. Zur Entdeckung des oben beschriebenen Fehlers könnte man ein Binary Review durchführen.

Da diese Maßnahmen sehr schwierig und zeitintensiv sind, sind sie selten in Safety Manuals zu finden. Wenn diese Argumentation abgeschlossen ist, fügt Validas noch eine Argumentation für Anomalous Operating Conditions des Systems und für die Known Bugs des Werkzeugs aus dem Bug Tracker des Tool Providers hinzu.

Auf Basis der gesammelten Daten kann der Compiler klassifiziert werden. Falls die gefundenen Gegenmaßnahmen nicht ausreichen, um alle kritischen Fehler abzudecken, muss das Werkzeug qualifiziert werden. Hierbei ist die Validierung des Werkzeugs mit anforderungs-basiertem Testen die beste und flexibelste Wahl.

Während der Validierung analysiert Validas alle potenzielle Fehler des Werkzeus und schreibt anforderungs-basierte Testfälle für jeden Fehler. Die Hauptfunktion des Compilers ist, die Umwandlung von Source Code zu Object code nach einem gewählten Sprachstandard (z.B. C99).

Zum Testen dieser Hauptfunktion gibt es bereits kommerzielle Testsuiten, wie SuperTest von Solid Sands. Bei diesen Testsuiten ist es jedoch nicht klar, ob Optionen wie (neue) Complieroptimierungen ausreichend abgetestet werden. In vielen Projekten werden Optimierungsoptionen wie “-O2” verwendet. Die beste Lösung wäre die Entwicklung von Testsuiten auf Basis der potenziellen Fehler der unterschiedlichen Optimierungsoptionen, die in “-O2” enthalten sind. Dieses Vorgehen ist jedoch sehr kostspielig und manchmal auch unmöglich, da sehr viele atomare Optimierungsoptionen angezogen werden und nicht alle Teiloptionen bekannt sind. Proprietäre Compiler für kleine Zielhardware benötigen einen hohen Optimierungsgrad. In diesem Fall bietet Validas andere Strategien an, um die Compileroptimierungen zu behandeln.

Nach der Testanalyse sammelt Validas alle Werkzeugdaten in einem Tool Chain Analyzer Modell. Dieses Modell und die erstellten Erzeugnisse werden in einem Qualifizierungs-Kit (QKit) und einer projekt-spezifischen Testausführungsumgebung gebündelt. Das QKit führt die Testfälle aus, analysiert die Testfälle und generiert die notwendigen Dokumente.

Das QKit kann schnell angepasst und erweitert werden zur Requalifizierung des Werkzeugs. Mit dieser Infrastruktur sind Sie für Ihr nächstes Assessment gut gerüstet und können eine dynamische Entwicklungsumgebung unterstützen.

Sie wollen mehr wissen?

Wollen Sie ein Werkzeug oder eine Library qualifizieren? Dann sprechen Sie mit unserem Qualifizierungsexperten!

Dr. Thomas Flaig
Tel +49 (89) 5388669-295
E-Mail