Die mit Java und GWT erstellte Hauptanwendung, eine Praxisverwaltung für Heilpraktiker, soll um zwei separate mobilfähige Web-Anwendungen ergänzt werden. Die eine Web App dient als mobile Ergänzung der Hauptanwendung für Praxisinhaber. Die zweite Web App ist ein Self-Service Portal für Patienten. Die Web-Anwendungen werden serverund client-seitig mit Kotlin implementiert. Die client-seitige Implementierung basiert auf Kotlin JS und wird mit dem KVision-Framework realisiert. Ein starker Fokus liegt auch auf der barrierefreien Umsetzung nach dem Barrierefreiheitsstärkungsgesetz (BFSG).
Technologien und Methoden: Kotlin JS, Java 25, GWT, KVision, Spring Boot, Accessibility, BFSG, Full-Stack-Entwicklung
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.
Technologien und Methoden: Java 21, Wildfly AS, Java EE, Jakarta EE, Maven, Legacy-Modernisierung, Refactoring, Performance-Optimierung
Um das eigene stagnierende Online-Geschäft zu beleben und den über den E-Commerce generierten Umsatz zu steigern, möchte der Kunde eine B2B-Webshop-Lösung als Individualentwicklung umgesetzt haben. Ziel ist die Entwicklung einer responsiven Single-Page-Application auf Basis des Google Web Toolkits, die in ein bestehendes Web-CMS eingebettet werden soll. Die Anbindung an das eigene SAP ERP-System geschieht über das OData Protokoll mit Apache Olingo. Technische Herausforderungen sind u.a. die zusätzliche nahtlose Integration weiterer intern entwickelten Webanwendungen (z.B. Produktkonfigurator, Ersatzteilverwaltung, etc.). Es wurde in diesem Projekt eine den Kundenwünschen entsprechende Implementierung erstellt, die erfolgreich weltweit ausgerollt werden konnte. Über die folgenden Jahre konnten weitere Anforderungen des Kunden an den Webshop, ermöglicht durch eine saubere Architektur, zügig implementiert werden, so z.B. die Anbindung von Kreditkarten-Providern, spezielle Anpassungen für den chinesischen Markt, Monitoring, und weitere fachliche Erweiterungen. Der Kunde konnte damit sein Ziel, den eigenen über den Webshop generierten Umsatz signifikant zu steigern, erreichen.
Eine vom Kunden begonnene und zeitlich in Verzug geratene Implementierung einer Firmware für Tanksensoren wurde evaluiert und weiterentwickelt. Die Lösung basiert auf Java und Spring Boot, wodurch es auf der schwachen Hardware der betroffenen IoT-Geräte zu Performance-Engpässen kommt. Implementierungsalternativen wurden ermittelt und durch Performance-Tests geprüft. Das Modularisierungskonzept wurde evaluiert und durch Reduktion von Komplexität verbessert. Das Team des Kunden wurde zu verschiedenen technischen Fragestellungen beraten und gecoacht (so z.B. Git Workflows, Modularisierung, Cloud Szenarien, Testen, Selenium Tests).
Technologien und Methoden: Java, Spring Boot, Spring Cloud, Keycloak, PostgreSQL, Architekturberatung, Performance-Tests, Coaching
Eine an der Universität eigenentwickelte Lösung zur Verwaltung von Studierendendaten hatte mit weitreichenden technischen Problemen durch mangelhafte Code-Qualität zu kämpfen. So mussten bestimmte, sich regelmäßig ändernde Semesterdaten für jedes neue Semester direkt im Source Code angepasst werden, da diese nicht als Stammdaten in eine Datenbank ausgelagert waren. Zudem gab es keinen automatisierten, sondern nur auf der IDE basierenden Build-Prozess. Daneben war die Anwendung von verschiedenen Sicherheitslücken betroffen (SQL Injection, Möglichkeit zu Enumeration Attacks, etc.). Die Anwendung wurde soweit es der Budgetrahmen zugelassen hat umgestellt, sodass die gravierendsten Probleme behoben wurden. Es wurde ein automatisierbarer Build-Prozess auf Basis von Maven eingeführt.
Technologien und Methoden: Java, Maven, Spring MVC, Hibernate, MySQL, Legacy-Modernisierung, Security-Audit, Refactoring
Der Kunde setzt ein selbstentwickeltes Werkzeug zur Abfrage und Verwaltung von Produktdaten ein, bei dem sich in der Vergangenheit einige technische Schulden angesammelt hatten. So litt das Projekt stark an dem Not-invented-here-Syndrom, wodurch viele Funktionalitäten unnötigerweise selbstentwickelt waren, die man üblicherweise als Bibliothek einbindet (z.B. Datenbank Connection Pool, Collection Framework, etc.). Für die Anwendung wurde daher ein umfassendes Refactoring durchgeführt, bei dem selbstentwickelte Standardfunktionalitäten durch Bibliothekscode ersetzt wurde, um die Wartbarkeit damit zu erhöhen. Zudem wurde die Anwendung auf Basis von Spring Boot umgestellt, wodurch bestimmte Funktionalitäten, wie die Anbindung an einen LDAP-Server, mit Spring umgesetzt werden konnte.
Technologien und Methoden: Java, Spring Boot, Spring Security, Spring MVC, Thymeleaf, Refactoring, Technologieberatung, Datenbankentwurf
Es wurde ein Plugin für Atlassian Confluence entwickelt und gewartet, das es erlaubt, den Upload bestimmter Dateitypen für Benutzer, Gruppen und Confluence-Bereiche einzuschränken. Das Plugin wurde anschließend auf dem Atlassian Marketplace vertrieben.
Der Kunde bildet intern seine Prozesse mit den Werkzeugen von Atlassian ab. Hierbei wurde er beratend unterstützt. Bestimmte kundenspezifische Anforderungen an die Atlassian Werkzeuge (z.B. Anpassung der automatisch versendeten Emails, Darstellung der Benutzernamen, Validierung von Eingaben in Jira Issues, etc.) wurden durch Entwicklung eigener Atlassian Plugins umgesetzt.
Der Kunde hatte die Anforderung, aufgrund von Datenschutzbestimmungen die Arbeitszeitbuchungen, welche innerhalb von Jira angelegt worden sind, nach einer bestimmten Frist zu anonymisieren. Hierfür wurde mit dem Atlassian SDK ein Plugin für Jira entwickelt, das diese Aufgabe übernimmt.
Ein E-Commerce Startup Unternehmen möchte eine schlecht wartbare, auf PHP basierende Web Shop-Lösung auf ein Java EE/JSF Backend migrieren. Die Neuimplementierung wurde entsprechend durchgeführt und in der AWS Cloud in Betrieb genommen. Eine der nichtfunktionale Anforderungen dabei, die für das Projekt gewährleistet werden musste, war es, die Anwendung stabil zu halten, während zur Primetime im Privatfernsehen für das Produkt ein Werbespot geschaltet wurde. Die fertige Implementierung wurde anschließend für ein weiteres Shop-Portal für Tiernahrung und Haustierbedarf angepasst und in Betrieb genommen.
Implementierung eines Webservices für die Abfrage von Informationen zu agrochemischen Produkten. Der zu realisierende Service wurde im Rahmen der existierenden IT-Infrastruktur innerhalb einer Serviceorientierten Architektur (SOA) mit den vorhandenen Webservices integriert. Die Produktdaten werden aus einem eigenen Datenbankschema geliefert, das über einen Datenbank-Prozess regelmäßig mit den Stammdaten aus mehreren Quellen synchronisiert wird. Der Synchronisierungsprozess ist mit Hilfe von PL/SQL Prozeduren realisiert. Eine auf Microsoft Silverlight basierende Webanwendung ergänzt den Webservice mit einer Benutzeroberfläche.
Technologien und Methoden: Java, C#, Oracle DB, Oracle SOA Suite, SOAP Webservices, SOA, Datenintegration, Projektleitung
Ein bestehendes, auf PHP basierendes Arbeitsvermittlungs- und Recruiting-Portal soll auf die JVM-Plattform migriert werden. Die Altimplementierung krankt an schlechter Wartbarkeit und kann nur sehr schwer mit neuen Features erweitert werden. Es wird eine komplette Neukonzipierung des Portals und eine Neuentwicklung mit Groovy und Grails durchgeführt.
Der Kunde betreibt eine eigenentwickelte GWT-Anwendung für die interne Stammdatenverwaltung. Dabei hat die Anwendung mit einigen architekturellen Schwächen und Designfehlern zu kämpfen. Es wurde dafür ein Anwendungsrahmen auf Basis von GWT eingeführt, mit dem die Probleme zum größten Teil behoben werden konnten. Weiter wurde ein entsprechendes Refactoring durchgeführt und ein stabiler Build-Prozess auf Basis von Maven etabliert.
Technologien und Methoden: Java, Spring Framework, Spring Security, Google Web Toolkit, JUnit, Code Review, Architekturberatung, Refactoring
JavaSpring FrameworkSpring SecurityGoogle Web Toolkit
Konzeption und Implementierung eines regelbasierten Mappingtools zur automatisierten Klassifizierung von Produkten in verschiedene Klassifizierungssysteme (eCl@ss, ETIM, UNSPSC, NE 100 PROLIST) und für das Mapping von Produktmerkmalsdaten. Regelwerke können in Form von XML-Dateien erstellt werden. Dadurch wird es möglich, anhand von Produktattributen, Produkte bestimmten Produktklassen eines Klassifizierungssystems zuzuordnen. Die Produktattribute selbst können mithilfe der Regelwerke auf bestimmte Wertebereiche oder vereinheitlichte Attributwerte normalisiert werden.
Ziel des Projekts war die Konzipierung und Entwicklung der Hauptanwendung eines Internet Startups. Das Produkt wurde entwickelt und zur Marktreife gebracht.
Implementierung einer generischen Reporting-Webanwendung zur Ausführung von vorgegebenen Datenbankabfragen und -prozeduren. Die Ergebnisse der Abfragen können spaltenweise durchsucht, gefiltert und sortiert werden. Gefilterte und sortierte Abfrageergebnisse können als CSV-Datei heruntergeladen werden. Das Hinzufügen neuer Abfragen geschieht generisch über die Datenbank, ohne dass die Konfiguration oder der Code der Applikation angepasst werden muss. Die Eingabemasken für die Parameter der Datenbankabfragen werden automatisch anhand den Parameterbeschreibungen aus der Datenbank gerendert.
Trainer und Coach für zahlreiche Seminare im Inhouse Trainingscenter und vor Ort bei Kunden. Seminare und Coachings zu den Themen Git, Clean Code und Software Craftsmanship, Spring Boot, Kotlin, Effective Java, Refactoring, Design Patterns mit Java, Atlassian Bitbucket, Google Web Toolkit (GWT), Vaadin, Apache Tomcat, Apache Maven, Apache Subversion und Test-Driven Development.
Technologien und Methoden: Java, Kotlin, Spring Boot, Vaadin, GWT, Training, Coaching, Clean Code