„Lesbarkeit und Wartbarkeit erhöhen“

„Lesbarkeit und Wartbarkeit erhöhen“

Als Universitätsprojekt begonnen, hat AdaCore inzwischen seinen Sitz in New York und Paris. Das im Jahr 1994 gegründete Unternehmen bietet Open Source Tools und Kompetenz für die Entwicklung von missionskritischer, sicherheitskritischer und zuverlässiger Software. embedded Design sprach mit Johannes Kanig, Senior Software Engineer bei AdaCore, über die aktuelle Version der Software.

embedded Design: Die Programmiersprache Ada hat ihren Ursprung in den 1970er Jahren, in diesem Jahr ist die Version Ada 2012 erschienen. Entstanden im Auftrag des amerikanischen Verteidigungsministeriums galt es, spezielle Anforderungen zu erfüllen. Welche Anforderungen musste die Sprache ursprünglich erfüllen und wie hat sie sich entwickelt?

Johannes Kanig: Zunächst galt es, eine High-Level-Sprache zu entwickeln, also ein relativ hohes Abstraktionsniveau zu bieten. Die Sprache sollte zudem gut lesbar sein, und auch die Wartbarkeit von Software galt es zu verbessern. Dies lässt sich durch gute Lesbarkeit erreichen, aber auch durch die Fähigkeit, typische Fehler so früh wie möglich zu entdecken oder auszuschließen. Die Programmiersprache musste gleichzeitig eine modulare Entwicklung von Software erlauben, die Wiederverwendung von Komponenten vereinfachen und die Programmierung von parallel zu erledigenden Aufgaben ermöglichen, so genannte Tasks. Außerdem sollte sie möglichst unabhängig von der Umgebung, also von Betriebssystem oder Prozessortyp, sein. Dies trifft auch auf parallele Tasks zu. Um konkurrierende Dialekte der Sprache zu vermeiden, standardisierte die ISO im Jahr 1983 die erste Version der Sprache, Ada 83. Gleichzeitig wurde eine umfassende Testsuite, die Ada Conformity Assessment Test Suite (ACATS), entwickelt, mit der Compiler-Entwickler überprüfen können, ob ihr Compiler dem Standard entspricht. Seither wurde Ada weiterentwickelt, um den Anforderungen der Benutzer, insbesondere im sicherheitskritischen und Embedded-Bereich, gerecht zu werden. So gestattet seit 1995 die Version Ada 95 Anwendern, objektorientiert zu programmieren. Ada 2005 fügte eine umfangreiche Container-Bibliothek hinzu. Und schließlich bietet Ada 2012 neue Funktionen, die Lesbarkeit und Wartbarkeit weiter erhöhen.

embedded Design: Wodurch unterscheidet Ada sich von anderen vergleichbaren state-of-the-art Programmiersprachen?

Kanig: Im Vergleich zu anderen Sprachen zeichnet sich Ada u.a. durch eine weitgehende Typisierung aus. Zudem besteht die Möglichkeit, Wertebereiche für numerische Variablen anzugeben. Das lässt sich einerseits vom Compiler ausnutzen, um schnelleren oder kompakteren Code zu erzeugen. Andererseits kann der Wertebereich auch während der Ausführung überprüft werden. Insgesamt führt das zu erhöhter Lesbarkeit des Programms, da es mehr Informationen enthält, und zu besserer Wartbarkeit. Denn wenn eine solche Variable ihren Wertebereich verlässt, handelt es sich um einen Bug entweder im Programm selbst oder in der Erwartung des Programmierers. Es besteht noch eine Reihe anderer Checks oder Überprüfungen zur Laufzeit, die ähnlich wie die eben beschriebenen Wertebereiche funktionieren.

embedded Design: Wo liegen die Haupteinsatzgebiete von Ada?

Kanig: Prinzipiell gilt Ada als ‚general-purpose‘-Programmiersprache und kommt also in allen Bereichen zum Einsatz. So haben wir bei AdaCore die graphische Entwicklungsumgebung GPS für Programmierer in Ada entwickelt. Die eben genannten Funktionen machen die Sprache aber vor allem da unentbehrlich, wo Fehlervermeidung und Wartbarkeit sehr wichtig sind. So hat sich Ada vor allem in der Luft- und Raumfahrt, bei Eisenbahnsystemen oder bei Bank- und Trading-Software durchgesetzt. In diesen Bereichen gilt, besonders Softwarefehler zu vermeiden. Weniger offensichtlich ist, dass solche Software oft auch extrem langlebig sein muss. Anwender setzen Produkte 20 Jahre oder länger ein. Daher nimmt die Wartbarkeit einen sehr hohen Stellenwert ein.

embedded Design: Welches sind die wichtigsten Erweiterungen der Version Ada 2012?

Kanig: Die wichtigste Neuerung von Ada 2012 ist die Möglichkeit zusätzliche Überprüfungen in einem Programm vorzunehmen. Dafür existieren zwei Möglichkeiten: Die so genannten Contracts erlauben Programmierern für jede Funktion eines Programms zu beschreiben, unter welchen Bedingungen es erlaubt ist, diese Funktion aufzurufen (Vorbedingung), und was diese Funktion bewerkstelligt (Nachbedingung). Die zweite Möglichkeit bieten Invarianten: Sie gestatten Programmierern, Eigenschaften von Variablen des Programms zu beschreiben, die über die bereits in Ada existierenden Checks hinausgehen. Eine weitere Weiterentwicklung ist die verbesserte Unterstützung von Multiprozessor-Systemen. Und schließlich wurde für die seit dem Jahr 2005 bestehenden Container auch eine leichter zu lesende und schreibende Iterator-Syntax eingeführt, wie sie auch andere Programmiersprachen einsetzen.

embedded Design: Eines Ihrer Kernprodukte ist die Entwicklungsumgebung GNAT Pro. Wie ist sie konzipiert?

Kanig: Zusätzlich zu Compiler und Debugger bietet GNAT Pro u.a. die graphische Entwicklungsumgebung GPS, GNATmetric zur Erfassung von Quellcode-Metriken, das Framework GNATtest für Unit-Tests, GNATstack zur statischen Analyse des Stacks, einen Dokumentationsgenerator und Tools zur Ermittlung von Code Coverage und Profiling. Das Besondere der Produkte ist das Geschäftsmodell: Unsere gesamte Software ist Open Source, hat weder Gültigkeitsbeschränkung noch Registrierungsschlüssel. GNAT Pro wird als Abonnement angeboten. Zusätzlich zur Software erhalten die Anwender auch Support.

embedded Design: AdaCore beteiligt sich an den europäischen Forschungsprojekten Opencoss und pSafecer. Sie stellen die Zertifikation von Software in den Vordergrund. Wie beteiligen Sie sich an diesen Projekten?

Kanig: Vor dem Einsatz von Software oder Hardware in bestimmten kritischen Bereichen müssen diese zertifiziert werden. Die genaue Form der verlangten Zertifikation hängt stark vom Einsatzbereich ab. In der Regel muss aber gezeigt werden, dass die Software selbst sowie der Entwicklungsprozess bestimmten Anforderungen genügen. Heute wird die Software oft in einem monolithischen Block zertifiziert. Wird nach der Zertifikation noch eine Änderung vorgenommen, muss die gesamte Software erneut zertifiziert werden. Da dieser Prozess aufwendig und teuer ist, suchen Unternehmen und Institute in diesen Forschungsprojekten nach besseren Lösungen. Beide Projekte zielen darauf ab, eine Komponenten-basierte Entwicklung und Zertifikation zu erlauben. AdaCore entwickelt dabei ein Zertifikationsverwaltungssystem, um die Zertifikation per Komponente sowie die inkrementelle Zertifikation zu ermöglichen: Minimale Änderungen sollten dabei nur minimalen Zertifikationsaufwand bedeuten. Dieses Verwaltungssystem heißt Qualifying Machine und automatisiert Prozesse, die heute noch manuell gemacht werden.

AdaCore
www.adacore.com

Das könnte Sie auch Interessieren