Fortschrittlichere, gründliche statische Analysetools bringen den Aspekt der »Hardware Awareness« in die Verifikation und Validierung ein, was eine präzisere und effizientere Testab- deckung ergibt. Die Bedeutung der Hardware Awareness kann gar nicht hoch genug eingeschätzt werden, denn Unterschiede in den Compiler-Implementierungen, den Hardwarearchitekturen und der Speicherausrichtung können zu sehr großen Unterschieden bei den Testbedingungen und im Verhalten des Codes führen. Dazu das folgende Beispiel:
Wie der folgende Codeabschnitt zeigt, wirken sich diese Hardwareunterschiede auf die Testbedingungen, Eingabe und Pfade aus:
Ohne Hardware Awareness könnte die Test- oder Analysemethode nicht feststellen, ob die letzte Anweisung einen Integer-Überlauf verursacht (bei einem 32-bit-Zielsystem), oder ob dies nicht der Fall ist (bei einem 64-bit-Zielsystem). In einigen Fällen würde der Test mehr Durchläufe ausführen als notwendig, um Bedingungen abzudecken, die über die Fähigkeiten der Hardware hinausgehen, obwohl der potenzielle Überlauf in anderen Fällen unberücksichtigt bliebe. Eine hardwarebewusste statische Analyse dagegen erreicht die beste Kombination aus 100-prozentiger Abdeckung und einer minimalen Anzahl an Testfällen, um diese Abdeckung zu erzielen.
Ein weiterer wichtiger Hardwareunterschied ist die sogenannte Endianness, um die es in diesem Codeabschnitt geht:
Je nach der Endianness der zugrundeliegenden Hardware wird die Variable c hier auf 0xBE (Big Endian) oder 0xEF (Little Endian) gesetzt, was für die Testausführung sehr viel ausmacht.
Dass dieser subtile Unterschied desaströse Folgen haben kann, zeigt sich, wenn die folgende Anweisung zum obigen Codebeispiel hinzugefügt wird:
In einem Big-Endian-System würde diese Anweisung zu einer Division durch null führen und damit einen Absturz der Applikation oder eine andere unerwünschte Verhaltensweise bewirken. In einem Little-Endian-System dagegen wäre diese Anweisung durchaus zulässig. Eine Testmethode, die diese Unterschiede berücksichtigt, kann dementsprechend präzisere Ergebnisse hervorbringen.
Gründliche statische Analysetools mit Hardware Awareness bieten zusätzlich die folgenden weiteren Vorteile:
Die Entwicklungsteams können ihre Testkapazitäten steigern und ihre Kosten senken, da nicht für jeden Host und jedes Teammitglied die physische Hardware vorgehalten werden muss.
Die gründliche statische Analyse ist neben 100-prozentiger Codeabdeckung durch deutlich mehr Genauigkeit gekennzeichnet als traditionelle Testmethoden und bietet Embedded-Entwicklungsteams somit die Gelegenheit, ihre Testinvestitionen maximal auszuschöpfen. Wenn Teams jetzt auf den Zug aufspringen, sind sie besser aufgestellt, um qualitativ hochwertigeren Code hervorzubringen und die Testeffizienz mit der Zeit zu steigern.
Langfristig werden es die Ergebnisse und Kenntnisse, die sich mit einem solch rigorosen Testen gewinnen lassen, sogar möglich machen, eine »Null-Problem-Garantie« zu geben. Durch die geschilderten Prinzipien wird der Entwicklungsprozess mit wirkungsvolleren Prüfmöglichkeiten ausgestattet, um den Anforderungen safety- und securitykritischer Produkte gerecht zu werden und die Wahrscheinlichkeit von Softwareausfällen und Sicherheitslücken im Feld deutlich zu verringern.
Der Autor
Dr. Benjamin Monate
wurde in Drancy, Frankreich, geboren. Nach seinem Abschluss an der École Normale Supérieur de Cachan und seiner Promotion an der Universität Paris-Süd unterrichtete er ein Jahr an der École Polytechnique. Anschließend wechselte er zum Forschungsinstitut CEA (Commissariat à l’énergie atomique et aux énergies alternatives) und war dort als Laborleiter für den wissenschaftlichen und finanziellen Fortschritt verantwortlich.
Darüber hinaus war Dr. Monate Miterfinder der Technik, die später als Grundlage für TrustInSoft Analyzer dienen sollte, und leitete die Entwicklung des Produkts selbst. Im Mai 2013 gründete er zusammen mit zwei weiteren Kollegen vom CEA – Fabrice Derepas und Pascal Cuoqwar – das Unternehmen TrustInSoft, wo er derzeit als CTO tätig ist.