PSI Logistics

Erfolgreicher Technologiewandel mit Transpiler von Badger Systems

Zurück zur Übersicht

Der PSI Konzern zählt zu den weltweit führenden Anbietern im Bereich leittechnischer Softwarelösungen für Energieversorger und Industrieunternehmen.

PSI Logistics realisiert IT-Vorhaben in der Logistik in jeder Größenordnung, branchenübergreifend, national und international, für Unternehmen aus Industrie, Handel und Dienstleistung. Mit innovativen Produkten hilft PSI Logistics ihren Kunden dabei, Arbeit, Energie und Rohstoffe in besonderem Maße wirtschaftlich, sozialverträglich und umweltschonend einzusetzen und eröffnet ihnen dadurch einen Wettbewerbsvorteil.

 

Herausforderung: Vom Monolith zur Vertikalisierung

Eine strategische Konzernentscheidung stellte PSI Logistics vor die Notwendigkeit, ihr komplett gewachsenes Warenwirtschaftsportfolio auf eine neue Technologiebasis umzustellen. Um einen gesunden Technologiewandel und den reibungslosen operativen Betrieb im Unternehmen zu gewährleisten, sollte kein harter Technologie-Switch über die gesamte Kundenlandschaft erfolgen, sondern eine partielle kundenbasierte Portierung gegeben sein. Mit der Möglichkeit kundenbasierter Portierungen aus der bisherigen C++- in die Java-Welt mithilfe eines von Badger Systems speziell entwickelten Transpilers – basierend auf unserem hauseigenen Compilerbau-Know-how – konnten wir dies erfolgreich realisieren.

 

Aufgabe

Die Aufgabe bestand darin, einen single-threaded C++-Monoliten (> 1 Mio. LoC) in eine multi-threaded JEE-Architektur zu übersetzen. Mithilfe der LLVM/Clang-Tooling API haben wir eine Analyse des C++-Quelltextes auf Besonderheiten gestartet, die nicht direkt nach Java übersetzt werden können. Insbesondere waren dies Mehrfachvererbung, (partielle) Spezialisierungen von Templates, Pointer-Arithmetik, IO mit Streams, Iteratoren (insbesondere Arithmetik), Destruktoren und enum-int-Konvertierung. Bis auf partielle Template-Spezialisierung traten alle Besonderheiten auf.

Im zweiten Schritt haben wir ein flexibles System aus Text-Templates zur einfachen Generierung von Java-Code-Fragmenten aus den C++-Artefakten (AST-Knoten) ersonnen. Diese wurden durch Traversierung des ASTs mittels Clangs Tooling-API angesteuert und konnten bereits einfache C++-Programme nach Java übersetzen.

Im dritten Schritt adressierten wir die Spezialfälle und lösten Probleme wie Mehrfachvererbung, Iteratoren, Templates, so dass der Transpiler den gesamten Quelltext portieren konnte.

 

Fazit

Mit dem Badger Systems-eigenen Know-how zum Compilerbau konnten wir die Entwicklung eines Transpilers erfolgreich implementieren. So ist ein mächtiges Instrument entstanden, mit dem der Kunde das existierende IT-Asset, trotz kontinuierlicher Weiterentwicklung, ständig nach Java portieren kann.

Zurück zur Übersicht

go to top

Badger — Ein Name mit Tiefgang

Badger, (deutsch: der Dachs), ist bekannt dafür, dass er gerne tief gräbt. Seine Baue, die er im Waldboden anlegt, können enorme Ausmaße erreichen und verfügen mitunter über mehrere Etagen. Zahlreiche Gänge, die auch der Luftzufuhr dienen, verbinden den Wohnkessel in rund fünf Metern Tiefe mit der Oberfläche. Ein Dachsbau kann über Jahrzehnte, vermutlich sogar Jahrhunderte benutzt werden. Jede Generation dehnt ihn weiter aus und fügt weitere Wohnkammern hinzu. Ein in England untersuchter Dachsbau umfasste 50 Kammern und 178 Eingänge, die durch insgesamt 879 Meter Tunnel miteinander verbunden waren.

[Quelle: wikipedia]

Durchdringen der Tiefe, Nachhaltigkeit, Systematik: Das steht sinnbildlich für die Herangehensweise von Badger Systems. So wurde der Dachs unser Namensgeber — und Wappentier.