Ausgangslage
Das zentrale Produkt des Kunden, eine Webanwendung zur Verwaltung einer Sportliga und von Sportturnieren, hatte über viele Jahre einen für den Kunden unüberwindbaren Berg an technischen Schulden angehäuft. So wurde die Migration weg von dem nicht mehr weiter gepflegten Framework JBoss Seam hin zu Jakarta EE dem Team des Kunden aus eigener Anstrengung nicht mehr möglich. Gleichzeitig hat die Verwendung von Seam eine Aktualisierung der verwendeten Technologien (z.B. Hibernate, Wildfly AS, JSF, etc.) blockiert. Es kam zum Rückstau bei der weiteren Feature-Entwicklung. Es wurde daher ein umfassendes Refactoring der Anwendung durchgeführt und dabei JBoss Seam vollständig entfernt. Anschließend konnte Jakarta EE 10 verwendet und die eingesetzten Frameworks (z.B. Hibernate) aktualisiert werden. Zusätzlich wurde die PDF-Generierung auf Apache FOP umgestellt und diese damit flexibler gestaltet. Der ursprünglich sehr auf manuelle Schritte aufbauende Build-Prozess wurde durch einen automatischen Maven-Build ersetzt. Nach der Modernisierung der verwendeten Technologien wurde das Projekt weiter bei den Themen Refactoring, Performance Optimierung, Abbau von technischen Schulden, Umsetzung einer robusten Software-Architektur und Testabdeckung begleitet. Für die Testabdeckung wurden automatisierte Selenium-Oberflächentests eingeführt. Dazu wurde eine DSL (Domain-specific language) mit Hilfe von Kotlin implementiert, die es unter Verwendung des Page Object Patterns ermöglicht, neue Tests sehr schnell zu implementieren. Durch diesen Ansatz sind die Tests sehr leicht wartbar und stabil in der Ausführung. Die Durchführung der Tests findet in einer Bitbucket CI-Pipeline statt und werden dort innerhalb von Docker-Containern gestartet. Dadurch ist auch die containerisierte lokale Ausführung in einem einheitlichen Setup möglich.
Tätigkeit
Ablösung von JBoss Seam, Architekturmodernisierung, Performance-Verbesserung, Internationalisierung, PDF-Export, REST-API, automatisierte UI-Tests.
Vorgehen
- Schrittweise Entfernung von JBoss Seam und Migration auf aktuelle Jakarta-EE-Technologien.
- Umstellung der PDF-Generierung auf Apache FOP und Einführung eines automatisierten Maven-Builds.
- Aufbau einer Kotlin-DSL für wartbare Selenium-Oberflächentests mit Page-Object-Pattern und CI-Ausführung in Docker.
Ergebnis
- Aktualisierte Technologieplattform und wieder handlungsfähige Feature-Entwicklung.
- Reduzierte technische Schulden und bessere Wartbarkeit.
- Stabile automatisierte Oberflächentests in Bitbucket CI.
Technologien und Methoden im Kontext
In diesem Projekt kamen unter anderem Java 21, Wildfly AS, Java EE, Jakarta EE, Maven, JAX-WS, JAX-RS, JSF zum Einsatz. Fachlich-methodisch standen Legacy-Modernisierung, Refactoring, Performance-Optimierung, Testautomatisierung, Coaching im Vordergrund.