Software-Entwickler, Berater, DataStage, Data Warehouse, Java, J2EE, XML, JSON, C++, MDA, DSL, Xtext, Xtend, JUnit, Cucumber, CI/CD, Kubernetes
Aktualisiert am 04.10.2024
Profil
Referenzen (1)
Freiberufler / Selbstständiger
Remote-Arbeit
Verfügbar ab: 20.10.2024
Verfügbar zu: 100%
davon vor Ort: 0%
Java
DataStage
MDA
Kotlin
Github-Actions
IBM InfoSphere DataStage
AWS
Deutsch
Muttersprache
Englisch
Gut in Schrift, gut in Wort
Französisch
Grundkenntnisse

Einsatzorte

Einsatzorte

Remote (+50km) Saarbrücken (+200km)
möglich

Projekte

Projekte

2 Jahre 9 Monate
2021-09 - 2024-05

Kotlin, Java, Typescript Programmierung für die Login Komponente eines Online-Shops

Full Stack Entwickler, DevOPS Java Kotlin Jenkins ...
Full Stack Entwickler, DevOPS

Schrittweise Ersetzung eines existierenden ?Micro-Service? (Monolith) durch neue, modernere Komponenten und dabei Zerschlagung in kleinere Micro-Services oder Lambdas welche dann Teilaufgaben übernehmen. Daher in der neuen Version besser skalierbar und auch kostengünstiger zu betreiben (weniger Instanzen und manches nur noch Lambdas (serverless)). Die ganzen Services drehen sich um das Login von Kunden und der Verwaltung der dafür notwendigen Daten, wie eMail, Password, Telefonnummer, Adresse usw. Dazu gehören dann auch die Eingabe und Änderungsmöglichkeiten via Frontend für die Daten. Der alte Service ist in Java implementiert und wurde in der neuen Version in Kotlin, Scala, Typescript und Python umgesetzt, je nach speziellem Aufgabengebiet. Das CI/CD des alten Service wurde von Jenkins und AWS Cloud Formation übernommen. In den neuen Services übernehmen das Github Actions mit AWS CDK. Während der ganzen Umstellung mussten aber noch notwendige Änderungen und Wartungen an dem alten Service vorgenommen werden.

Dazu gehören folgende, als Micro-Service implementierte, Haupt-Funktionalitäten:

  • Login
  • Passwort ändern
  • Passwort vergessen
  • Migration Telefonkunde
  • Reauthentifizierung
  • Zugang per Kundennummer zurücksetzen
  • Verifizierung der eMail
  • Neuregistrierung
  • Ändern der Rechnungsanschrift
  • eMail nicht zustellbar
  • Adresse unbekannt
  • eMail Adresse ändern
  • Telefonnummer ändern

 Dazu wurden noch diverse notwendigen Infrastruktur-Funktionalitäten benötigt.

  • Implementierung als Micro-Service, realisiert durch Docker Container mit Spring-Boot
  • Deployment der Docker Container in AWS in EC2, Fragte oder Lambda

  • Kontinuierliche Updates der Dependencies in Gradle-Build-Files und Dockerfiles wegen Security-Anforderungen (CVE?s) und neuer Features. Dabei waren öfter umfangreiche Änderungen durchzuführen, da viele Bibliotheken leider nicht abwärtskompatibel waren und deshalb sehr viel umgestellt werden musste. Für die automatisierten Updates wurde dependabot eingesetzt.
  • Kontinuierliche Anpassungen an den Consumer driven contracts (CDC?s) welche automatisiert geprüft werden.
  • Kontinuierliche Anpassungen an Findings und Code-Abdeckung in GHAS.

  • Migration von Spring-Boot über mehrere Versionen hinweg von 2.4.* bis 3.2.5 mit sämtlichen Zwischenversionen.
  • Migration von MongoDB auf DynamoDB im laufenden Betrieb.
  • Migration von Java 1.8 auf Java 21 mit sämtlichen LTS Zwischenversionen.
  • Umstellung von TestNG auf JUnit5.
  • Pflege und Erweiterung der CI/CD Pipelines mit Github Actions.
  • Durchführung der ganzen Test-Pyramide, angefangen mit JUnit-Tests, lokalen Service-Integrationstests, lokalen und nicht lokalen Gesamt-Integrationstest sowie Performance-Tests.
  • Ständig den Automatisierungsgrad und die Code-Qualität erhöhen.
  • Wartung, Fehlersuche und Monitoring mittels Cloudwatch und Kibana.
  • Erstellung und Pflege eigener Docker-Container zum Entwickeln.

Ubuntu MacOS Jenkins nodejs npm Gradle TestNG AssertJ Mockk Github Github Actions AWS CDK AWS Cloud Formation JUnit 5 Mockito IDEA Intellij Docker Rancher Desktop Thymeleaf Atlas MongoDB Redis AWS DynamoDB AWS SNS AWS SQS AWS Lambda AWS Event Bridge AWS Cloudwatch Spring Boot Dependabot Varnish Cache Terraform yarn AWS
Java Kotlin Jenkins TypeScript JSON YAML XML JavaScript Scala Groovy Docker Rancher Desktop HTML Python Bash ZSH asdf SOAP GitHub
Einzelhandelsunternehmen
Remote
6 Monate
2021-04 - 2021-09

Java Programmierung für die SAP cloud authorization services

Entwickler
Entwickler

Für eine mit XText erstellte DSL (Domain-specific language) konnte bisher nur Eclipse als Entwicklungsumgebung benutzt werden um in dieser neuen Sprache zu arbeiten. Da Xtext schon seit längerem das Language server protocol unterstützt, wurde dies nun benutzt, um die Sprache in Visual Studio Code als Extension und in IDEA Intellij als Plugin einbindbar zu machen, damit dann auch darin unter Windows und unixoiden Betriebssystemen komfortabel in dieser Sprache gearbeitet werden kann. Mit Funktionalitäten wie z.B. Auto-Vervollständigung, Refactoring, zur Deklaration springen, zu Verwendungen springen, Code-Generierung usw.

Hierzu gehört die Erstellung der Extension und des Plugins sowie die Erstellung von End-To-End-Tests, welche auch die Funktionen innerhalb der Entwicklungsumgebungen testen.

Windows 10 MacOS Big Sur Java Jenkins nodejs npm TypeScript JSON XML JavaScript Maven Gradle JUnit 3/4/5 Mockito Scala Groovy Eclipse XText XTend Visual Studio Code IDEA Intellij LSP (Language Server Protocol) LSP4J LSP4Intellij TextMate Grammatik Nexus Artifactory SonarQube Docker OPA (Open policy agent)
Softwarehersteller
Remote
3 Jahre 6 Monate
2017-07 - 2020-12

Erneuerung der Vertriebsplattform

Java-JEE-Entwickler, Full-Stack-Developer, DevOPS agile Entwicklungsmethoden XML JSON ...
Java-JEE-Entwickler, Full-Stack-Developer, DevOPS

Mitarbeit beim Sitzplatzmanagement innerhalb der Erneuerung der
                Vertriebsplattform mittels agiler Entwicklungsmethoden.
                Im Teilprojekt Datenversorgung
                - Bereitstellung der Wagenreihungen von Zügen für alle
                  Abschnitte einer Zugfahrt
                - Zuordnung der Wagentypen mit den möglichen Sitzplätzen und
                  sonstigen Reservierungsmöglichkeiten zu den Wagen eines Zuges
                - Bereitstellung der Daten in RabbitMQ Message-Queues mit
                  MongoDB Persistierung für die Sitzplatz- und Inventar-Reservierung
                - Protokollierung der Änderungen, bei Ausfällen oder Fahrplanänderungen.
                - Implementierung als Micro-Service, realisiert durch
                  Docker Container mit Wildfly-Swarm, später Thorntail
                - Deployment der Docker Container in OpenShift in einer
                  AWS Virtual Private Cloud Umgebung, später EKS
                Im Teilprojekt Wagentypen
                - Bereitstellung eines Micro-Service zur CRUD-Persistierung
                  von in einem GUI erfassten Wagentypen
                - Kommunikation mit dem GUI über REST-Schnittstelle
                - Wagentypen wurden dann als JSON-Messages über Message-Queues
                  den Abnehmern zur Verfügung gestellt.
                - Persistierung in einer MongoDB
                - Migration nach Amazon DocumentDB
                - Implementierung als Micro-Service, realisiert durch
                  Docker Container mit Wildfly-Swarm, später Thorntail, dann Spring-Boot
                - Deployment der Docker Container in OpenShift in einer
                  AWS Virtual Private Cloud Umgebung, später EKS
                Im Teilprojekt Reservierung
                - Implementierung neuer fachlicher Anforderungen
                - Umstellung existierender Micro-Services von MongoDB auf
                  JPA mit Hibernate und darunterliegender PostgreSQL/Amazon RDS
                  und von Thorntail auf Spring-Boot
                Im Teilprojekt Umplatzierung
                - Bereitstellung von Micro-Services zur Benachrichtigung
                  von Kunden mit Reservierungen, wenn sich an Ihrer Reservierung
                  etwas ändert.
                - Ermittelung von Ersatzzügen, Zugausfällen, Wagentyp-Änderungen,
                  Wagenreihungs-Änderungen.
                - Benachrichtigung über die neuen Sitzplätze einer Reservierung,
                  wenn Umplatzierung möglich.
                - Persistierung mittels JPA mit Hibernate und
                  darunterliegender PostgreSQL/Amazon RDS
                - Asynchrone Kommunikation mit anderen Micro-Services
                  über ActiveMQ/AmazonMQ
                - Implementierung als Micro-Services, realisiert durch
                  Docker Container mit Thorntail, dann Migration nach Spring-Boot
                - Deployment der Docker Container in OpenShift in einer
                  AWS Virtual Private Cloud Umgebung, später EKS
      
                Während der ganzen Projektlaufzeit.

                - Kontinuierliche Updates der Dependencies in Maven-Build-Files
                  und Dockerfiles wegen Security-Anforderungen (CVE‘s) und
                  neuer Features. Dabei waren öfter umfangreiche Änderungen
                  durchzuführen, da viele Bibliotheken leider nicht
                  abwärtskompatibel waren und deshalb sehr viel umgestellt
                  werden musste. Die Updates wurden erst manuell gemacht
                  und später wurde dafür der Renovate Bot eingesetzt,
                  welcher die Updates dann automatisiert hat.
                - Kontinuierliche Anpassungen an den Consumer driven contracts (CDC‘s)
                  welche automatisiert geprüft werden.
                - Kontinuierliche Anpassungen an Findings und Code-Abdeckung in SonarQube.
                - Migration der Cucumber Tests von 1.* bis 6.8.*
                  mit sämtlichen Zwischenversionen.
                - Umstellung von Docker CentOS-Base-Images auf
                  Alpine-Base-Images um die Deployments zu verschlanken
                  und sicherer zu machen.
                - Umstellung von Java 1.8 auf Java11.
                - Umstellung von JUnit 4 auf JUnit 5 und anschliessender
                  Entfernung von JUnit 4.
                - Pflege und Erweiterung der CI/CD Pipelines mit Jenkins.
                - Erstellung von Docker-Containern und deren Deployment
                  in Openshift, Amazon EKS, Amazon ECS.
                - Durchführung der ganzen Test-Pyramide, angefangen
                  mit JUnit-Tests, lokalen Service-Integrationstests,
                  lokalen und nicht lokalen Gesamt-Integrationstest
                  sowie Performance-Tests.
                - Generierung von Maven Build Files aus Templates
                  mittels XSLT und Entity-Auflösung um die Build
                  Files übersichtlicher zu gestalten und einfacher
                  Teile hinzuzufügen oder entfernen zu können.
                - Ständig den Automatisierungsgrad und die Code-Qualität erhöhen.
                - Wartung, Fehlersuche und Monitoring mittels Prometheus,
                  Grafana, Instana, Kibana, Graylog.

                - Erstellung und Pflege eigener Docker-Container zum Testen
                  inklusive SSL-Verschlüsselung und Konfiguration z.B. für
                  ActiveMQ, PostgreSQL, WireMock, RabbitMQ, nginx.

IntelliJ IDEA Eclipse Java 1.8 Kubernetes 1.18 AWS EKS Groovy Jenkins Maven Gitlab Atlassian Confluence Atlassian JIRA PostgreSQL Heartbeat JUnit 5 JUnit 4 Cucumber 1.1-6.8.2 Quarkus Spring Boot 2.3.*-2.4.* Thorntail 2.0.0-2.7.0 Wildfly Swarm Windows 7 Windows 10 Java 11 MongoDB JEE7 RabbitMQ Bash Docker Git Openshift Rancher Rancher OS XML XML-Schema JSON JSON-Schema AVRO YAML Clair SQL AWS ECS AWS EKS PostgREST ActiveMQ AmazonMQ Amazon DocumentDB Amazon RDS Google Guava Checkstyle log4j Swagger OpenAPI Flyway Undertow JMS Validation Micro-Profiles EJB3 JAX-RS JAXP JAXB Jackson Mockito CDI JPA Java Transaction API Immutables RESTeasy JNDI REST-assured Smallrye Equals-Verifier SonarQube Awaitility Hamcrest AssertJ Weld slf4j logback Gatling JMeter Scala Whitesource Assistify Fortify VersionEye Wiremock Renovate bot Spring cloud contract FindBugs SpotBugs Keycloak Deltaspike Surefire Failsafe Jacoco PMD Maven Enforcer Traefik nginx JWT Yarn Angular NPM Artifactory Nexus cntlm Ansible Vagrant VirtualBox Hyper-V Ubuntu Graylog Prometheus Grafana Instana Kibana Amazon Managementkonsole XSLT
agile Entwicklungsmethoden XML JSON Jenkins Cloud Deployment Yaml Integrationstests JUnit JEE JPA SQL
ÖPNV
Frankfurt am Main / Remote
1 Jahr 1 Monat
2016-05 - 2017-05

Migration von Legacy-Systemen nach SAP-GKV

ETL-Entwickler SQL PL/SQL
ETL-Entwickler
  • Migration von Legacy-Systemen nach SAP-GKV für die Produkte Pflege, Arbeitsunfähigkeit-Krankengeld, Krankenhaus und Zuzahlung mittels dem ETL-Tool DataStage.
  • Als Code-Basis wurde der Code aus dem Projekt 03/2010-11/2013 verwendet und dann mittels der neuen Konzepte und Modelle für die neuen Anforderungen angepasst.
  • Erstellung von Table-Definitions und OSH-Schemas aus von SAP ausgelesenen DI-Strukturen zur Verwendung in den Datastage-Jobs. Da die Access ODBC-Treiber kein 64-Bit unterstützen und auch in Java 1.8 die JDBC-ODBC-Bridge entfernt wurde, wurde die Datenbasis neu in eine H2-Datenbank überführt.
    Die ausgelesen Strukturinformationen wurden in der Datenbank abgelegt und daraus wurde mittels eines
    Java-Programmes und Freemarker die Table-Definitonen, SQL und OSH-Schemas generiert.
  • Ablauf der Migrationen: Angelieferte Datenbank-Extrakte im
    CSV-Format werden mittels Datenbank-Loads in die Datenbank DB2 eingelesen und dann mittels Datastage-Jobs in DI-Strukturen (Direkt-import) gewandelt welche dann durch Massentransaktionen in SAP verbucht werden.
  • Mittels Python wurde ein Map-Reduce-Script erstellt um parallel Statistiken aus den erzeugten DI-Dateien mittels awk-Scripten zu ermitteln. Für die verschiedenen Produkte musste dann nur noch eine Klasse abgeleitet werden und die entsprechenden Methoden überladen werden.
Microsoft Windows 7 IBM Information Server WebSphere DataStage 11.5 DB2 10.5 C++ Java 1.7 Java 1.8 JDBC Citrix Terminal Server Bash SAP Freemarker 2.3.24 awk AIX 7.1 Eclipse 4.5.2 H2 DB-Engine 1.4.192 Microsoft Access 2013 Python 2.6.2 Subversion 1.7.9 Tortoise 1.7.12 Rational Quality Manager 4.0.7 Claims GKV 4.0.5
SQL PL/SQL
Gesetzliche Krankenversicherung
Wuppertal
1 Jahr 3 Monate
2015-03 - 2016-05

Erstellung einer DSL zum verarbeiten von XML-Messages

Software-Entwickler
Software-Entwickler

Es wurde eine Software erstellt, welche eingehende XML-Messages aus einer MessageQueue performant entgegen nimmt, validiert, konvertiert und in eine Datenbank persistiert.

Dazu wurde eine DSL erstellt, welche die eingehenden Daten modellieren kann und zusätzlich datentypbasierte Konvertierungen automatisiert ausführen konnte. Weiterhin wurde die DSL mit Validierungen angereichert. Diese Konvertierungen und Validierungen sind auf Typebene als Fallback anzugeben oder sie können an den modellierten Daten "überladen" werden. Dafür unterstützt die Datenmodellierung Vererbung.

Realisiert wurde das ganze mit xText für die DSL-Erstellung. Daraus wurde dann mit Generatoren Java-Code erstellt, welcher dann unter Wildfly mittels Message-Driven-Beans hochperformant und vor allem parallel und damit skalierbar die XML-Messages validiert und konvertiert hat. Die Messages werden danach im CSV-Format auf der Platte zwischengelagert, wo sie dann asynchron von einer JEE7 Batch Processing Anwendung zusammengefasst werden und in die Datenbank persistiert werden.

Der Durchsatz konnte so gegenüber der Altlösung erheblich gesteigert werden. Und vor allem könnte man später, wenn nötig, den Wildfly clustern um den Durchsatz weiter zu erhöhen.

Um die ganze Infrastruktur, welche zur Entwicklung benötigt wird, auch anderen Entwicklern, welche nicht so tief in der Materie stecken, zur Verfügung zu stellen, wurden mittels VirtualBox virtuelle Maschinen mit CentOS und Docker Containern und eine mit IPFire aufgesetzt. In IPFire lief dann ein Proxy zum cachen von Entwicklungs-Artefakten. In den Docker Containern liefen dann ein Nexus Artefakt Repository zur Verwaltung der Maven und der Eclipse-Plugin Artefakten und ein Wildfly zur Implementierung der Message-Driven-Beans und der Batch-Processing-Anwendung.

Eclipse xText Wildfly JEE7 SLES Windows Nexus Artifactory Maven IPFire VirtualBox Xtend Docker Teradata TIBCO Enterprise Message Service Java XML Squid HornetQ ActiveMQ JSR-352 Batch Processing XSLT
Großhandelsunternehmen
Ingolstadt
9 Monate
2014-03 - 2014-11

ETL Bewirtschaftung eines DataWareHouse

ETL-Entwickler IBM Information Server WebSphere DataStage SQL AIX ...
ETL-Entwickler
Erstellung von Datastage-Jobs um neue Produkte in das DataWareHouse zu laden. Implementierung nach Fachkonzept. Anpassen von existierenden Jobs an neue Produkte. Implementierung nach Fachkonzept. Fehlerbehebung beim Integrationstest. Optimierung von Job-Laufzeiten beim Massentest. Analyse der bestehenden Jobs zur Befüllung der Dimensions-Tabellen. Generalisierung der Jobs zur Bewirtschaftung der Dimensions-Tabellen. Dadurch wird jetzt eine Einsparung von etwa 80 Jobs möglich. Dadurch vor allem Reduzierung der Komplexität und der Fehler-Diversifikation. Einheitliche Behandlung der Dimensionen nach dem Prinzip "Slowly Changing Dimensions".
IBM Information Server WebSphere DataStage 8.7 Windows XP IBM AIX 6.1 DB/2 9.1 MS Office Lotus Notes Subversion 1.8 Tortoise 1.8.6
IBM Information Server WebSphere DataStage SQL AIX Shell-Script
München
3 Monate
2014-01 - 2014-03

Review einer bestehenden Web-Anwendung und Erstellung eines Prototyps zur Neuimplementierung mittels Model Driven Architecture

Architekt XML DTD XML-Schema ...
Architekt
Eine bestehende Web-Anwendung sollte hinsichtlich Performance, Wartbarkeit, Erweiterbarkeit, Skalierbarkeit und Code-Qualität analysiert werden um eine Meinung eines Aussenstehenden zu erhalten. Bei der Analyse wurde dann festgestellt dass durch zu viele gleichzeitig eingesetzte Technologien, welche die gleiche Funktionalität abbildeten, und zu wenig Objektorientierung die Code-Basis sehr schwer wartbar, geschweige denn erweiterbar war. Durch diesen Code-Moloch waren natürlich auch Fehler sehr schwer zu beheben, da diese an mehreren Stellen korrigiert werden mussten. Dazu wurden Metriken ermittelt, Abhängigkeiten analysiert und dokumentiert und toter Code lokalisiert. Man kam also zu dem Schluss, dass man einen neuen moderneren, zeitgemässeren Ansatz für eine Neuimplementierung haben wollte und man die alte Code-Basis nur noch kurz- bis mittelfristig pflegen aber nicht mehr weiterentwickeln wollte. Nach Bestimmung der benötigten Funktionalitäten und Auswahl der dazu passenden Architektur wurde ein Prototyp von mir erstellt. Dieser basiert auf Model Driven Architecture und erzeugt den Grossteil des Codes aus einem UML Modell. Er reduziert so also den zu pflegenden Code deutlich. Er ist in Xtend implementiert und kann somit existierenden Java-Code und schon bewährte Funktionalitäten einbinden. Das Framework wurde mit Injection und vollständig objektorientiert aufgebaut. Man könnte also alle Funktionalitäten einzeln austauschen ohne den Rest anzufassen und ohne dass dieser etwas davon merkt. Die getroffene Wahl der MDA erlaubt es später dann auch den Server-Code zum Großteil aus dem Modell zu generieren. Als weiteren Punkt für die spätere Weiterentwicklung könnte dann anstatt UML eine eigene DSL benutzt werden, welche die Modellplege deutlich beschleunigen würde und die Generierung von noch komplexeren Code erlauben würde ohne das die bestehende Code-Basis geändert werden müsste, sondern nur der Generierungscode.
Windows 7 Eclipse Kepler 4.3 MS Office Lotus Notes Git SourceTree Xtend 2.6 Xtext 2.6 Xbase 2.6 Infinispan 7.0 Checkstyle 6.1 Guice 3.0 jdepend 2.9.1 Castor 1.3.3 gson 2.3.1 JBoss 6.3 JBoss Cache 3.0.0 GWT 2.6
XML DTD XML-Schema UML DSL MDA Java 6 Java 7 Xtext Xtend Xbase JAXB JSON Java EE 6
Saarbrücken

Aus- und Weiterbildung

Aus- und Weiterbildung

Fachhochschulstudium der Elektrotechnik Fachrichtung Automatisierungstechnik
Abschluss Dipl. Ing. Elektrotechnik

1986-1991  Softwareprojekte neben Studium
1991-1998  festangestellter Softwareentwickler
1998-2000  festangestellter Projektleiter
2000-      freier Softwareentwickler

Kompetenzen

Kompetenzen

Top-Skills

Java DataStage MDA Kotlin Github-Actions IBM InfoSphere DataStage AWS

Produkte / Standards / Erfahrungen / Methoden

ActiveMQ
agile Entwicklungsmethoden
Amazon DocumentDB
Amazon Managementkonsole
AmazonMQ
Ansible
Artifactory
AssertJ
Assistify
Atlassian Confluence
Atlassian JIRA
AVRO
Awaitility
AWS
AWS ECS
AWS EKS
CDI
Checkstyle
Citrix Terminal Server
Claims 4.0.5
Claims GKV 4.0.5
Clair
Cloud
cntlm
Cucumber 1.1-6.8.2
Deltaspike
Deployment
Docker
Eclipse
Eclipse 4.5.2
EJB3
EKS
Equals-Verifier
Failsafe
FindBugs
Flyway
Fortify
Freemarker 2.3.24
Gatling
Git
Gitlab
Google Guava
Grafana
Graylog
H2 DB-Engine 1.4.192
Hamcrest
Heartbeat
HornetQ
Hyper-V
IBM Information Server WebSphere DataStage 11.5
Immutables
Instana
Integrationstests
IntelliJ IDEA
IPFire
Jackson
Jacoco
Java 11
JEE
Jenkins
Jenkins
JMeter
JMS
JPA
JSON
JSON-Schema
JSR-352 Batch Processing
JUnit
JUnit 4
JUnit 5
JWT
Keycloak
Kibana
Kubernetes 1.18
log4j
Maven
Maven Enforcer
Micro-Profiles
Mockito
Nexus
nginx
NPM
OpenAPI
Openshift
PMD
Postgrest
Prometheus
Python 2.6.2
Quarkus
RabbitMQ
Rancher
Rational Quality Manager 4.0.7
Renovate bot
REST-assured
RESTeasy
RQM
SAP
SAP Modul GKV
slf4j
Smallrye
SonarQube
Spring Boot 2.3.*-2.4.*
Spring cloud contract
Squid
Subversion
Subversion 1.7.9
Surefire
Thorntail 2.0.0-2.7.0
TIBCO Enterprise Message Service
Tortoise
Tortoise 1.7.12
Traefik
Undertow
Vagrant
Validation
VersionEye
VirtualBox
Whitesource
Wildfly
Wildfly Swarm
Wiremock
XML
XML-Schema
XSLT
xText
Yaml
Yarn
Produkte:
ARIS-Toolset
Microsoft Office,Access
Oracle
DB2
DataStage Server
DataStage PX
Enterprise Architect
Rational Rose
BEA Weblogic Applicationserver
JBOSS Applicationserver
WebSphere Applicationserver

Enwicklungstools:
Microsoft Visual-C++,Visual-Basic
Borland/Inprise C++-Builder, Delphi, JBuilder
JDK Sun Java Development Kit
NetBeans
Forte for Java
Eclipse
Rational Application Developer RAD
OpenArchitectureWare OAW
SQLDeveloper
JXPlorer

Erfahrungen:
OOA und OOD nach Booch und UML
MDA
Neuronale Netze
Fuzzy-Logik
Objektorientierte Programmierung in C++,Java und auch in C und Assembler zu Fuss
STL Standard Template Library
MFC Microsoft Foundation Classes
Bildverarbeitung
Audioverarbeitung
Compilerbau mit lex,flex und yacc,bison,antlr
Projektleitung
Shellprogrammierung unter Unix
Web-Auftritt vom Frontend bis zum Backend (HTML,Javascript,Java,EJB,Servlet,XML,XSL)

Betriebssysteme

AIX 6.1
AIX 7.1
Alpine
Amazon Linux AMI
CentOS
Echtzeitbetriebssysteme
RTOS
HPUX
IRIX
Mac OS
Microsoft Windows 7
MS-DOS
Novell
OS/2
OSF/Motif
PalmOS
Psion Series 3
Rancher OS
Rancher OS
RTOS (Real Time OS)
SLES
SUN OS, Solaris
Symbian
TOS
Ubuntu
Unix
Windows
Windows 10
Windows 7

Programmiersprachen

4gl
unifAce
Angular
Apl
Assembler
Motorola 68XXX
awk
Bash
Basic
C
Sehr gute Kenntnisse
C++
Sehr gute Kenntnisse insbesondere Templates und STL
CodeWarrior
CORBA IDL
dBase
Delphi
Groovy
HPGL, HP PCL
Imake, GNU-Make, Make-Maker etc...
Java
Sehr gute Kenntnisse
Java 1.7
Java 1.8
Java 11
Java 9
Java Transaction API
JavaScript
Sehr gute Kenntnisse
JAX-RS
JAXB
JAXP
JEE7
Jenkins Pipeline DSL
JNDI
JSON
logback
Maschinensprachen
Maven
Modula-2
Pascal
Perl
Keine Projekterfahrung, kann es aber lesen
PHP
Keine Projekterfahrung, kann es aber lesen
PL/SQL
Psion OPL
Python 2.6.9
Rexx
Scala
Shell
SpotBugs
Swagger
TeX, LaTeX
VRML
Weld
XML
Xtend
yacc/lex
YAML
ZINC

Datenbanken

Access
Adimens
Amazon DocumentDB
Amazon RDS
Amazon RDS PostgreSQL
B-Tree
BDE
DAO
DB2
DB2 10.5
H2 DB-Engine
Hypersonic SQL
Interbase
Firebird
ISAM
JDBC
JPA
Microsoft Access 2013
MongoDB
MongoDB
MySQL
ODBC
Oracle
Paradox
POET
Postgres
PostgreSQL
SQL
Teradata
ToroDB
xBase
 

Datenkommunikation

CORBA
Ethernet
HTTP
HTTPS
Internet, Intranet
Proprietäre Protokolle
RMI, UNIX IPC InterProcessCommunication,IEC-Bus
REST
RS232
TCP/IP
Windows Netzwerk
Winsock

Hardware

Android Smartphones und Tablets
Apple PC's
Apple Smartphones und Tablets
Atari
CD-Writer / Brenner
Digitale Signalprozessoren
Drucker
Echtzeitsysteme
Emulatoren
Framegrabber
Fuzzy Controller
Hardware entwickelt
HP
IBM RS6000
Industrie-Roboter
Messgeräte
Mikrocontroller
Modem
Motorola
PC
Plotter
Raspberry Pi
Scanner
Sensoren
Server x3950 x5
Silicon-Graphics
Soundkarten
SPS
Steuer und Regelsysteme
Streamer
US Robotics Pilot

Berechnung / Simulation / Versuch / Validierung

PSpice
Während des Studiums benutzt.

Branchen

Branchen

Softwarehersteller EDV
Industrie CAD
ÖPNV
Automatisierungstechnik
Börse
Versicherung
Bank
Medien
Wirschaftsprüfung

Einsatzorte

Einsatzorte

Remote (+50km) Saarbrücken (+200km)
möglich

Projekte

Projekte

2 Jahre 9 Monate
2021-09 - 2024-05

Kotlin, Java, Typescript Programmierung für die Login Komponente eines Online-Shops

Full Stack Entwickler, DevOPS Java Kotlin Jenkins ...
Full Stack Entwickler, DevOPS

Schrittweise Ersetzung eines existierenden ?Micro-Service? (Monolith) durch neue, modernere Komponenten und dabei Zerschlagung in kleinere Micro-Services oder Lambdas welche dann Teilaufgaben übernehmen. Daher in der neuen Version besser skalierbar und auch kostengünstiger zu betreiben (weniger Instanzen und manches nur noch Lambdas (serverless)). Die ganzen Services drehen sich um das Login von Kunden und der Verwaltung der dafür notwendigen Daten, wie eMail, Password, Telefonnummer, Adresse usw. Dazu gehören dann auch die Eingabe und Änderungsmöglichkeiten via Frontend für die Daten. Der alte Service ist in Java implementiert und wurde in der neuen Version in Kotlin, Scala, Typescript und Python umgesetzt, je nach speziellem Aufgabengebiet. Das CI/CD des alten Service wurde von Jenkins und AWS Cloud Formation übernommen. In den neuen Services übernehmen das Github Actions mit AWS CDK. Während der ganzen Umstellung mussten aber noch notwendige Änderungen und Wartungen an dem alten Service vorgenommen werden.

Dazu gehören folgende, als Micro-Service implementierte, Haupt-Funktionalitäten:

  • Login
  • Passwort ändern
  • Passwort vergessen
  • Migration Telefonkunde
  • Reauthentifizierung
  • Zugang per Kundennummer zurücksetzen
  • Verifizierung der eMail
  • Neuregistrierung
  • Ändern der Rechnungsanschrift
  • eMail nicht zustellbar
  • Adresse unbekannt
  • eMail Adresse ändern
  • Telefonnummer ändern

 Dazu wurden noch diverse notwendigen Infrastruktur-Funktionalitäten benötigt.

  • Implementierung als Micro-Service, realisiert durch Docker Container mit Spring-Boot
  • Deployment der Docker Container in AWS in EC2, Fragte oder Lambda

  • Kontinuierliche Updates der Dependencies in Gradle-Build-Files und Dockerfiles wegen Security-Anforderungen (CVE?s) und neuer Features. Dabei waren öfter umfangreiche Änderungen durchzuführen, da viele Bibliotheken leider nicht abwärtskompatibel waren und deshalb sehr viel umgestellt werden musste. Für die automatisierten Updates wurde dependabot eingesetzt.
  • Kontinuierliche Anpassungen an den Consumer driven contracts (CDC?s) welche automatisiert geprüft werden.
  • Kontinuierliche Anpassungen an Findings und Code-Abdeckung in GHAS.

  • Migration von Spring-Boot über mehrere Versionen hinweg von 2.4.* bis 3.2.5 mit sämtlichen Zwischenversionen.
  • Migration von MongoDB auf DynamoDB im laufenden Betrieb.
  • Migration von Java 1.8 auf Java 21 mit sämtlichen LTS Zwischenversionen.
  • Umstellung von TestNG auf JUnit5.
  • Pflege und Erweiterung der CI/CD Pipelines mit Github Actions.
  • Durchführung der ganzen Test-Pyramide, angefangen mit JUnit-Tests, lokalen Service-Integrationstests, lokalen und nicht lokalen Gesamt-Integrationstest sowie Performance-Tests.
  • Ständig den Automatisierungsgrad und die Code-Qualität erhöhen.
  • Wartung, Fehlersuche und Monitoring mittels Cloudwatch und Kibana.
  • Erstellung und Pflege eigener Docker-Container zum Entwickeln.

Ubuntu MacOS Jenkins nodejs npm Gradle TestNG AssertJ Mockk Github Github Actions AWS CDK AWS Cloud Formation JUnit 5 Mockito IDEA Intellij Docker Rancher Desktop Thymeleaf Atlas MongoDB Redis AWS DynamoDB AWS SNS AWS SQS AWS Lambda AWS Event Bridge AWS Cloudwatch Spring Boot Dependabot Varnish Cache Terraform yarn AWS
Java Kotlin Jenkins TypeScript JSON YAML XML JavaScript Scala Groovy Docker Rancher Desktop HTML Python Bash ZSH asdf SOAP GitHub
Einzelhandelsunternehmen
Remote
6 Monate
2021-04 - 2021-09

Java Programmierung für die SAP cloud authorization services

Entwickler
Entwickler

Für eine mit XText erstellte DSL (Domain-specific language) konnte bisher nur Eclipse als Entwicklungsumgebung benutzt werden um in dieser neuen Sprache zu arbeiten. Da Xtext schon seit längerem das Language server protocol unterstützt, wurde dies nun benutzt, um die Sprache in Visual Studio Code als Extension und in IDEA Intellij als Plugin einbindbar zu machen, damit dann auch darin unter Windows und unixoiden Betriebssystemen komfortabel in dieser Sprache gearbeitet werden kann. Mit Funktionalitäten wie z.B. Auto-Vervollständigung, Refactoring, zur Deklaration springen, zu Verwendungen springen, Code-Generierung usw.

Hierzu gehört die Erstellung der Extension und des Plugins sowie die Erstellung von End-To-End-Tests, welche auch die Funktionen innerhalb der Entwicklungsumgebungen testen.

Windows 10 MacOS Big Sur Java Jenkins nodejs npm TypeScript JSON XML JavaScript Maven Gradle JUnit 3/4/5 Mockito Scala Groovy Eclipse XText XTend Visual Studio Code IDEA Intellij LSP (Language Server Protocol) LSP4J LSP4Intellij TextMate Grammatik Nexus Artifactory SonarQube Docker OPA (Open policy agent)
Softwarehersteller
Remote
3 Jahre 6 Monate
2017-07 - 2020-12

Erneuerung der Vertriebsplattform

Java-JEE-Entwickler, Full-Stack-Developer, DevOPS agile Entwicklungsmethoden XML JSON ...
Java-JEE-Entwickler, Full-Stack-Developer, DevOPS

Mitarbeit beim Sitzplatzmanagement innerhalb der Erneuerung der
                Vertriebsplattform mittels agiler Entwicklungsmethoden.
                Im Teilprojekt Datenversorgung
                - Bereitstellung der Wagenreihungen von Zügen für alle
                  Abschnitte einer Zugfahrt
                - Zuordnung der Wagentypen mit den möglichen Sitzplätzen und
                  sonstigen Reservierungsmöglichkeiten zu den Wagen eines Zuges
                - Bereitstellung der Daten in RabbitMQ Message-Queues mit
                  MongoDB Persistierung für die Sitzplatz- und Inventar-Reservierung
                - Protokollierung der Änderungen, bei Ausfällen oder Fahrplanänderungen.
                - Implementierung als Micro-Service, realisiert durch
                  Docker Container mit Wildfly-Swarm, später Thorntail
                - Deployment der Docker Container in OpenShift in einer
                  AWS Virtual Private Cloud Umgebung, später EKS
                Im Teilprojekt Wagentypen
                - Bereitstellung eines Micro-Service zur CRUD-Persistierung
                  von in einem GUI erfassten Wagentypen
                - Kommunikation mit dem GUI über REST-Schnittstelle
                - Wagentypen wurden dann als JSON-Messages über Message-Queues
                  den Abnehmern zur Verfügung gestellt.
                - Persistierung in einer MongoDB
                - Migration nach Amazon DocumentDB
                - Implementierung als Micro-Service, realisiert durch
                  Docker Container mit Wildfly-Swarm, später Thorntail, dann Spring-Boot
                - Deployment der Docker Container in OpenShift in einer
                  AWS Virtual Private Cloud Umgebung, später EKS
                Im Teilprojekt Reservierung
                - Implementierung neuer fachlicher Anforderungen
                - Umstellung existierender Micro-Services von MongoDB auf
                  JPA mit Hibernate und darunterliegender PostgreSQL/Amazon RDS
                  und von Thorntail auf Spring-Boot
                Im Teilprojekt Umplatzierung
                - Bereitstellung von Micro-Services zur Benachrichtigung
                  von Kunden mit Reservierungen, wenn sich an Ihrer Reservierung
                  etwas ändert.
                - Ermittelung von Ersatzzügen, Zugausfällen, Wagentyp-Änderungen,
                  Wagenreihungs-Änderungen.
                - Benachrichtigung über die neuen Sitzplätze einer Reservierung,
                  wenn Umplatzierung möglich.
                - Persistierung mittels JPA mit Hibernate und
                  darunterliegender PostgreSQL/Amazon RDS
                - Asynchrone Kommunikation mit anderen Micro-Services
                  über ActiveMQ/AmazonMQ
                - Implementierung als Micro-Services, realisiert durch
                  Docker Container mit Thorntail, dann Migration nach Spring-Boot
                - Deployment der Docker Container in OpenShift in einer
                  AWS Virtual Private Cloud Umgebung, später EKS
      
                Während der ganzen Projektlaufzeit.

                - Kontinuierliche Updates der Dependencies in Maven-Build-Files
                  und Dockerfiles wegen Security-Anforderungen (CVE‘s) und
                  neuer Features. Dabei waren öfter umfangreiche Änderungen
                  durchzuführen, da viele Bibliotheken leider nicht
                  abwärtskompatibel waren und deshalb sehr viel umgestellt
                  werden musste. Die Updates wurden erst manuell gemacht
                  und später wurde dafür der Renovate Bot eingesetzt,
                  welcher die Updates dann automatisiert hat.
                - Kontinuierliche Anpassungen an den Consumer driven contracts (CDC‘s)
                  welche automatisiert geprüft werden.
                - Kontinuierliche Anpassungen an Findings und Code-Abdeckung in SonarQube.
                - Migration der Cucumber Tests von 1.* bis 6.8.*
                  mit sämtlichen Zwischenversionen.
                - Umstellung von Docker CentOS-Base-Images auf
                  Alpine-Base-Images um die Deployments zu verschlanken
                  und sicherer zu machen.
                - Umstellung von Java 1.8 auf Java11.
                - Umstellung von JUnit 4 auf JUnit 5 und anschliessender
                  Entfernung von JUnit 4.
                - Pflege und Erweiterung der CI/CD Pipelines mit Jenkins.
                - Erstellung von Docker-Containern und deren Deployment
                  in Openshift, Amazon EKS, Amazon ECS.
                - Durchführung der ganzen Test-Pyramide, angefangen
                  mit JUnit-Tests, lokalen Service-Integrationstests,
                  lokalen und nicht lokalen Gesamt-Integrationstest
                  sowie Performance-Tests.
                - Generierung von Maven Build Files aus Templates
                  mittels XSLT und Entity-Auflösung um die Build
                  Files übersichtlicher zu gestalten und einfacher
                  Teile hinzuzufügen oder entfernen zu können.
                - Ständig den Automatisierungsgrad und die Code-Qualität erhöhen.
                - Wartung, Fehlersuche und Monitoring mittels Prometheus,
                  Grafana, Instana, Kibana, Graylog.

                - Erstellung und Pflege eigener Docker-Container zum Testen
                  inklusive SSL-Verschlüsselung und Konfiguration z.B. für
                  ActiveMQ, PostgreSQL, WireMock, RabbitMQ, nginx.

IntelliJ IDEA Eclipse Java 1.8 Kubernetes 1.18 AWS EKS Groovy Jenkins Maven Gitlab Atlassian Confluence Atlassian JIRA PostgreSQL Heartbeat JUnit 5 JUnit 4 Cucumber 1.1-6.8.2 Quarkus Spring Boot 2.3.*-2.4.* Thorntail 2.0.0-2.7.0 Wildfly Swarm Windows 7 Windows 10 Java 11 MongoDB JEE7 RabbitMQ Bash Docker Git Openshift Rancher Rancher OS XML XML-Schema JSON JSON-Schema AVRO YAML Clair SQL AWS ECS AWS EKS PostgREST ActiveMQ AmazonMQ Amazon DocumentDB Amazon RDS Google Guava Checkstyle log4j Swagger OpenAPI Flyway Undertow JMS Validation Micro-Profiles EJB3 JAX-RS JAXP JAXB Jackson Mockito CDI JPA Java Transaction API Immutables RESTeasy JNDI REST-assured Smallrye Equals-Verifier SonarQube Awaitility Hamcrest AssertJ Weld slf4j logback Gatling JMeter Scala Whitesource Assistify Fortify VersionEye Wiremock Renovate bot Spring cloud contract FindBugs SpotBugs Keycloak Deltaspike Surefire Failsafe Jacoco PMD Maven Enforcer Traefik nginx JWT Yarn Angular NPM Artifactory Nexus cntlm Ansible Vagrant VirtualBox Hyper-V Ubuntu Graylog Prometheus Grafana Instana Kibana Amazon Managementkonsole XSLT
agile Entwicklungsmethoden XML JSON Jenkins Cloud Deployment Yaml Integrationstests JUnit JEE JPA SQL
ÖPNV
Frankfurt am Main / Remote
1 Jahr 1 Monat
2016-05 - 2017-05

Migration von Legacy-Systemen nach SAP-GKV

ETL-Entwickler SQL PL/SQL
ETL-Entwickler
  • Migration von Legacy-Systemen nach SAP-GKV für die Produkte Pflege, Arbeitsunfähigkeit-Krankengeld, Krankenhaus und Zuzahlung mittels dem ETL-Tool DataStage.
  • Als Code-Basis wurde der Code aus dem Projekt 03/2010-11/2013 verwendet und dann mittels der neuen Konzepte und Modelle für die neuen Anforderungen angepasst.
  • Erstellung von Table-Definitions und OSH-Schemas aus von SAP ausgelesenen DI-Strukturen zur Verwendung in den Datastage-Jobs. Da die Access ODBC-Treiber kein 64-Bit unterstützen und auch in Java 1.8 die JDBC-ODBC-Bridge entfernt wurde, wurde die Datenbasis neu in eine H2-Datenbank überführt.
    Die ausgelesen Strukturinformationen wurden in der Datenbank abgelegt und daraus wurde mittels eines
    Java-Programmes und Freemarker die Table-Definitonen, SQL und OSH-Schemas generiert.
  • Ablauf der Migrationen: Angelieferte Datenbank-Extrakte im
    CSV-Format werden mittels Datenbank-Loads in die Datenbank DB2 eingelesen und dann mittels Datastage-Jobs in DI-Strukturen (Direkt-import) gewandelt welche dann durch Massentransaktionen in SAP verbucht werden.
  • Mittels Python wurde ein Map-Reduce-Script erstellt um parallel Statistiken aus den erzeugten DI-Dateien mittels awk-Scripten zu ermitteln. Für die verschiedenen Produkte musste dann nur noch eine Klasse abgeleitet werden und die entsprechenden Methoden überladen werden.
Microsoft Windows 7 IBM Information Server WebSphere DataStage 11.5 DB2 10.5 C++ Java 1.7 Java 1.8 JDBC Citrix Terminal Server Bash SAP Freemarker 2.3.24 awk AIX 7.1 Eclipse 4.5.2 H2 DB-Engine 1.4.192 Microsoft Access 2013 Python 2.6.2 Subversion 1.7.9 Tortoise 1.7.12 Rational Quality Manager 4.0.7 Claims GKV 4.0.5
SQL PL/SQL
Gesetzliche Krankenversicherung
Wuppertal
1 Jahr 3 Monate
2015-03 - 2016-05

Erstellung einer DSL zum verarbeiten von XML-Messages

Software-Entwickler
Software-Entwickler

Es wurde eine Software erstellt, welche eingehende XML-Messages aus einer MessageQueue performant entgegen nimmt, validiert, konvertiert und in eine Datenbank persistiert.

Dazu wurde eine DSL erstellt, welche die eingehenden Daten modellieren kann und zusätzlich datentypbasierte Konvertierungen automatisiert ausführen konnte. Weiterhin wurde die DSL mit Validierungen angereichert. Diese Konvertierungen und Validierungen sind auf Typebene als Fallback anzugeben oder sie können an den modellierten Daten "überladen" werden. Dafür unterstützt die Datenmodellierung Vererbung.

Realisiert wurde das ganze mit xText für die DSL-Erstellung. Daraus wurde dann mit Generatoren Java-Code erstellt, welcher dann unter Wildfly mittels Message-Driven-Beans hochperformant und vor allem parallel und damit skalierbar die XML-Messages validiert und konvertiert hat. Die Messages werden danach im CSV-Format auf der Platte zwischengelagert, wo sie dann asynchron von einer JEE7 Batch Processing Anwendung zusammengefasst werden und in die Datenbank persistiert werden.

Der Durchsatz konnte so gegenüber der Altlösung erheblich gesteigert werden. Und vor allem könnte man später, wenn nötig, den Wildfly clustern um den Durchsatz weiter zu erhöhen.

Um die ganze Infrastruktur, welche zur Entwicklung benötigt wird, auch anderen Entwicklern, welche nicht so tief in der Materie stecken, zur Verfügung zu stellen, wurden mittels VirtualBox virtuelle Maschinen mit CentOS und Docker Containern und eine mit IPFire aufgesetzt. In IPFire lief dann ein Proxy zum cachen von Entwicklungs-Artefakten. In den Docker Containern liefen dann ein Nexus Artefakt Repository zur Verwaltung der Maven und der Eclipse-Plugin Artefakten und ein Wildfly zur Implementierung der Message-Driven-Beans und der Batch-Processing-Anwendung.

Eclipse xText Wildfly JEE7 SLES Windows Nexus Artifactory Maven IPFire VirtualBox Xtend Docker Teradata TIBCO Enterprise Message Service Java XML Squid HornetQ ActiveMQ JSR-352 Batch Processing XSLT
Großhandelsunternehmen
Ingolstadt
9 Monate
2014-03 - 2014-11

ETL Bewirtschaftung eines DataWareHouse

ETL-Entwickler IBM Information Server WebSphere DataStage SQL AIX ...
ETL-Entwickler
Erstellung von Datastage-Jobs um neue Produkte in das DataWareHouse zu laden. Implementierung nach Fachkonzept. Anpassen von existierenden Jobs an neue Produkte. Implementierung nach Fachkonzept. Fehlerbehebung beim Integrationstest. Optimierung von Job-Laufzeiten beim Massentest. Analyse der bestehenden Jobs zur Befüllung der Dimensions-Tabellen. Generalisierung der Jobs zur Bewirtschaftung der Dimensions-Tabellen. Dadurch wird jetzt eine Einsparung von etwa 80 Jobs möglich. Dadurch vor allem Reduzierung der Komplexität und der Fehler-Diversifikation. Einheitliche Behandlung der Dimensionen nach dem Prinzip "Slowly Changing Dimensions".
IBM Information Server WebSphere DataStage 8.7 Windows XP IBM AIX 6.1 DB/2 9.1 MS Office Lotus Notes Subversion 1.8 Tortoise 1.8.6
IBM Information Server WebSphere DataStage SQL AIX Shell-Script
München
3 Monate
2014-01 - 2014-03

Review einer bestehenden Web-Anwendung und Erstellung eines Prototyps zur Neuimplementierung mittels Model Driven Architecture

Architekt XML DTD XML-Schema ...
Architekt
Eine bestehende Web-Anwendung sollte hinsichtlich Performance, Wartbarkeit, Erweiterbarkeit, Skalierbarkeit und Code-Qualität analysiert werden um eine Meinung eines Aussenstehenden zu erhalten. Bei der Analyse wurde dann festgestellt dass durch zu viele gleichzeitig eingesetzte Technologien, welche die gleiche Funktionalität abbildeten, und zu wenig Objektorientierung die Code-Basis sehr schwer wartbar, geschweige denn erweiterbar war. Durch diesen Code-Moloch waren natürlich auch Fehler sehr schwer zu beheben, da diese an mehreren Stellen korrigiert werden mussten. Dazu wurden Metriken ermittelt, Abhängigkeiten analysiert und dokumentiert und toter Code lokalisiert. Man kam also zu dem Schluss, dass man einen neuen moderneren, zeitgemässeren Ansatz für eine Neuimplementierung haben wollte und man die alte Code-Basis nur noch kurz- bis mittelfristig pflegen aber nicht mehr weiterentwickeln wollte. Nach Bestimmung der benötigten Funktionalitäten und Auswahl der dazu passenden Architektur wurde ein Prototyp von mir erstellt. Dieser basiert auf Model Driven Architecture und erzeugt den Grossteil des Codes aus einem UML Modell. Er reduziert so also den zu pflegenden Code deutlich. Er ist in Xtend implementiert und kann somit existierenden Java-Code und schon bewährte Funktionalitäten einbinden. Das Framework wurde mit Injection und vollständig objektorientiert aufgebaut. Man könnte also alle Funktionalitäten einzeln austauschen ohne den Rest anzufassen und ohne dass dieser etwas davon merkt. Die getroffene Wahl der MDA erlaubt es später dann auch den Server-Code zum Großteil aus dem Modell zu generieren. Als weiteren Punkt für die spätere Weiterentwicklung könnte dann anstatt UML eine eigene DSL benutzt werden, welche die Modellplege deutlich beschleunigen würde und die Generierung von noch komplexeren Code erlauben würde ohne das die bestehende Code-Basis geändert werden müsste, sondern nur der Generierungscode.
Windows 7 Eclipse Kepler 4.3 MS Office Lotus Notes Git SourceTree Xtend 2.6 Xtext 2.6 Xbase 2.6 Infinispan 7.0 Checkstyle 6.1 Guice 3.0 jdepend 2.9.1 Castor 1.3.3 gson 2.3.1 JBoss 6.3 JBoss Cache 3.0.0 GWT 2.6
XML DTD XML-Schema UML DSL MDA Java 6 Java 7 Xtext Xtend Xbase JAXB JSON Java EE 6
Saarbrücken

Aus- und Weiterbildung

Aus- und Weiterbildung

Fachhochschulstudium der Elektrotechnik Fachrichtung Automatisierungstechnik
Abschluss Dipl. Ing. Elektrotechnik

1986-1991  Softwareprojekte neben Studium
1991-1998  festangestellter Softwareentwickler
1998-2000  festangestellter Projektleiter
2000-      freier Softwareentwickler

Kompetenzen

Kompetenzen

Top-Skills

Java DataStage MDA Kotlin Github-Actions IBM InfoSphere DataStage AWS

Produkte / Standards / Erfahrungen / Methoden

ActiveMQ
agile Entwicklungsmethoden
Amazon DocumentDB
Amazon Managementkonsole
AmazonMQ
Ansible
Artifactory
AssertJ
Assistify
Atlassian Confluence
Atlassian JIRA
AVRO
Awaitility
AWS
AWS ECS
AWS EKS
CDI
Checkstyle
Citrix Terminal Server
Claims 4.0.5
Claims GKV 4.0.5
Clair
Cloud
cntlm
Cucumber 1.1-6.8.2
Deltaspike
Deployment
Docker
Eclipse
Eclipse 4.5.2
EJB3
EKS
Equals-Verifier
Failsafe
FindBugs
Flyway
Fortify
Freemarker 2.3.24
Gatling
Git
Gitlab
Google Guava
Grafana
Graylog
H2 DB-Engine 1.4.192
Hamcrest
Heartbeat
HornetQ
Hyper-V
IBM Information Server WebSphere DataStage 11.5
Immutables
Instana
Integrationstests
IntelliJ IDEA
IPFire
Jackson
Jacoco
Java 11
JEE
Jenkins
Jenkins
JMeter
JMS
JPA
JSON
JSON-Schema
JSR-352 Batch Processing
JUnit
JUnit 4
JUnit 5
JWT
Keycloak
Kibana
Kubernetes 1.18
log4j
Maven
Maven Enforcer
Micro-Profiles
Mockito
Nexus
nginx
NPM
OpenAPI
Openshift
PMD
Postgrest
Prometheus
Python 2.6.2
Quarkus
RabbitMQ
Rancher
Rational Quality Manager 4.0.7
Renovate bot
REST-assured
RESTeasy
RQM
SAP
SAP Modul GKV
slf4j
Smallrye
SonarQube
Spring Boot 2.3.*-2.4.*
Spring cloud contract
Squid
Subversion
Subversion 1.7.9
Surefire
Thorntail 2.0.0-2.7.0
TIBCO Enterprise Message Service
Tortoise
Tortoise 1.7.12
Traefik
Undertow
Vagrant
Validation
VersionEye
VirtualBox
Whitesource
Wildfly
Wildfly Swarm
Wiremock
XML
XML-Schema
XSLT
xText
Yaml
Yarn
Produkte:
ARIS-Toolset
Microsoft Office,Access
Oracle
DB2
DataStage Server
DataStage PX
Enterprise Architect
Rational Rose
BEA Weblogic Applicationserver
JBOSS Applicationserver
WebSphere Applicationserver

Enwicklungstools:
Microsoft Visual-C++,Visual-Basic
Borland/Inprise C++-Builder, Delphi, JBuilder
JDK Sun Java Development Kit
NetBeans
Forte for Java
Eclipse
Rational Application Developer RAD
OpenArchitectureWare OAW
SQLDeveloper
JXPlorer

Erfahrungen:
OOA und OOD nach Booch und UML
MDA
Neuronale Netze
Fuzzy-Logik
Objektorientierte Programmierung in C++,Java und auch in C und Assembler zu Fuss
STL Standard Template Library
MFC Microsoft Foundation Classes
Bildverarbeitung
Audioverarbeitung
Compilerbau mit lex,flex und yacc,bison,antlr
Projektleitung
Shellprogrammierung unter Unix
Web-Auftritt vom Frontend bis zum Backend (HTML,Javascript,Java,EJB,Servlet,XML,XSL)

Betriebssysteme

AIX 6.1
AIX 7.1
Alpine
Amazon Linux AMI
CentOS
Echtzeitbetriebssysteme
RTOS
HPUX
IRIX
Mac OS
Microsoft Windows 7
MS-DOS
Novell
OS/2
OSF/Motif
PalmOS
Psion Series 3
Rancher OS
Rancher OS
RTOS (Real Time OS)
SLES
SUN OS, Solaris
Symbian
TOS
Ubuntu
Unix
Windows
Windows 10
Windows 7

Programmiersprachen

4gl
unifAce
Angular
Apl
Assembler
Motorola 68XXX
awk
Bash
Basic
C
Sehr gute Kenntnisse
C++
Sehr gute Kenntnisse insbesondere Templates und STL
CodeWarrior
CORBA IDL
dBase
Delphi
Groovy
HPGL, HP PCL
Imake, GNU-Make, Make-Maker etc...
Java
Sehr gute Kenntnisse
Java 1.7
Java 1.8
Java 11
Java 9
Java Transaction API
JavaScript
Sehr gute Kenntnisse
JAX-RS
JAXB
JAXP
JEE7
Jenkins Pipeline DSL
JNDI
JSON
logback
Maschinensprachen
Maven
Modula-2
Pascal
Perl
Keine Projekterfahrung, kann es aber lesen
PHP
Keine Projekterfahrung, kann es aber lesen
PL/SQL
Psion OPL
Python 2.6.9
Rexx
Scala
Shell
SpotBugs
Swagger
TeX, LaTeX
VRML
Weld
XML
Xtend
yacc/lex
YAML
ZINC

Datenbanken

Access
Adimens
Amazon DocumentDB
Amazon RDS
Amazon RDS PostgreSQL
B-Tree
BDE
DAO
DB2
DB2 10.5
H2 DB-Engine
Hypersonic SQL
Interbase
Firebird
ISAM
JDBC
JPA
Microsoft Access 2013
MongoDB
MongoDB
MySQL
ODBC
Oracle
Paradox
POET
Postgres
PostgreSQL
SQL
Teradata
ToroDB
xBase
 

Datenkommunikation

CORBA
Ethernet
HTTP
HTTPS
Internet, Intranet
Proprietäre Protokolle
RMI, UNIX IPC InterProcessCommunication,IEC-Bus
REST
RS232
TCP/IP
Windows Netzwerk
Winsock

Hardware

Android Smartphones und Tablets
Apple PC's
Apple Smartphones und Tablets
Atari
CD-Writer / Brenner
Digitale Signalprozessoren
Drucker
Echtzeitsysteme
Emulatoren
Framegrabber
Fuzzy Controller
Hardware entwickelt
HP
IBM RS6000
Industrie-Roboter
Messgeräte
Mikrocontroller
Modem
Motorola
PC
Plotter
Raspberry Pi
Scanner
Sensoren
Server x3950 x5
Silicon-Graphics
Soundkarten
SPS
Steuer und Regelsysteme
Streamer
US Robotics Pilot

Berechnung / Simulation / Versuch / Validierung

PSpice
Während des Studiums benutzt.

Branchen

Branchen

Softwarehersteller EDV
Industrie CAD
ÖPNV
Automatisierungstechnik
Börse
Versicherung
Bank
Medien
Wirschaftsprüfung

Vertrauen Sie auf Randstad

Im Bereich Freelancing
Im Bereich Arbeitnehmerüberlassung / Personalvermittlung

Fragen?

Rufen Sie uns an +49 89 500316-300 oder schreiben Sie uns:

Das Freelancer-Portal

Direktester geht's nicht! Ganz einfach Freelancer finden und direkt Kontakt aufnehmen.