Hinweis: Obwohl JavaScript für diese Website nicht unbedingt erforderlich ist, werden Ihre Interaktionsmöglichkeiten mit den Inhalten eingeschränkt sein. Bitte aktivieren Sie JavaScript für das volle Erlebnis.

Frequentis TAPtools® - Python in der Flugverkehrskontrolle

Einleitung

Frequentis ist einer der weltweit führenden Anbieter sicherheitskritischer Lösungen im Bereich Air Traffic Management und Public Safety & Transport. Mit über 500 Mitarbeitern weltweit bietet das Unternehmen seinen Kunden innovative, nutzerzentrierte Lösungen.

Frequentis setzt Python in seiner Produktfamilie TAPtools® ein, die sich auf das Segment Tower and Airport Tools der Flugverkehrskontrolle konzentriert. Diese Werkzeuge werden von Fluglotsen zur Erfassung von Wetterbedingungen, zur Steuerung der Landebahnbeleuchtung sowie zur Überwachung und Steuerung von Navigationshilfen verwendet.

Runway Control Screen

TAPtools®-Produkte zeigen Landebahn- und Wetterbedingungen für Fluglotsen, die die Anflüge eingehender Flugzeuge steuern Vergrößern

Ein kurzer Überblick

Eines der Probleme bei der Entwicklung von Flugverkehrskontrolllösungen ist, dass die einzigartigen Flughäfen, regulatorischen Rahmenbedingungen und Methodologien jedes Kunden spezifische und unterschiedliche Anforderungen an das Aussehen und Verhalten der Benutzeroberfläche stellen. Ein wesentlicher Teil der Implementierung eines Flugverkehrskontrollsystems ist die Anpassung seiner Benutzeroberfläche.

Anstatt jede Benutzeroberfläche von Grund auf für jeden Kunden neu zu entwickeln, hat Frequentis ein Werkzeug für das Layout von Benutzeroberflächen namens PanView entwickelt, ähnlich wie Produkte wie QDesigner oder Visual Studio. Dieses Werkzeug wird verwendet, um die Benutzeroberfläche zu entwerfen und zu erstellen, die dann von einer Software namens PanMachine ausgeführt wird. Die PanMachine läuft auf eigens entwickelter Hardware namens PowerPanel, einem 66MHz PowerPC mit 32 MB RAM und einem 12" Touchscreen-Eingabegerät.

Custom Interface Screenshot

TAPtools®-Benutzeroberflächen werden für die spezifischen Anforderungen jedes Flugverkehrskontrollkunden entwickelt Vergrößern

Mit diesen Werkzeugen können Frequentis-Entwickler schnell Prototypen von Layouts vor dem Kunden erstellen, was die Anzahl der notwendigen Design-Workshops mit dem Kunden bei der Bereitstellung einer Lösung erheblich reduziert.

Der Kunde ist König

PanView und die PanMachine wurden ursprünglich mit Lua als Skriptsprache entwickelt, um die Benutzeroberfläche mit der zugrundeliegenden Funktionalität des Flugverkehrskontrollsystems zu verbinden.

Diese Wahl erwies sich aus verschiedenen Gründen als problematisch für die Implementierer des Layouts

  • Es werden nur begrenzte Informationen zu Fehlern geliefert, was es für Entwickler schwierig macht, Fehler zu finden.
  • Variablen sind standardmäßig global und nicht lokal. Python ist genau umgekehrt, was Programme weniger fehleranfällig macht.
  • Lua hat keine Listen-Datenstruktur. Obwohl seine Dictionaries als Listen verwendet werden können, verursachte dies in der Praxis unnötige Komplexität.
  • Lua-Code ist bei kurzen Skripten leicht zu verfolgen, aber seine Syntax und minimale Standardbibliothek machen ihn für größere Programme unhandlich.

Bei einem sehr wichtigen Projekt wollte die Finnische Zivilluftfahrtbehörde (FCAA) ihre Benutzeroberflächen-Layouts nicht nur auf dem PowerPanel, sondern auch im Kontext eines Webbrowsers ausführen. Diese Anforderung war so wichtig, dass sie zur Neuimplementierung der PanMachine in Java führte, damit sie als Applet im Browser ausgeführt werden konnte. Da Lua nicht unter Java ausgeführt werden konnte, war dies ein guter Zeitpunkt für einen Austausch.

Python und Jython, die Java-Implementierung von Python, wurden gewählt, da sie es sowohl der PowerPC- als auch der Java-Implementierung der PanMachine ermöglichten, dieselben Benutzeroberflächen-Layouts auszuführen. Python, in C implementiert, wurde auf dem PowerPC verwendet, und Jython, in Java implementiert, wurde im Browser-Applet verwendet.

Implementierung in Python

Die Neuimplementierung mit Python verlief reibungslos. Der Python-Sprachinterpreter und die Support-Bibliotheken sind in C geschrieben und können mit den meisten C-Compilern kompiliert werden. In diesem Projekt funktionierte die Fähigkeit von Python, in anderen Code eingebettet zu werden, sehr gut. Die Dokumentation ist ausgezeichnet und die Beispiele sind leicht verständlich.

Die PowerPanel-Hardware verfügt jedoch über keine Festplatte und konnte daher die C-Quellen des Python-Interpreters nicht selbst kompilieren. Um dieses Problem zu umgehen, kompilierten die Entwickler Python auf einer anderen Maschine im Cross-Compiler-Verfahren, wodurch Objektcode für den PowerPC erzeugt wurde, indem ein Compiler verwendet wurde, der auf einem anderen Hardware-Typ lief. Sobald dies geschehen war, konnte Python-Bytecode, der auf beliebigen Maschinen erzeugt wurde, auf dem PowerPanel ohne Modifikationen ausgeführt werden; nur die anfängliche Kompilierung der Sprache selbst erforderte Cross-Kompilierung.

Das Umschreiben der Lua-Layouts

Nachdem die Python-basierte Implementierung der GUI-Layoutwerkzeuge abgeschlossen war, wurde es notwendig, die bestehenden Lua-Layouts mit Python neu zu schreiben. Unsere Layout-Coder nahmen Python mit offenen Armen an, da es all die Probleme löste, die sie mit Lua hatten, und es erleichterte das Schreiben neuer Codes durch Pythons geradlinige Syntax und umfangreiche Standardbibliotheken.

Bei diesem Übergang stellten wir fest, dass Pythons Syntax für neue Benutzer sehr einfach zu erlernen war und unsere Coder die Lua-Layouts vollständig umschreiben konnten, um die neuen Funktionen von Python zu nutzen, anstatt sie nur auf Sprachebene zu portieren.

Der fertige Layout-Code umfasst etwa 5000 Zeilen, was der Hälfte der Größe des Originalcodes entspricht, wesentlich wartungsfreundlicher ist und mit Jython in der Java-Portierung der PanMachine einwandfrei funktioniert.

Schlussfolgerung

Python ermöglichte es uns, Kundenanforderungen in einem zeitkritischen Projekt zu erfüllen und gleichzeitig die Gesamtqualität unserer Werkzeuge zu verbessern. Seit der Umstellung auf Python ist die Implementierung von Layouts aus einer Vielzahl von Gründen einfacher geworden

  • Pythons Laufzeit-Fehlerbehandlung erleichtert das Auffinden und Beheben von Problemen im Code. Die von Python erzeugten Stack-Traces, selbst wenn sie auf der benutzerdefinierten PowerPanel-Hardware im gestuften Produktionsbetrieb laufen, haben dazu beigetragen, den Test- und Debugging-Prozess zu beschleunigen.
  • Pythons umfangreiche Standardbibliotheken ermöglichen eine schnelle Entwicklung von Funktionalitäten, ohne das Rad neu erfinden zu müssen.
  • Pythons sehr saubere Syntax und seine auf Einrückung basierende Programmstruktur machen den Code viel leichter lesbar und wartbar.

Seit der Nutzung von Python in unserer Entwicklung ist die Zeit für die Erstellung neuer Benutzeroberflächen-Layouts für die TAPtools®-Produktfamilie um den Faktor drei reduziert worden.

Über den Autor

Michael Bartl kam im Jahr 2000 als Softwareentwickler zu Frequentis, um Telekommunikationshardware zu testen und entwickelte später Wettersysteme. Nach mehreren Jahren ist er nun Produktmanager für die TAPtools®-Produktfamilie. Seine Hauptleidenschaften sind Java, Python und Schach.