Der Blätterkatalog benötigt Javascript.
Bitte aktivieren Sie Javascript in Ihren Browser-Einstellungen.
The Blätterkatalog requires Javascript.
Please activate Javascript in your browser settings.
DESIGN ELEKTRONIK 03 2023 23 www designelektronik de Variablennamens auswirken obwohl dieser nicht in die getestete Funktion involviert ist Siehe dazu die folgende Konsolenausgabe gcc -DVERBOSE -Iincrement c -o ub ub Run test increment array Address data 0x7ffe8eb68f50 140731292749648 Address name 0x7ffe8eb68f60 140731292749664 Before increment array {1 3 5 7} - name foobars After increment array {2 4 6 8} - name goobars increment array {1 3 5 7} {2 4 6 8} --> PASSED Entwicklungsteams implementieren jedoch nur selten derart fundierte Tests – insbesondere dann nicht wenn der Code komplexer ist als in diesem Beispiel »Hardware Awareness« bei der statischen Analyse 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 ■ ■ Auf 64-bit-Zielsystemen bedeutet » long« üblicherweise 64 bit und » int« meist 32 bit ■ ■ Auf 32-bit-Zielsystemen bedeuten dagegen sowohl »long« als auch » int« in der Regel 32 bit Wie der folgende Codeabschnitt zeigt wirken sich diese Hardwareunterschiede auf die Testbedingungen Eingabe und Pfade aus long double that int i { return long i * 2 } double that 0x7FFFFFF0 Ohne Hardware Awareness könnte die Testoder 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 unsigned char msb short n { return * unsigned char * n } unsigned char c msb 0xBEEF 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 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 float x 1000 0xBE - int c 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 ■ ■ Hardwarebewusste Analysen sind durchführbar ohne dass ein physisches Zielsystem an den Host angeschlossen wird ■ ■ Zielsystemtests können bereits in einer frühen Entwicklungsphase laufen auch wenn noch keine physische Hardware verfügbar ist ■ ■ 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 Zukunft der gründlichen statischen Analyse 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 safetyund securitykritischer Produkte gerecht zu werden und die Wahrscheinlichkeit von Softwareausfällen und Sicherheitslücken im Feld deutlich zu verringern hs