Fachlicher Schwerpunkt dieses Freiberuflers

Erfahrener Fullstack-Entwickler (Java / Angular / Android)1

verfügbar ab
01.09.2020
verfügbar zu
100 %
davon vor Ort
100 %
PLZ-Gebiet, Land

D6

Städte
Frankfurt am Main
50 km
Kontaktwunsch

Ich möchte ausschließlich für Projekte in diesen Einsatzorten kontaktiert werden.

Kommentar

ausschliesslich Rhein-Main-Gebiet

Projekte

11/2015 - Heute

4 Jahre 8 Monate

Smart-Home-Anwendung

Rolle
Fullstack-Entwickler
Kunde
Open-Source-Projekt
Einsatzort
Altenstadt
Projektinhalte

Konzeption und Entwicklung einer Applikation ("Smart Appliance Enabler") zur Integration beliebiger Geräte (Wärmepumpe, Waschmaschine, Wallbox für Elektroautos, ...) in eine Smart-Home-Steuerung. Für die Kommunikation mit der Steuerung habe ich das SEMP-Protokoll des Wechselrichtergestellers SMA implementiert, eine Kombination aus UDDI und REST. Als Laufzeitumgebung habe ich Spring Boot gewählt, das auf einem Raspberry Pi läuft. Dessen digitale Schnittstellen werden über Pi4J angesprochen, um digitale Schalter zu schalten und Impulse von digitalen Stromzählern auszuwerten. Ferner wurden Adapter für HTTP und Modbus implementiert, damit entsprechende Schalter/Stromzähler ebenfalls gesteuert bzw. ausgewertet werden können.
Das Frontend wurde als Webanwendung mit Angular und TypeScript entwickelt, wobei als UI-Framework Angular Material zum Einsatz kam. Über Spring Boot werden REST-Services bereitgestellt.
Unit-Tests habe ich mit Jest erstellt. Für die Durchführung der Builds und Tests - auch des Web-Fontends - wird Maven verwendet. Dabei wird das Artefakt als war-Datei und auch als Docker-Image bereitgestellt. Das Docker-Image wird auch in AWS deployt, umd mit Testcafe und Browserstack e2e-Tests auszuführen.
Für die Entwicklung werden die IDEs IntelliJ (für den Spring Boot-Teil) und Webstorm (für Angular) verwendet.
Das Projekt habe ich als Open-Source-Projekt initiiert, das bei Github unter dem Namen "SmartApplianceEnabler" gehostet wird. Es wird von SMA als Referenzimplementierung empfohlen und der Anwender-Support läuft dementsprechend in einem Forum des Herstellers.

Produkte

GitHub

Git

Java

Spring Boot

Angular

IntelliJ

WebStorm

Docker

Angular Material

Browserstack

Testcafe

JAXB

HTML5

CSS

Jest

JUnit

Pi4J

TypeScript

Maven

Mockito

01/2018 - 09/2020

2 Jahre 9 Monate

Neu-Entwicklung von www.bahn.de

Rolle
Fullstack-Entwickler
Kunde
Deutsche Bahn
Einsatzort
Frankfurt am Main
Projektinhalte

Als Fullstack-Entwickler habe ich die Neu-Entwicklung von -Hyperlink entfernt- mit vollständig responsivem Design gestaltet. Das beinhaltete die Entwicklung von Frontend-Komponenten auf Basis von Vue.js und Angular sowie Middleware-Komponenten auf Basis von Koa.js und Nest.js. Die Implementierung erfolgte in TypeScript. Weil das Layout exakt vorgegeben wurde, konnte kein CSS-Framenwork verwendet werden, d.h. sämtlich Controls wurden auf Basis von HTML und CSS selbst entwickelt. Die Kommunikation zwischen Frontend und Middleware sowie zwischen Middleware und Backend erfolgte über REST-Schnittstellen.
Die Builds wurden mit GitLab CI/CD-Pipelines als Docker-Images erstellt und in AWS-Clustern deployt. Die Entwicklung erfolgte mit IntelliJ/WebStorm unter Linux. Unit-Tests wurden mit Jest erstellt. e2e-Tests auf Basis von Protractor und Cucumber wurden zum Testen der Web-Anwendung erstellt, wobei gleichzeitig das Layout durch Visual Regression Tests getestet wurde. Alle Schichten des Software-Stacks wurden isoliert und integrativ automatisiert getestet, wobei die Testabdeckung überwacht und kontinuierlich erhöht wurde. Das Projekt war aufgrund der Größe (> 400 Personen) nach SAFe organisiert, um eine Vielzahl von SCRUM-Teams zu synchronisieren. Ich gehörte zu einem von drei SCRUM-Teams, die für die Entwicklung im Bereich Web-Frontend/Middleware verantwortlich waren. Die Stories, Tasks und Bugs wurden von uns in Jira verwaltet. Die Dokumentation erfolgte in Confluence.

Kenntnisse

Scrum

Produkte

Angular

Atlassian Confluence

Docker

Git

Gitlab CI/CD

HTML5

CSS

Atlassian JIRA

Jest

JSON

Koa.js

Nest.js

Kubernates

OpenShift

Protractor

REST

TypeScript

Vue.js

AWS

Linux

09/2013 - 12/2017

4 Jahre 4 Monate

Mobiles Terminal für Zugbegleiter der Deutschen Bahn

Rolle
Android-Entwickler
Kunde
Deutsche Bahn
Einsatzort
Frankfurt am Main
Projektinhalte

Bei 12.000 Zugbegleitern der Deutschen Bahn dient das "Mobile Terminal (MT)" zur Kontrolle von Fahrkarten und eTickets, zum Verkaufen und Drucken von Tickets etc.. Die aktuelle Generation mobiler Terminals basiert auf Android 4.2. Die einzelnen fachlichen Funktionen sind dabei in Form separater Apps implementiert, die individuell aktualisiert werden können. Meine Aufgabe bestand zunächst im Konzipieren einer geeigneten Enwicklungsumgebung, wobei die Wahl auf ein virtualisiertes Linux mit Eclipse und Maven fiel. Im Rahmen der Software-Entwicklung war ich verantwortlich für die Implementierung der Apps "Fahrpreisnacherhebung" und "Druck" sowie teilweise auch "Verkauf". Jede App besteht aus entsprechenden Activities, Fragmenten und Services, wobei die Parametrisierung sowohl über App-spezifische SQLite-Datenbanken als auch über eingebundene Native-Bibliotheken erfolgte.
Für die Kommunikation der Apps untereinander war eine projektspezifische IPC-Implementierung vorgegeben. Auch für technische Transaktionen sowie fachliche (langlaufende) Transaktionen gab es projektspezfische APIs, die von den Apps genutzt wurden.
Parallel zur Implementierung der Apps bestand meine Aufgabe in der Erstellung eines Frameworks zur Testautomatisierung, welches wiederum auf UIAutomator basiert. Dieses wird inzwischen nicht nur im Rahmen der Entwicklung eingesetzt, sondern aufgrund der Vielzahl der Testfälle auch durch den Systemtest. Zugriffe auf die Hardware (Drucker, Belegscanner, Barcodeleser, Magnetkartenleser, NFC) erfolgten über einen Hardware-Abstraction-Layer, für den ich zwecks automatisierter Testdurchführung eine durch das Testframework steuerbare Mock-Implementierung entwickelt habe. Das Bauen der Software und die automatisierte Ausführung der Tests erfolgen mit Jenkins, der auf einer AWS-Cloud läuft. UI-Tests, die auf der Android-Hardware ausgeführt werden sollen, werden an Jenkins-Slaves delegiert, die auf einer Linux-Maschine laufen, an der mehrere MT angeschlossen sind.

Produkte

Android

Apache Subversion

Eclipse

Java

Maven

Android SQLite

Oracle SQL Developer

Atlassian JIRA

Jenkins

Atlassian Confluence

HP QualityCenter

VirtualBox

01/2010 - 02/2017

7 Jahre 2 Monate

Android-basierte Navigation für Hängegleiter

Rolle
Android-Entwickler
Kunde
eigenes Projekt
Einsatzort
Altenstadt, Hessen
Projektinhalte

AndroFlight - die von mir entwickelte Android-Applikation für Gleitschirm-/Drachenpiloten bietet alle Funktionen eines Variometers mit Log-Funktion, ermöglicht aber durch den Zugriff auf Online-Resourcen wertvolle Informationen, die ein Offline-Variometer nicht bieten kann.
Die Benutzeroberfläche besteht aus diversen Activities, wobei die zentrale Activity Karten von Google Maps und OpenStreetMap unterstützt. Die umfangreiche Analyse und Aggregation der Flugdaten (Sensoren: GPS, Druck, Beschleunigung) sowie die Kommunikation mit Online-Resourcen sind als Service implementiert. Luftraumdaten werden nach dem automatischen Download in die SQL-Datenbank importiert und für performante Selektion im Rahmen des Renders aufbereitet. Für den Upload der Flugaufzeichnung in eine Flugdatenbank wurde ein SyncAdapter implementiert. Die Art und Weise der anzuzeigenden Informationen kann sehr flexibel über Preferences konfiguriert werden, die – wie die Anwendung insgesamt – lokalisiert (Englisch und Deutsch) angezeigt werden. Die Verwendung von Google Guice zur Dependency Injection erlaubt eine sehr gute Testbarkeit und klare Trennung der fachlichen Funktionen. Neben dem Emulator verwende ich zum Testen verschiedene Handies sowie ein Tablett. Die App ist über den Android Play Store verfübar und hat bisher ca. 25.000 Downloads.

Produkte

Eclipse

Android Studio

Android

Apache Subversion

Git

10/2010 - 08/2013

2 Jahre 11 Monate

Komplettsystem für touristische Prozesse

Rolle
Backend-Entwickler
Kunde
DER Deutsches Reisebüro
Einsatzort
Frankfurt am Main
Projektinhalte

Als Reaktion auf starke Veränderungen der Strukturen und Wertschöpfungsketten der Reiseindustrie durch das Internet entwickelt das DER ein neues System zur Abbildung der gesamten touristischen Prozesse. Die Umsetzung erfolgt durch verschiedene Teams, welche jeweils für einen Teilprozess verantwortlich waren. Ich war zunächst ein Jahr im Team Booking tätig, dessen Aufgabe im Management (CRUD) von Reservierungen für eigene Produkte und auch Produkte aus Fremdsystemen bestand. Über Schnittstellen wurden die Reservierungen für nachgelagtere Prozesse (Dokumentendruck, Payment, …) verfügbar gemacht. Durch meinem Wechsel in das Team Product verlagerte sich der fachliche Fokus auf die Definition und den Lebenszyklus von touristischen Produkten und den mit ihnen assoziierten Regeln für deren Abbildung immerhin ca. 400 Entitäten erforderlich sind.
Die Entwicklung erfolgt modellgetrieben auf Basis von openArchitectureWare. Während im Bereich Booking die technische Modellierung mit UML unter Verwendung von MagicDraw erfolgt, werden im Bereich Product textuelle Modelle (XText) erstellt. Generiert wurden große Teile der Hibernate-basierten Persistenzschicht (JPA), das Grundgerüst für die EJB-basierten Services sowie der RCP-Client.
Im Rahmen der Umsetzung neuer Anforderungen und Fehlerbehebungen erstreckte sich meine Tätigkeitsbereich vom RCP-Client bis zur Datenbank. Dazu erfolgte in der Regel zunächst die Anpassung der Modelle und die Erstellung/Änderung der Geschäftslogik in den Services. Obwohl der Persitenz-Code in großen Teilen generierte wurde, waren auch hier Anpassungen vorzunehmen (z.B. Validatoren) und natürlich SQL-Scripts zur Migration der vorhandenen Daten zu erstellen und das Datenbankänderungstool Liquibase zu integrieren. Die Anpassung des RCP-Clients bestand vor allem in der Anpassung des Layouts sowie der Anbindung von Service-Aufrufen, wenn die Generierung nicht leistungsfähig genug für das gewünschte Verhalten war. Neben der Erfassung von Produkren durch den RCP-Client wurden Produkte auch aus anderen System importiert. An der Entwicklung der dafür notwendigen WebService- und Datei-basierten Schnittstellen war ich ebenfalls maßgeblich beteiligt. Die Erstellung von JUnit-Test war obligatorisch, teilweise unter Verwendung von Mocks (Mockito). Als Development- und Deploymentplatform wurde JBoss 4.3 eingesetzt. Weil die Entwicklung auf eigener Hardware erfolgte, konnte ich Linux als Betriebssystem einsetzen. Auch auf den Deploymentservern in den diversen Testumgebungen wurde Linux eingesetzt. Das zentrale Tool für Anforderungen und Fehlermeldungen und zur Abstimmung zwischen Entwicklern, Fachdesignern und Testern war Jira.

Produkte

Oracle

JBoss

Apache Subversion

Eclipse

Java

JUnit

XML

JMS

Magicdraw

openArchitectureWare

Oracle SQL Developer

Liquibase

SmartSVN

JPA

JMX

Dozer

Hibernate

Mockito

log4j

XML

01/2010 - 09/2010

9 Monate

Modernisierung der Warenwirtschaft

Rolle
Backend-Entwickler
Kunde
Rewe
Einsatzort
Bad Soden am Taunus
Projektinhalte

Host-basierte Programme des Warenwirtschschaftssystem eines großen Handelskonzerns sollten durch Web-Anwendungen ersetzt werden. Dazu wurden zunächst Prototypen auf Basis verschiedener Technologien (u.a. auch „Host-like“ im Browser) entwickelt, um die Akzeptanz bei den Host-gewöhnten Nutzern zu ermitteln. Letztlich erfolgte die Umsetzung auf Basis von Spring MVC. Auch die Services und die Datenbank-Zugriffe wurden mit Spring realisiert. Meine Aufgabe bestand in der Umsetzung fachlicher Teile der Anwendungen – von der Web-UI bis zum Datenbankzugriff.
Daneben habe ich Teile eines Frameworks zur Steuerung von Batch-Verarbeitungen auf dem Host entwickelt. Darauf aufbauend habe ich größere Batch-Programme von COBOL nach Java portiert. Weil die Tests auch auf dem Host ausgeführt wurden, habe ich mir entsprechendes Host-Know-How angeeignet.
Aufgrund meiner Erfahrungen aus vorangegangenen Projekten habe ich eine Continuous-Integration-Umgebung auf Basis von CruiseControl, Maven und Archiva unter Linux aufgebaut.

Produkte

Eclipse

Apache Subversion

Apache Tomcat

Cruise Control

Maven

Archiva

JavaScript

Spring

09/2009 - 12/2009

4 Monate

Portierung von COBOL-Programmen nach Java

Rolle
Backend-Entwickler
Kunde
Rewe
Projektinhalte

Das Host-basierte Warenwirtschschaftssystem eines großen Handelskonzerns sollte von COBOL nach Java portiert werden. Die
Umsetzung erfolgt auf Basis einer service-orientierten Architektur, welche den Einsatz der Services in verschiedenen Umgebungen (Host, Java SE/EE) erlaubt. Meine Aufgabe bestand in der Entwicklung von Framework-Komponenten und der Portierung von COBOL-Unterprogrammen. Die Datenbank-Zugriff wurde über Spring JDBC realisiert.

Produkte

Eclipse

Apache Subversion

Spring

z/OS

Java

05/2005 - 09/2009

4 Jahre 5 Monate

Optimierung der Bargeld-Logistik

Rolle
Backend-Entwickler
Kunde
Wincor-Nixdorf
Einsatzort
Neu-Isenburg
Projektinhalte

Das Produkt dient der mandantenfähigen Verwaltung der physischen Bargeldströme und damit zusammenhängender Kosten zwischen Tresoren verschiedener Organisationen (Banken, Wertpapiertransportunternehmen, Bundesbank) und Geldautomaten. Das Ziel besteht in der Optimierung von Zeitpunkt und Geldmenge, um eine Minimierung der Kosten zu erreichen. Ein umfangreiches Reporting bietet allen Beteiligten ein hohes Maß an Transparenz.
Das Produkt-Team bestand im Maximum aus 15 Entwicklern und 5 Testern.
Die Anwendung ist Teil einer Produktlinie, wobei jedes Produkt als eine Kombination von SOA-Services und Platform/Infrastruktur-Services realisiert ist, die auf Basis von J2EE entwickelt wurden.
Neben der Entwicklung von Teilen des Produktes war ich auch für die Neu- und Weiterentwicklung von Platform-Diensten verantwortlich und habe die Entwicklungsinfrastruktur maßgeblich mitgestaltet:

Infrastruktur
- Konzeption und Realisierung einer produktlinienkonformen, betriebssystem-unabhängigen "Continous-Integration" (CI) Entwicklungsumgebung auf Basis von CruiseControl, Maven und Rational Application Developer (RAD), wobei für die Integration diverse Anpassungen an Maven-Plugins vorgenommen werden mussten
- Konzeption und Bereitstellung einer produktlinienkonformen Test-Infrastruktur auf Basis von JUnit, Cactus und EasyMock, die besondere Unterstützung für Aspekte wie Service-Mocking, Mandantenfähigkeit oder Concurrency-Test bietet und dadurch Entwickler zur Erstellung von Tests ermutigt. Die Testabdeckung wird kontinuierlich durch Cobertura überwacht und von der Projektleitung verfolgt.
- Einrichtung eines Projekt-Wiki (SnipSnap) zum Austausch von technischen Informationen unter Entwicklern (Probleme und Lösungen, Best Practices, ...)
Unterstützung von anderen Produkt-Teams bei der Nutzung der Entwicklungs-infrastruktur

Platform
- Konzeption eines Service zur Verwaltung von Benutzern und Mandanten, wobei durch eine Realisierung von Aspekten wie Authentifizierung und Autorisierung in JAAS-konformer Weise eine Integration in WebSphere ("Custom User Registry") und JBoss ("Login-Module") ermöglicht wird. Auch die Mandantenfähigkeit wird dabei sichergestellt. Flexible Password-Policies erlauben das Erzwingen der Einhaltung von Sicherheitsrichtlinien.
- Konzeption und Realisierung eines Service zum Propagieren von Geschäftsereignissen, sowie von weiteren Services, welche diese Geschäftsereignisse journalisieren oder sie als Report an "Stakeholder" weiterleiten (z.B. per Email).
- Für die Aufbereitung und Lokalisierung wurde ein weiterer Service konzipiert und realisiert, der ebenfalls zur Anzeige von Geschäftsereignissen im User Interface verwendet wird.
- Konzeption und Realisierung eines Service sowie zusätzlicher Tools zur Erzeugung und Verwaltung von Lizenzen sowie zur Sicherstellung der in den Lizenzen vorgegebenen Nutzungsbestimmungen
- Konzeption und Realsierung eines JCA Resource Adapters (CCI-Interface) zur Einbindung von Logik auf externen Systemen über RMI
- Konzeption und Realsierung eines Report-Service auf Basis von Jasper-Reports zur Erstellung von Reports in verschiedenen Formaten (TEXT, PDF, XML, CSV, ...) einschließlich Anpassungen der Build-Infrastruktur zum Sammeln, Compilieren und Bereitstellen der Reports von verschiedenen Services.
- Umstellung eines Produktes von J2EE 1.4 auf Java EE 5 (inkl. JPA) mit Glassfish
Konzeption und Realisierung eines MDSD-Ansatzes auf Basis von openArchitectureWare um J2EE 1.4 und Java EE 5 innerhalb der Produktlinie parallel zu unterstützen sowie eine Steigerung der Effizienz von Entwicklern durch Wegfall von Routine-Tätigkeiten zu erreichen. Die dabei erstellte textuelle DSL basiert auf der Produktlinienarchitektur und stärkt diese damit.
- Bereitstellung sämtlicher Services über RMI und als Web Service
Unterstützung von anderen Produkt-Teams bei der Nutzung von Platform-Diensten

Anwendung
- Erstellung von Analyse-Dokumenten und Dokumentation von Use-Cases inkl. Abstimmung mit Kunden Konzeption und Realisierung eines Service zur Verwaltung von Dienstleistern und deren erbringbaren und zu erbringenden Dienstleistungen
- Konzeption und Realisierung eines Service zur Verwaltung von zeitlich variablen Kosten für Dienstleistungen, Zinsen, Gebühren
- Bereitstellung sämtlicher Services über RMI und als Web Service
- Vorbereitung, Durchführung und Nachbereitung eines Lasttests im Benchmark Center von Sun Microsystem (Langen). Im Rahmen der Vorbereitung wurden parametrisierbare JMeter-Scripte sowie weitere Tools/Scripts erstellt, um die Performance der wesentlichen Geschäftstransaktionen unter Last in verschiedenen Cluster-Konfigurationen unter WebSphere und JBoss zu testen
- Unterstützung von Kunden bzw. der QA betreffend der von mir erstellten Services

Produkte

DB2

Oracle

PostgreSQL

WebSphere

JBoss

Eclipse

Java

JUnit

XML

JMS

SOAP

DOM

XSLT

openArchitectureWare

Glassfish

Maven

Cruise Control

Cobertura

SoapUI

Apache JMeter

EJB

JCA

JMS

RMI

Velocity

EasyMock

DBUnit

log4j

JMX

XSLT

dom4j

Dozer

Cryptix

Jasper Reports

02/2009 - 08/2009

7 Monate

Android Live Tracker

Rolle
Android-Entwickler
Kunde
eigenes Projekt
Einsatzort
Altenstadt, Hessen
Projektinhalte

Das Android-Programm erlaubt dem Nutzer, daß Personen seines Vertrauens seine Position live (real-time) auf einem beliebigen Internet-Gerät mit Browser verfolgen können. Das Android-Programm besteht aus mehreren Activities und einem Service, der im Hintergrund die Positionsdaten vom GPS-Sensor empfängt. Die Benutzung des Programms gestaltet sich äußerst einfach, weil sich der Programm-Benutzer nirgendwo anmelden muß, da er über eine ihm zeitlich zugewiesende, generierte ID identifiziert wird. Das Android-Programm kontaktiert zunächst eine von mir entwickelte und betriebene Java-Server-Anwendung, um von dort die ID und Konfigurationsdaten zu laden. Zusätzlich kann der Benutzer einige Parameter über Preferences konfigurieren. Die Java-Server-Anwendung stellt auch das Browser-Userinterface zum Verfolgen der Position des Android-Gerätes bereit. Über den GPS-Sensor bestimmt das Android-Programm fortlaufend die aktuelle Position und übermittelt diese an die Server-Anwendung. Die Server-Anwendung übermittelt auch die Anzahl der Anzahl der momentan mit ihrem Browser "zuschauenden" Personen an das Android Programm. Die Benutzeroberfläche der Android-Anwendung ist komplett lokalisiert – derzeit deutsch und englisch.

Produkte

Eclipse

Jetty

Apache Subversion

log4j

JavaScript

JSP

Servlet

Java Server Pages

11/2004 - 03/2005

5 Monate

Integration und Erweiterung einer RFID-Software-Platform

Rolle
Backend-Entwickler
Kunde
IBM Deutschland
Einsatzort
Walldorf (Baden)
Projektinhalte

Die von IBM als Produkt neu entwickelte RFID-Software-Platform soll zuerst in einem Projekt bei Metro eingeführt werden. Bei der RFID-Software-Platform handelt es sich um einen Micro-Broker (Pub-Sub-Engine) zur Steuerung von RFID-Readern, Signalen und Signalgebern, sowie um einer J2EE-Applikation zur Aggregation und Kanalisierung dieser Informationen, zur Software-Verteilung sowie zur Anbindung externer Backends.
Zunächst wurde von mir eine Build-/Testumgebung auf Basis von Apache Maven konzipiert. Dabei musste CMVC eingesetzt für Versionsverwaltung, Release-Management und Bug-Tracking verwendet werden.
Im Rahmen der Realisierung habe ich sowohl Micro-Broker-Agenten designed und implementiert, als auch Komponenten im Bereich der Geschäftslogik auf Basis von EJB. Außerdem habe ich den Web Service eines Backends in eine Komponente integriert.
Den von mir im Vorprojekt entwickelten RFID-Reader-Simulator habe ich erweitert, um variable Testszeanrien auch in Lasttests abbilden zu können.

Produkte

DB2

WebSphere

TogetherJ

EJB

Java

JUnit

RFID

05/2004 - 10/2004

6 Monate

Einführung von RFID bei einem Handelskonzern

Rolle
Backend-Entwickler
Kunde
IBM Deutschland
Einsatzort
Einführung von RFID bei einem Handelskonzern
Projektinhalte

Metro sieht sich als Vorreiter bei der großflächigen Einführung von RFID im Handel. Die Integration der RFID-Hardware in die vorhandenen Software-Systeme der einzelnen Vertriebslinien wird durch IBM realisiert. Nach einer Einarbeitung in die Spezifikationen und Technologien im RFID-Umfeld habe ich zur Sicherung der Software-Qualität zunächst eine Unittest-Umgebung für OSGI-Dienste konzipiert und aufgebaut.
Für das RFID Innovation Center der Metro in Neuss habe ich für eine bestehende, OSGI-basierte Applikation aus dem Metro Future Store die Anbindung an neue Hardware realisiert. Die Anbindung der Reader-Control-Applikation an Bewegungsmelder und Signallampen erfolgte mit einer Sealevel Digital I/O-Karte, für die eine entsprechende OSGI-basierte Schnittstelle implementiert wurde. Für neue Reader-Generationen von Intermec und Samsys habe ich Anpassungen der Implementierung der jeweiligen Protokolle vorgenommen. Die Entwicklungsaktivitäten erfolgten in enger Abstimmung mit Metro und den beteiligten Hardware-Lieferanten.
Zur effizienten Durchführung und Dokumentation der Tests von RFID-Hardware habe ich eine Reader-Control-Appikation entwickelt. Dazu lassen sich Hardware-Setups und Testfälle mit Variablen und zugehörigen Wertebereichen bzw. –ausprägungen definieren. Die Ergebnisse der Testdurchführung werden durch Servlet-/JSP-basierte Reports einzeln und zueinander korreliert dargestellet.
Im Rahmen des Systemtests habe ich einen RFID-Reader-Simulator entwickelt, mit dem der parallele Betrieb einer großen Anzahl von RFID-Readern vollautomatisch getestet werden kann. Das Verhalten des Simulators kann dabei an den zu testenden Geschäftsprozess angepasst werden. Während dieser Tests wurde mehrere kritische Fehler in der zu testenden Anwendung erkannt und behoben. Auch die Performance konnte durch diese Tests gezielt optimiert werden (z.B. MQe-basiertes Messaging), was zu einer signifikanten Steigerung des Gesamtperformance führte.
Die „Going life“-Phase habe ich als technischer Kundenkontakt aktiv begleitet.

Produkte

WebSphere

Java

JUnit

VMware

CVS

Oracle

MySQL

Ant

01/2004 - 04/2004

4 Monate

Supplier Quality Control System

Rolle
Fullstack-Entwickler
Kunde
IBM Deutschland
Einsatzort
Mainz
Projektinhalte

Im Auftrag der eigenen Wafer-Fabriken wurde ein System zur Überwachung der Lieferantenqualität (SQUIT) entwickelt. Jeder Lieferant muss Dateien mit parametrischen Daten der zur Lieferung vorgesehenen Produkte übermitteln. Diese Daten werden mit Spezifikationen verglichen bevor eine Freigabe zur Lieferung erfolgt. SQUIT besteht aus einem Web-Frontend und einem Backend. Der Schwerpunkt meiner Tätigkeit bestand in der Entwicklung der gesamten Spezifikationsprüfung. Im Zuge dieser Entwicklung habe ich das Persistenz-Framework Apache ObjectRelationalBridge eingeführt, um den Aufwand für Persistenz-Programmierung zu verringern (wird inzwischen projektweit eingesetzt). Weiterhin habe ich eine Umgebung für Continuous Integration mit CruiseControl / JUnit aufgebaut und den Unittest-Gedanken in das Team getragen. Auch an der Entwicklung einiger Bereiche des Web-GUIs mit Struts war ich beteiligt. In diesem Zusammenhang habe ich auch StrutsTestCase eingeführt, um Dialog-Sequenzen automatisiert zu testen.

Produkte

WebSphere

DB2

Tomcat

CVS

Cruise Control

Ant

JUnit

Struts

Java

11/2003 - 11/2003

1 Monat

Evaluierung eines Persistenz-Frameworks

Rolle
Berater
Kunde
Otto-Versand
Einsatzort
Hamburg
Projektinhalte

Ziel dieses Beratungsprojektes war die Identifikation von Risiken und möglichen Maßnahmen aus dem Einsatz eines eigen-entwickelten Persistenz-Frameworks. Bestandteil der Untersuchung waren Anwender-Interviews, Code- und Dokumentationsreviews und der Vergleich mit anderen kommerziellen und nicht-kommerziellen Persistenz-Frameworks. Die Ergebnisse wurden dem IT Management als Grundlage einer Entscheidung über die Fortführung der Entwicklungs des Persistenz-Frameworks präsentiert.

Produkte

TogetherJ

Hibernate

Oracle TopLink

10/2001 - 10/2003

2 Jahre 1 Monat

MidOffice-Applikation im Börsen-/Stromumfeld

Rolle
Entwickler / Team-Leiter
Kunde
GBS Consulting AG
Einsatzort
Zürich
Projektinhalte

Bei diesem Projekt handelte es sich um ein Kundenprojekt im Rahmen dessen einige Entwickler des Produktes MeX (Midoffice for electronic Exchanges) J2EE-Know-How aufbauen sollten. Dies war Voraussetzung für die für MeX angestrebte Technologiemigration von einer datenbank-zentrischen Client-Server-Applikation hin zu einer komponentenbasierten Anwendung auf Basis von J2EE. Die technische Führungsverantwortung für dieses Projekt mit insgesamt 6 Entwicklern lag bei mir.
Auf Basis der Analyse der existierenden Applikation und der Projektanforderungen des Kunden wurde von mir eine workflow-orientierte, mehrschichtige Architektur entworfen. Design und Implementierung erfolgte im Team, wobei zwei Entwickler von mir gecoached wurden, da sie keine Erfahrung in objektorientiertem Design und der Entwicklung mit Java/J2EE hatten. Signifikanten Aufwand erforderte die Entwicklung des Domain-Modells, da dieses in der bestehenden Anwendung nicht existierte. Für das Design der einzelnen Komponenten wurde TogetherJ verwendet, als IDE kam NetBeans zum Einsatz. Als Applikationsserver wurde zunächst WebLogic 7.0 verwendet, auf Kundenwunsch wurde jedoch auf JBoss 3.0 gewechselt. Als Workflow-Engine wurde OSWorkflow (Open Source; Teil des OpenSymphony Frameworks) verwendet, für die mehrere Ebenen von Workflows konzipiert wurden. Durch die Kopplung des (nicht von mir entwickelten) GUI mit den Workflows wurde eine hohe Parametrisierbarkeit der Anwendung erreicht. Die Workflows selbst konnten über ein von mir entwickeltes JMX-Interface beeinflusst werden. Produkt-Preise bzw. Kurse sollten von den Homepages der Kurslieferanten abgegriffen werden. Dazu habe ich die Schnittstellen so designed, dass HTML zunächst nach XHTML konvertiert wird, sodass auf die Kurse über XPath zugegriffen werden kann. Der XPath und weitere Parameter jeder Schnittstelle habe ich wiederum über JMX administrierbar gemacht. Wegen des Parallelbetriebs mit der Altapplikation mussten bestehende Datenbank-Strukturen bestehen bleiben. Die dadurch notwendige Entkopplung von Domain-Modell und Persistenz-Modell habe ich durch eine XML/XPath-basierte Abstraktion erreicht. Die Persistenz selbst wurde über CMP und CMR (EJB 2.0) gelöst, nachdem wir die Tauglichkeit dieses Ansatzes verifiziert hatten.

Produkte

Oracle

Apache Tomcat

JBoss

WebLogic

TogetherJ

CVS

EJB

Java

NetBeans

XML

JSP

XPath

12/2000 - 10/2001

11 Monate

Erweiterung/Performance-Optimierung des Price-Quote-Server

Rolle
Backend-Entwickler
Kunde
Vodafone Telecommerce
Einsatzort
Ratingen
Projektinhalte

Die Funktionalität des Price Quote Server sollte in einem weiteren Release erweitert und die Performance optimiert werden. Meine Aufgabe zum einen in der Implementierung der CORBA-Schnittstelle zum Backend-System auf Basis von VisiBroker als Ersatz für die JNI-Schnittstelle. Schwerpunkt meiner Arbeit war jedoch die Optimierung der Performance einschliesslich der Schaffung der dafür notwendigen Umgebung und Tools. Dazu wurden von mir Plugins für das freie Last-Tool Grinder entwickelt, über die mehr als 1000 concurrent User simuliert wurden. Im Rahmen des von mir durchgeführten Profilings wurden Performance-Engpässe identifiziert und von den betreffenden Entwicklern beseitigt. Ich selbst habe Verarbeitung der Digitalen Signaturen (Key-Algorithmus, Key-Länge, Hash-Algorithmus) und die Verwendung des XML-Parsers optimiert. Weiterhin habe ich viel Zeit auf das Optimieren von Betriebssystem-, JavaVM- und WebLogic-Parametern verwendet. Alternativ wurde auch der Betrieb der Anwendung in einem WebLogic-Cluster, auf dem Borland Application Server und auch auf dem Oracle Application Server getestet. Bei allen Tests war auch der Support der jeweiligen Server-Anbieter involviert. Im Ergebnis konnte der Durchsatz der Gesamtanwendung unter WebLogic 5.1 auf das 60-fache gesteigert werden. Abschliessend konnte ich im Sun Benchmark Zentrum einen Performance-Test des Price Quote Servers auf einer Sun Enterprise 10000 mit 64 CPUs durchführen.

Produkte

Solaris

WebLogic

Borland Application Server

Oracle Appliaction Server

OptimizeIt

CVS

Bugzilla

Oracle

Grinder

EJB

Java

Corba

05/2000 - 09/2000

5 Monate

Entwicklung eines Price-Quote-Server

Rolle
Backend-Entwickler
Kunde
Vodafone Telecommerce
Einsatzort
Ratingen
Projektinhalte

Der Price Quote Server dient der performanten Beantwortung von Preis-Anfragen von Web-Shops. Die XML-Anfragen über HTTP(S) wurden zunächst gegen einen LDAP-Server authentifiziert und autorisiert. Anschliessend mussten sie in eine proprietäre Darstellung (M2F2) umgewandelt werden, bevor sie an das Backend-System weitergereicht werden. Die von dort erhaltenen Preis-Angebote mussten invers dazu wieder zurück nach XML konvertiert werden.
Als Applikationsserver kam WebLogic 5.1 zum Einsatz mit Oracle 8i als Datenbank.
Das Frontend-Interface zur Annahme der Price Quote Requests inklusive Authentifizierung/Autorisierung wurde von mir designt und implementiert. Ebenso die Schnittstelle zum Backend-System, welche als JNI-Interface implementiert wurde. Weiterhin habe ich die Generierung und Überprüfung der Digitalen Signaturen in Preis-Anfragen und Bestellungen implementiert. Dazu wurde die freie JCE-Implementierung Cryptix verwendet.

Produkte

WebLogic

CVS

Bugzilla

Oracle

EJB

JSP

Java Servlet

LDAP

Java

03/2000 - 04/2000

2 Monate

Prototyp für Web Order Entry

Rolle
Fullstack-Entwickler
Kunde
Mannesmann Arcor
Einsatzort
Eschborn, Taunus
Projektinhalte

Der Prototyp sollte die Auftragserfassung für die komplexen Produkte der Telekommunikationsbranche ermöglichen, wobei das Datenbank-Design vom Kunden vorgegeben war. Anforderungsgemäss wurde der Prototyp mit denselben Technologien realisiert, wie die spätere Applikation. Durch die Verwendung von XML zur Datenstrukturierung konnten HTML-GUIs dynamisch durch einen XSLT-Prozessor erzeugt werden. Meine Aufgabe bestand in der Implementierung von Authentifizierung und der XSL-Transformation.

Produkte

WebLogic

CVS

Oracle

EJB

Xerces

Xalan

XPath

Referenzen

Projekt MidOffice-Applikation im Börsen-/Stromumfeld, 05/02 - 10/03
Referenz durch Softwarehaus (11 MA), vom 20.10.03

"[...] Der Consultant hat sich während diesem Projekt ein spezialisiertes Wissen über die Abwicklungsfunktionen für Derivate Produkte bei Strom-Grosshandelsunternehmen (fix-price-to-floating-price Swaps, Collars, Caps und Floors) erarbeitet. Der Consultant hat zu unserer vollsten Zufriedenheit an dieser Aufgabe gearbeitet. Er ist uns durch seine ruhige, konziliante und freundliche Art aufgefallen und war gegenüber Kollegen immer sehr zuvorkommend und korrekt. Aus wirtschaftlichen Gründen und auf Grund der Zusammenarbeit mit einem grösseren IT-Unternehmen waren wir leider gezwungen, das Vertragsverhältnis mit dem Consultant per Ende Oktober zu kündigen. Wir bedauern seinen Abgang sehr und wünschen ihm für die Zukunft alles Gute und möchten an dieser Stelle nochmals betonen, wie sehr wir die Zusammenarbeit mit ihm fachlich und menschlich geschätzt haben."

Branchen

Erfahrungen in folgenden Branchen:
- Logistik (Deutsche Bahn)
- Reisen (Deutsches Reisebüro)
- Handel (Logistik)
- Banken (Wertpapiere / Derivate / Bargeld)
- Telekommunikation (Schwerpunkte: Mobile, Billing)
Bin offen für neue Branchen!

Kompetenzen

Programmiersprachen
Java
JavaScript
TypeScript

Betriebssysteme
Android
Linux
Windows
z/OS

Datenbanken
Android SQLite
DB2
MySQL
Oracle
Oracle SQL Developer
PostgreSQL
SQL

Sprachkenntnisse
Deutsch
Muttersprache
Englisch
fliessend
Russisch
8 Jahre

Hardware
PC
Raspberry Pi

Datenkommunikation
CORBA
Visibroker
Ethernet
Internet, Intranet
TCP/IP

Produkte / Standards / Erfahrungen
Android Studio
Angular
Angular Material
Ant
Apache JMeter
Apache Subversion
Apache Tomcat
Atlassian Confluence
Atlassian JIRA
AWS
Borland Application Server
Browserstack
Bugzilla
Cobertura
Cruise Control
Cryptix
CSS
CVS
DBUnit
Docker
DOM
dom4j
Dozer
EasyMock
Eclipse
EJB
Git
GitHub
Gitlab CI/CD
Glassfish
Grinder
Hibernate
HP QualityCenter
HTML5
IntelliJ
Jasper Reports
Java Servlet
JAXB
JBoss
JCA
Jenkins
Jest
Jetty
JMS
JMX
JPA
JSP
JUnit
Koa.js
Kubernates
LDAP
Liquibase
log4j
Magicdraw
Maven
Mockito
Nest.js
NetBeans
openArchitectureWare
OpenShift
OptimizeIt
Oracle Appliaction Server
Oracle TopLink
Pi4J
Protractor
REST
RFID
RMI
Scrum
Servlet
SmartSVN
SOAP
SoapUI
Spring
Spring Boot
Struts
Testcafe
TogetherJ
Tomcat
Velocity
VirtualBox
VMware
Vue.js
WebLogic
WebSphere
WebStorm
Xerces
XML
XPath
XSLT

Design / Entwicklung / Konstruktion

MagicDraw

TogetherJ


Bemerkungen

weitere Referenzen auf Anfrage


Ausbildungshistorie

9/93-2/98 Fachhochschule Offenburg: Technische Betriebswirtschaft (Schwerpunkt: Rechnungswesen, Controlling, Steuern)
Abschluss: Diplom-Betriebswirt (FH) mit Note 2,0
9/91-7/93 Berufsakademie Stuttgart: Technische Informatik
Abschluss: keiner