events

DESIGN&ELEKTRONIK-Entwicklerforum HMI – Komponenten & Lösungen
DESIGN&ELEKTRONIK-Entwicklerforum HMI – Komponenten & Lösungen

Am 24. Mai 2012 findet das DESIGN&ELEKTRONIK-Entwicklerforum »HMI – Komponenten & Lösungen« mit begleitender Fachausstellung statt. Die Themen: »Bedienen und Beobachten: Technik, Know-how und Tools für das Design moderner Benutzerschnittstellen«.

Melden Sie sich jetzt an…

DESIGN&ELEKTRONIK-Entwicklerforum »Embedded-System-Entwicklung«
DESIGN&ELEKTRONIK-Entwicklerforum »Embedded-System-Entwicklung«

Auch in diesem Jahr veranstaltet die DESIGN&ELEKTRONIK wieder das Entwicklerforum »Embedded-System-Entwicklung« am 11. und 12. Juli 2012 in München. Neben einem technisch anspruchsvollen Vortragsprogramm ermöglichen verschiedene Workshops den Teilnehmern einen differenzierten Einblick in die Thematik.

Ausführliche Informationen:
www.embedded-entwicklerforum.de

Produkte des Jahres 2012

Linux /ARM

Linux: Embedded für alle
Linux: Embedded für alle

Linux ist heute erste Wahl geworden, wenn es um die Entscheidung für ein Betriebssystem in einem leistungsfähigen Embedded-System geht. Wie kann es sein, dass eine Open-Source-Software gerade bei Embedded-Systemen so erfolgreich ist?

Konferenz für ARM-Systementwicklung
Konferenz für ARM-Systementwicklung

Die große Konferenz für ARM-Systementwicklung am 11. und 12. Juli 2012 in München bietet Entwicklern die Gelegenheit, sich detailliertes Wissen über die aktuellen Cortex-Architekturen anzueignen, die mittlerweile zum Industriestandard avanciert sind.

Ausführliche Informationen:
www.arm-entwicklerkonferenz.de

embedded world Technology Report

Android & Embedded
embedded world Technology Report

Welche Embedded-Trends zeichnen sich ab? Im »embedded world Technology Report« gibt ein unabhängiger Expertenrat einen exklusiven Einblick in aktuelle Entwicklungen und zukünftige Trends im Embedded-Bereich.

Interessiert? Hier geht es zum kostenlosen Download

embedded world special

embedded world 2012
embedded world 2012

Wir haben aktuell von der weltgrößten Messe für die Embedded-Branche mit News, Videobeiträgen und Produktneuheiten berichtet.

Windows Embedded Standard 7

Windows Embedded Standard 7
Windows Embedded Standard 7

Was ist neu in Windows Embedded Standard 7? Lesen Sie alles rund um das neue Microsoft-Embedded-Betriebssystem Embedded Standard 7 in unserem Spezial.


Windows 7 - Special zum Download

Windows 7 -Special zum Download
Windows 7 -Special zum Download

20 Seiten Fachwissen – Das Windows-Embedded-Special als PDF-Download.


Marktübersichten Embedded

Marktübersichten aus dem Bereich Embedded

Software im sicherheitskritischen Bereich

Entwicklungssoftware
Entwicklungssoftware

Um die »Worst-Case Execution Time« zu erhalten, gibt es verschiedene Herangehensweisen – bequeme und weniger bequeme.


22. November 2011
Qualitätssicherung eingebetteter Systeme

Statische Analyse im Vergleich

Viele sicherheitsrelevante Eigenschaften eingebetteter Software, wie die definitive Abwesenheit von Laufzeitfehlern oder die Bestimmung der maximalen Laufzeit eines Programmteils, können Tests nur unzureichend nachweisen. Um dennoch überzeugende und kostengünstige Nachweise für solche schlecht testbaren Eigenschaften zu erbringen, existieren verschiedene Methoden zur statischen Analyse von Software, bei denen die zu analysierende Software nicht ausgeführt wird.

Von Kerstin Hartig, Dr. Jochen Burghardt und Dr. Jens Gerlach

Anzeige

Untersuchungsverfahren, bei denen der Prüfling nicht ausgeführt wird, lassen sich gemäß Bild 1 nach den zu untersuchenden Softwareeigenschaften, der Art des Nachweises und den dabei benutzten Methoden klassifizieren.

Bild 1: Klassifizierung der statischen Analyse
Fraunhofer FIRST 
zoom
Bild 1: Klassifizierung der statischen Analyse

Aus dieser Klassifizierung wird deutlich, dass »statische Analyse« ein sehr umfassender Begriff ist. Die Norm für Software in Bahnanwendungen (EN 50128) beispielsweise nennt Code-Reviews durch Entwickler als eine Form der statischen Analyse. Mit anderen Worten: Man kann nicht erwarten, dass für die statische Analyse immer Werkzeugen nötig sind oder dass es auch nur Werkzeuge gibt, die alle interessierenden Eigenschaften eines Programms analysieren können.

Das im Folgenden interessierende Teilgebiet statischer Analysemethoden ist in Bild 1 dunkel unterlegt. In diesem Bereich existieren Werkzeuge, die mittels abstrakter Interpretation die Abwesenheit von Laufzeitfehlern in C-Software nachweisen können.

So sollen »Astrée« von AbsInt, der »Polyspace Code Verifier« von MathWorks und »Value-Analysis«, ein Plug-in für das Open-Source-Framework »Frama-C« miteinander verglichen werden.

Was ist abstrakte Interpretation?

Die abstrakte Interpretation arbeitet das zu analysierende Programm symbolisch ab. Statt einzelner Eingabewerte kommen abstrakte Repräsentationen von Mengen möglicher Werte zum Einsatz; im einfachsten Fall hinreichend große Intervalle. Auf diese Weise lässt sich für jede Programmstelle die Gesamtheit der dort möglichen Variablenwerte bestimmen. Das Programm wird also nicht »konkret«, sondern »abstrakt« interpretiert. Damit lassen sich eine Reihe wichtiger Aussagen über so genannte Laufzeitfehler eines Programms machen. Auch unerreichbaren Code kann dieser Ansatz finden.

Tabelle 1 zeigt beispielhaft, welche Laufzeitfehler sich durch welche Wertemengen erkennen lassen.

Laufzeitfehler
Ausdruck, Anweisung
Wertenmenge für
kritische Werte
Nulldivision
m / n
n
0
Unter-/Überlauf m + n m+n ..., MININT-2, MININT-1 oder MAXINT+1, MAXINT+2, ...
Zugriffsfehler a[n] n ..., -2, -1 oder UPB, UPB+1, ...
Zugirffsfehler *p p (void*)0
uninitialisiert
m = n;
n
spezieller Wert <uninitialized>
Tabelle 1: Prüfbedingungen für Laufzeitfehler

Aus prinzipiellen Gründen kann eine abstrakte Repräsentation manche Wertemengen nicht exakt darstellen, stattdessen werden sie durch darstellbare Obermengen konservativ approximiert. Dadurch ist sichergestellt, dass eine fehlerhafte Programmstelle nie als fehlerfrei gelten kann. Daher lassen sich zuverlässige Aussagen über die Abwesenheit von Laufzeitfehlern treffen, was allein durch Tests oder Analysewerkzeuge, die auf der Grundlage von Ad-hoc-Heuristiken arbeiten, nicht möglich ist.

Hierin liegt der wesentliche Vorteil von Verfahren, die auf abstrakter Interpretation beruhen. Andererseits kann ein kritischer Wert (etwa Division durch Null) zwar in der approximierenden Obermenge liegen, aber nicht in der tatsächlichen Wertemenge. In diesem Fall meldet die abstrakte Interpretation einen Laufzeitfehler, der in Wirklichkeit gar nicht vorliegt - ein falscher Alarm.

Wenn es gilt, für ein Programm die Abwesenheit von Laufzeitfehlern mit Hilfe eines Werkzeugs nachzuweisen, so sind alle als möglicherweise fehlerhaft gemeldete Stellen nachzubearbeiten, um sie in echte und falsche Alarme aufzuteilen. Diese Arbeit übernimmt in den meisten Fällen die Person, welche die Analyse durchgeführt hat. Im Falle eines echten Alarms müssen die Entwickler die problematische Stelle im Quellcode ändern.

Für einen falschen Alarm dagegen ist zu begründen, warum in Wirklichkeit kein Laufzeitfehler vorliegt. Alternativ kann der Prüfer auch das Werkzeug zu einer genaueren Analyse veranlassen, um den Alarmstatus der betreffenden Stelle korrekt zu erkennen.

Dazu kann der Anwender etwa die abstrakte Mengenrepräsentation verfeinern oder Programmteile mehrfach unter verschiedenen Zusatzannahmen (beispielsweise für positive und nichtpositive Werte getrennt) analysieren lassen. Einige Werkzeuge (Astrée und Frama-C, siehe Tabelle 2) bieten Annotationen, die dem Code an ausgewählten Stellen hinzugefügt werden können, um den Analyseprozess dort gezielt zu beeinflussen.

Bild 2: Prozessschritte bei der statischen Analyse
Fraunhofer FIRST 
zoom
Bild 2: Prozessschritte bei der statischen Analyse

Mit solchen Annotationen lassen sich Schleifen ganz oder teilweise abrollen, Arrayelemente separat analysieren oder Analyseinformationen bestimmter Variablen detailliert ausgeben.

Dadurch steigt der Rechenaufwand für die Analyse nur dort, wo es nötig ist.

Der Arbeitsaufwand für die Analyse bestimmt sich hauptsächlich durch die detaillierte Untersuchung der gemeldeten Alarme.

Bild 2 verdeutlicht, dass statische Analyse ein iterativer Prozess ist, der eine enge Zusammenarbeit mit den Entwicklern erfordert.

1. Teil: Statische Analyse im Vergleich
2. Teil: Werkzeug fürs Abstrakte