Die Porsche AG betreibt für ihr Fuhrparkmanagement Schlüsseltresore an jedem Produktionsstandort. Jeder Tresor ist mit Schließfächern und einem Touchscreen-Display ausgestattet und agiert als Client in der zu entwickelnden Softwareinfrastruktur. Ziel des Projektes war die Entwicklung eines Backends, welches die Tresor-Clients mit Fahrzeugdaten versorgt und ggf. die Öffnung von Tresortüren zum Zwecke der Hinterlegung/Abholung von Fahrzeugschlüsseln. Gleichwohl sollte ein JavaScript-Frontend und die Umsetzung des Porsche-UI's mit Bootstrap5 erledigt werden. Ich wurde in einem englischsprachigen, agilen Team (Scrum) eingesetzt.
Das Backend wurde mit PHP7 und dem Framework Symfony5 realisiert; als DBMS wurde MS-SQL und Doctrine als DBAL/ORM-System eingesetzt. Ferner wurde das Backend mit diversen SAP-SOAP-Endpunkten verbunden; welche User-Authentifikation, Fahrzeug- und Schlüsseldaten bereitstellen.
SOAP Repository
U.a. war ich für die Architektur und Entwicklung einer "SOAP-Repository"-Lib verantwortlich. Die entwickelte Lib bietet ein an
Doctrine angelehntes, fluides Query-Interface und stellt einen Teil des Programmkerns dar.
Tresorkommunikation
Die Backend-induzierte Öffnung von Tresorfächern stellte eine Herausforderung hinsichtlich der eingeschränkten
Connectivität zwischen Backend und Clients dar. Das Backend durfte nicht mit dem Terminal kommunizieren. Als Lösung
habe ich einen JavaScript-Proxy entwickelt, welcher als Bridge SOAP-Pakete des Backends an den lokalen SOAP-Service
des Clients weiterleitet.
Commons
Die in Sprints organisierten Arbeitspakete wurden in Symfony-typischen Models-Views-Controller-Pattern realisiert; diese
Dinge stellten ein routiniertes Tagesgeschäft für mich dar.
Summary:
- Erstellung von Unit- und Integrationsstests mit PHPUnit
- Entwicklung benötigter JavaScript-Module u.a. mit jQuery
- Code-Reviews und Master-Merges
- Entwicklung einer PHP/SAP SOAP-Schnittstelle, hier insbesondere die Entwicklung einer Repository-Library, welche ein fluentes Interface für SAP- SOAP-Calls bietet
- Rewrite von veraltetem Programmcode