Sicherheitskritische Echtzeitanwendungen

Einfacher Programmieren mit Ada

19. Februar 2015, 8:08 Uhr | Ralf Higgelke
Diesen Artikel anhören

Fortsetzung des Artikels von Teil 3

Ravenscar-Profil und Restrictions

Bild 7: Dieser Code verletzt das Ravenscar-Profil, da der Haupttask einen Kind-Task erzeugt und eine Prozedur rekursiv aufgerufen wird
Bild 7: Dieser Code verletzt das Ravenscar-Profil, da der Haupttask einen Kind-Task erzeugt und eine Prozedur rekursiv aufgerufen wird
© Berger IT Cosmos

Mithilfe von »Pragma Restrictions« kann der Benutzer verschiedene Einschränkungen des Sprachumfangs von Ada implementieren, die zur Zertifizierung der Applikation gefordert werden. Anstatt im Code-Review den Code nach Verletzungen zu durchsuchen, übernimmt hier der Compiler diesen Job. Sind zum Beispiel rekursive Prozeduren nicht erlaubt, wird dies einfach mit dem »pragma Restriction(NO_RECURSION)« implementiert, und der Compiler kann erkennen, ob diese Restriktion verletzt wurde.

Das »Ravenscar Profile« wurde auf dem 8. International Real-Time Ada Workshop definiert. Es fasst die Restriktionen für sicherheitskritische Echtzeitapplikationen zusammen. Zum Beispiel werden im Bild 7 die Restriktionen »No_Task_Hirarchie« und »No_Recursion« verletzt, da der Haupttask einen Kind-Task erzeugt (Zeile 5) und eine Prozedur rekursiv aufgerufen wird (Zeile 14).

Im Kasten »Vergleich zwischen C und Ada« sind die Vorteile von Ada gegenüber C herausgestellt.

passend zum Thema

Vergleich zwischen C und Ada 

In den hier vorgestellten Beispielen können wir folgende Vorteile gegenüber C feststellen:

- In Ada stehen mächtige Sprachinstrumente zur Verfügung, zum Beispiel delay-Anweisungen, Time_Event, Tasks, Protected Objects oder Ada.Realtime package, einfach zu kodieren und portieren.

- Restrictions und Profile-Pragmas beschleunigen den Zertifizierungsprozess für sicherheitskritisch Projekte, da viele manuelle Checks durch den Compiler automatisiert werden.

- Mithilfe des Contract-basierten Programmierens seit Ada 2012 wird der Weg zur Zertifizierung weiter beschleunigt.

- Ada ist eine Sprache mit strengen Typen. Für einen »type number is range 0 .. 9« wird eine Exception ausgelöst, wenn diesem Typ beispielsweise der Wert 10 zugewiesen wird.

- Generierter Code, beispielsweise von »HALCoGen«, hat eine Menge toten Code. Derselbe Code, in Ada geschrieben, ist einfacher zu warten und hat keine »Codeleichen«.

- Ada ist nicht so weit verbreitet wie C, und so gibt es wenige Programmierer, die Ada beherrschen. Aber Ada ist nicht so schwer zu erlernen; es lohnt sich also zu überlegen, auf Ada zu migrieren. Zudem ist Ada auch stark in der Einbindung anderer Sprachen. 


  1. Einfacher Programmieren mit Ada
  2. Blinker in der »Task«-Version
  3. Blinker in der »Timer«-Version
  4. Ravenscar-Profil und Restrictions

Das könnte Sie auch interessieren

Jetzt kostenfreie Newsletter bestellen!