Client Story

Erfolgreicher Technologiewandel mit Transpiler von Badger Systems

PSI Logistics

Vom Monolith zur Vertikalisierung
Umstellung eines gewachsenen Warenwirtschaftsportfolios auf eine neue Technologie

Eine strategische Konzernentscheidung stellte PSI Logistics vor die Notwendigkeit, ihr komplett gewachsenes Warenwirtschaftsportfolio auf eine neue Technologiebasis umzustellen.

Die Aufgabe bestand darin, einen single-threaded C++-Monoliten (> 1 Mio. LoC) in eine multi-threaded JEE-Architektur zu übersetzen.

Über unseren Kunden PSI Logistics

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 h auseigenen Compilerbau-Know-how – konnten wir dies erfolgreich realisieren.

Unsere Lösung

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.

Sagen Sie "Hallo!"
Starten Sie Ihr Projekt mit einer kurzen Nachricht

Rufen Sie uns einfach an, schreiben Sie eine kurze E-Mail oder nutzen Sie die Vorlage in unserem Kontaktformular. Wir melden uns gerne bei Ihnen und beantworten Ihre Fragen.

+49 221 6777 2460

info@badgersystems.de