- Astrée
- Screenshots
- Beispiele
Astrée ist eine Software zur statischen Programmanalyse, die C-Programme automatisch auf Laufzeitfehler überprüft.
Astrée analysiert handgeschriebene oder automatisch erzeugte C-Programme mit komplexer Speichernutzung, aber ohne Rekursion oder dynamische Speicherallokation. Damit bietet sich Astrée vor allem zur Analyse von sicherheitskritischen eingebetteten Anwendungen an, insbesondere in den Bereichen Transport, Medizintechnik, Nuklearanlagen, Luft- und Raumfahrt.
Astrée meldet folgende Arten von Laufzeitfehlern:
NULL-Zeiger, uninitialisierte und hängende Zeiger).assert“-Diagnostik).Astrée behandelt Gleitkommaberechnungen präzise und sicher und berücksichtigt alle möglichen Rundungsfehler.
Desweiteren meldet Astrée garantiert unerreichbaren Code und Lesezugriffe auf uninitialisierte Variablen.
Astrée kann an benutzerspezifische Anforderungen angepaßt und in bestehende Entwicklungsprozesse integriert werden.
© 2007 Xavier Rival2003 verifizierte Astrée die Abwesenheit von Laufzeitfehlern in der primären Flugkontrollsoftware des Fly-by-Wire-Systems eines Airbus-Modells. Die Analyse der 132 000 Zeilen C-Code erfolgte vollautomatisch und benötigte nur 80 Minuten auf einem 2,8-GHz-PC mit 300 MB Speicher (sowie nur 50 Minuten auf einem AMD-Athlon-64-Rechner mit 580 MB Speicher). 2004 wurde Astrée erweitert, um die Flugkontrollsoftware eines anderen Airbus-Modells zu analysieren.
Courtesy of NASAAnfang 2008 verifizierte Astrée die Abwesenheit von Laufzeitfehlern in der C-Version der Andocksoftware des Weltraumfrachters „Jules Verne“, des ersten automatischen Transferfahrzeugs der ESA. Die Analyse erfolgte vollautomatisch. Am 3. April 2008 dockte der Frachter erfolgreich an der Internationalen Raumstation (ISS) an.
Astrée-Analysen sind…
Manche Analysatoren berücksichtigen nicht alle möglichen Laufzeitfehler, oder konzentrieren sich bewußt auf die wahrscheinlichsten davon. Solche Tools können daher nur zum statischen Testen benutzt werden (d. h. zum Auffinden von häufig auftretenden Bugs), nicht aber zur Verifikation (also zum Nachweis der Abwesenheit jeglicher Laufzeitfehler).
Astrée-Analysen sind hingegen sicher. Das Tool berücksichtigt stets alle möglichen Laufzeitfehler, und wird niemals einen davon verschweigen. Dies ist unentbehrlich zur Verifikation von sicherheitskritischer Software. Zugleich ist Astrée in der Lage, nur wenige oder gar keine Falschalarme zu produzieren.
Für manche Analysatoren (z. B. solche, die sich auf Computerbeweise verlassen) müssen Programme mit vielen Induktionsinvarianten annotiert werden.
Astrée verlangt in aller Regel nur sehr wenige Annotationen. Bestimmte Arten von Programmen kann es sogar vollautomatisch untersuchen, ohne jede Hilfestellung vom Benutzer.
Manche statischen Analysatoren benötigen sehr viel Zeit (typischerweise mehrere Stunden zum Analysieren von 10 000 Codezeilen) oder verbrauchen extrem viel Speicher.
Im Gegensatz dazu ist Astrée äußerst effizient und kann große industrielle Anwendungen problemlos bewältigen. Beispielsweise benötigte Astrée nur 80 Minuten (auf einem 2,8-GHz-PC) zur Analyse der Flugsteuerungssoftware eines Airbus-Models, die aus 132 000 Zeilen C-Code besteht. Seit 2005 kann Astrée auf Multicore-Hardware laufen, was die Analysen noch weiter beschleunigt.
Universelle statische Analysatoren unterstützen alle in der jeweiligen Programmiersprache geschriebenen Anwendungen. Sie können nur in dieser Programmiersprache ausdrückbare Programmeigenschaften berücksichtigen. Domainspezifische statische Analysatoren schränken die Anwendungsklasse ein, um spezifische Programmstrukturen ausnutzen zu können.
Astrée hingegen ist spezialisierbar und kann an die Anwendungsklasse angepaßt werden. Dadurch können Eigenschaften der Anwendungsklasse berücksichtigt werden, die zur Durchführung komplexer Beweise unerlässlich sind. Beispielsweise berücksichtigt Astrée bei Control/Command-Programmen die logischen und funktionalen Eigenschaften der Control-and-Command-Theorie.
Bei der statischer Programmanalyse gilt es stets, zwischen Analysepräzision und Rechenaufwand abzuwägen. Sehr präzise Analysatoren sind in der Regel auch sehr langsam, während sehr schnelle Analysatoren in der Regel sehr ungenau sind.
Astrée hingegen ist parametrisierbar – die Feinabstimmung von Präzision und Rechenaufwand kann vom Benutzer frei gewählt werden. Der für die Analyse verwendete Abstraktionsgrad kann individuell an die Struktur des zu analysierenden Programms angepaßt werden.
Astrée besteht aus verschiedenen Modulen, den sogenannten abstrakten Domains. Diese Module können so aktiviert und parametrisiert werden, daß anwendungsspezifische Analysatoren entstehen, die vollständig an eine bestimmte Anwendungsklasse oder spezifische Benutzeranforderungen angepaßt sind.
Zur besseren Unterstützung spezifischer Anwendungsklassen kann Astrée durch die Einführung zusätzlicher Module erweitert werden, die die Präzision der Analyse erhöhen.
Wenn Sie Astrée an Ihren eigenen Anwendungen ausprobieren möchten, nehmen Sie Kontakt mit uns auf.