100% Remote bevorzugt
Die
bestehende In-/Exkasso Projektlösung PayTraS mit Anbindung an bisher
wenige Umsysteme soll zum Produkt weiterentwickelt werden. Dazu
müssen die Schnittstellen für weitere Umsysteme erweitert, die
einfachere Anpassbarkeit an verschiedene Kunden ermöglicht sowie
immer neu benötigte Funktionen zur Verfügung gestellt werden.
Meine
Aufgabe ist hierbei die Unterstützung des kompletten
Entwicklungsweges angefangen vom EMF-Modelling (Persistence-Services
und DB-Struktur) über die Domänen-Entitäten, Services und
Prozessen bis hin zum Frontend.
Daneben bin ich zeitweise für
das Deployment und das Updaten der Docker-Container zuständig. Eine
weitere Hauptbeschäftigung sind auch Datenbank-SQL-Abfragen zum
Herausfinden von Datenfehlern oder
Optimierungsmöglichkeiten.
Zeitweise bin ich auch beim Kunden
auf Kubernetes in der AWS unterwegs.
Eine Teilaufgabe war, bestehende Applikationen und Microservices durch Fehlerbeseitigung und Codeoptimierungen zu stabilisieren sowie neue Features zu implementieren.
Die Entwicklung wurde hier in Scrum-Teams mit ca. 5 bis 10 Personen geleistet, insgesamt gab es ca. 15 verschiedene Teams an verschiedenen Standorten. Jedes Team hatte seine eigenen Kompetenzen für eine Anzahl von Modulen. Stories/Tickets wurden dabei vom gesamten Team ins Jira eingestellt und fertig ausformuliert. Bei allen Arbeiten wurde zunächst ein neuer Feature-/Bugfix-Branch in Git erstellt, erst nach einem erfolgten PR und Review durfte der geänderte Code in den Master-Branch gemergt werden. Es wurde immer besonderer Wert auf vollständige Unit- und Integrationstests sowie Dokumentation gelegt.
Nachdem der neue Code im Master-Branch verfügbar war, musste ein Deployment-Ticket gestellt werden, damit die neue Version auch auf die Test-Stages gelangten. Erst nachdem die neuen Versionen erfolg-reich auf Test-, Integration- Approval und PreLife-Stages getestet wurden, erfolgte schliesslich das Deployen auf die Live-Umgebung. Automatische Unit-, Acceptance-, Regression- und Smoke-Tests (auch in Form von Gauge-Tests) prüften hierbei die korrekte Funktionsweise ab.
Es gab allerdings noch zwei grundsätzlich verschiedene ‚Welten‘: Zum einen die OnPrem-Umgebung mit eigenen Stages und Oracle-Datenbanken, auf der anderen Seite die Cloud-Umgebung mit Postgres-Datenbanken. Liquibase-Skripte erledigten die Datenbank-Befüllung.
Desweiteren war man gerade auch dabei, die bestehenden OnPrem-Systeme in die Cloud zu migrieren (zumindest für einen Teil der neueren Daten). Dafür musste der Code an neue Schnittstellen, neue Komponenten sowie für das geänderte Deployment angepasst werden. Die Cloud-Migration erfolgte dabei in mehreren Schritten: Als Zwischenschritt wurde zunächst die AWS gewählt, für neueste Entwicklungen dann aber die Azure-Cloud.
Projektaufgabe: Die monolithische OnPremise-Umgebung sollte in Microservices zerlegt und in Azure gehostet werden.
Die On-Premise-Umgebung war über viele Jahre gewachsen und ist um einen zentralen ZOS-Host aufgebaut. Zusätzlich zu den DB2-Datenbanken auf dem Host wurden auch einige Oracle-Datenbanken beigestellt. Viele verschiedene Applikationen nutzen die Daten für interne sowie externe Mitarbeiter und Kunden.
Das Projekt beinhaltete dazu alle Schritte von der Analyse des Ist-Zustandes bis hin zum produktiven System in der Azure-Cloud. Die Aufgaben wurden auf 4 Scrum-Teams verteilt, ich war ein Entwickler in einem Team. Die Sprints hatten eine Länge von 2 Wochen.
Aufgabe unseres Team war die Implementation eines Microservices, der die Daten der sogenannten Vermögensberater über eine REST-Schnittstelle abrufbar sowie änderbar machen sollte. Gearbeitet wurde mit IntelliJ, der Microservice wurde in Kotlin mit Spring-Boot implementiert. Für lokale Testzwecke wurde eine MS-SQL-Datenbank in einem Docker-Container genutzt, für manche Tests auch eine H2-Datenbank. Aufgebaut wurde die Datenbank über Flyway-Skripte, der produktive Microservice selbst nutzte dann eine Azure-Datenbank. Angesprochen haben wir die Datenbank über JPA-Repositories, der Microservice war in drei Schichten für API/Controller, Service sowie DB/Repositories aufgebaut. Ein Jenkins-Server deployte die aktuellen Änderungen auf einen Kubernetes in Azure, die Qualität wurde durch automatisch angestoßene Modul-, Integrations- sowie API-Tests und zusätzlich einem Sonar zur Kontrolle der Testabdeckung gewährleistet. Da der vorhandene Host für eine längere Übergangszeit auf jeden Fall noch erhalten bleiben sollte und damit auch weiterhin für die meisten Daten die Datenhoheit hatte, mussten die Bestandsdaten regelmäßig von der DB2-Datenbank in die Azure-Datenbank übertragen werden. Exportiert wurden die Daten auf dem Host mit entsprechenden Skripten und vom Host-Team in einen Data-Lake in Azure übertragen. Von dort aus realisierten wir den Import in die Azure-DB mittels Pipelines und Data-Flows der Azure-Data-Factory. Für den Reibungslosen Ablauf von Entwicklung, Integration, Abnahme und Produktion sorgten vier getrennte Umgebungen in Azure und Kubernetes.
Meine vorherigen Arbeiten in der Abteilung 'After-Sales' waren nun abgeschlossen, der Weiterbetrieb des Intranets soll von internen Mitarbeitern geleistet werden. Die dafür vorgesehenen Mitarbeiter sollen auf einen Wissensstand gebracht werden, damit der Betrieb gewährleistet ist. Hierfür wurde sämtliche Dokumentation überarbeitet und in einem WiKi bereitgestellt. Zusätzlich fanden wöchentliche Schulungen statt, in den wir (ein weiterer freiberuflicher Kollege und ich) systematisch unterteilt die Mitarbeiter in kleinen Gruppen geschult haben. Ergänzt wurden die Schulungsmaßnahmen durch Einzelschulungen zu bestimmten aktuellen Themen. Parallel habe ich in einzelnen Applikation kleine Verbesserungen und Fehlerkorrekturen durchgeführt.
Planung und Realisierung einer Internetseite, auf der sich Gruppen und Bewegungen vernetzen und austauschen können. Wordpress wurde dabei nur als grober Rahmen und für die Benutzerverwaltung genutzt, alle anderen Module sind PHP Eigenentwicklung
Basis für dieses Teilprojekt bilden die vielen in den vorhergenenden Prokten bereitgestellten Daten. Aufgrund der Datenfülle sind alle diese gesammelten Daten nicht nur in einem Datenbank-Schema gespeichert, sondern in einzelnen, separierten Bereichen verteilt. Damit sind die Daten jeweils in sich abgeschlossen, besser wartbar und können einfacher gesichert und im Notfall auch besser restauriert werden.
Diese Applikation 'Easy Objects' ermöglicht auf grafische Weise datenbank-übergreifend die einfache Verknüpfung aller Daten und stellt eine einfache Möglichkeit bereit, diese Daten auch grafisch als z.B. Pie- oder Bar-Chart einem anderen Nutzer im Browser zur Verfügung zu stellen.
Für diese Applikation war HTML5 notwendig, da hier mittels des Canvas-Objektes wesentlich umfangreichere grafische Möglichkeiten existieren.
Da bei General Motors Fahrzeuge in aller Welt gebaut und unterstützt werden, fallen auch ebenso vielfältige Daten in den unterschiedlichsten Formaten an. Das können Daten sein, die entweder per Fileshare, per FTP, Datenbank-Direktzugriff, per eMail oder sonst wie angeliefert werden. Die Formate sind dabei ebenso vielfältig, z.B. als Plain Text, XML, proprietäre Binärformate und andere. Dazu kommt, dass bestimmte Daten nur innerhalb eines bestimmten Zeitfensters verfügbar sind.
Da die Sammlung und Verarbeitung dieser Daten zuvor weitesgehend händisch erfolgte, musste nun zuerst der aktuelle Zustand analysiert und verschiedene Arbeitsgruppen in ihrer Arbeitsweise befragt werden. Nachdem ein grober Rahmen bekannt war, welche Daten in welcher Menge zu erwarten waren sowie Prozesse herausgearbeitet wurden, in welcher Form die Daten zu verarbeiten, bereitzustellen bzw. zu präsentieren waren, wurden eizelne Applikationen definiert. Im Laufe des Projekts wurde das Entwicklerteam bis auf 5 Mitarbeiter aufgestockt. Da ich die vorhandenen Systeme von Beginn an geplant und mit aufgebaut hatte, habe ich hier neben meiner Entwicklertätigkeit auch die Einarbeitung der neuen Projektmitarbeiter übernommen sowie in enger Abstimmung mit dem Projektleiter auf Kundenseite versucht, die anstehenden Arbeiten sinnvoll zu verteilen.
Hier soll nur kurz auf die verschiedenen Applikationen im Einzelnen eingegangen werden:
Design und Implementierung einer Web-Applikation zum Sammeln von Fahrzeug-Daten
Die Applikation 'Collet Data' sollte daher in der Lage sein, automatisiert Daten einzusammeln und in die Datenbank - entweder im Rohformat oder schon (vor-)verarbeitet – abzulegen. Dazu wurde ein System geschaffen, in dem der Nutzer 'Jobs' anlegen kann, in denen er jeweils ein Skript in einer
proprietären frei erweiterbaren Skriptsprache mit Anweisungen verfassen kann, die das Einsammeln und Verarbeiten der Daten bewerkstelligen. Diese Jobs können zum einmaligem Start oder auch für feste Wiederholungen konfiguriert werden. Die Erfolgsüberwachung der Jobs wird grafisch aufbereitet angezeigt.
Design und Implementierung einer Web-Applikation zum schnellen Bereitstellen spezieller Softwarepakete für Kunden
Es gibt Situationen, in denen der Softwarestand auf den General Motors Applikationsservern, von denen sich KFZ-Werkstätten mit Fahrzeugdaten versorgen, nicht aktuell genug ist oder auch eine Softwarevariante für ein spezielles Fahrzeug so nicht verfügbar ist. In diesen Fällen werden von der Fachabteilung für dieses Fahrzeug dedizierte Softwarepakete vorbereitet.
Diese Pakete sollen von dieser Applikation 'Special-VCI' auf den GM-Applikationsservern für die sofortige Verwendung bereitgestellt werden. Außerdem ermöglicht diese Applikation einen Überblick über alle bisher bereitgestellten Pakete inklusive aller notwendigen Funktionen wie Freigabe/Sperrung von Paketen, setzen spezieller Flags oder auch das Löschen eines nicht mehr benötigten Paketes.
Design und Implementierung einer Web-Applikation zur Modul-Pflege
Angefangen mit nur einem Motor-Steuergerät haben Fahrzeuge zunehmend immer mehr Steuergeräte. Das sind Steuergeräte für z.B. das Getriebe, Multimedia oder Servolenkung etc.. Jedes dieser Steuergeräte wird mit einer Software programmiert, die wieder aus mehreren Modulen aufgebaut ist. Diese Module werden von Zeit zu Zeit aktualisiert, entweder wegen neuen Funktionen und Vorgaben oder auch zur Fehlerbereinigung. Deshalb kommen regelmäßig Lieferungen mit neuen Modulen incl. Zuordnungen, für welche Fahrzeuge und Steuergeräte diese Module gültig sind.
Die Applikation 'PDS' verwaltet hier alle diese Module mit den Versionsständen sowie den Zuordnungen zu Fahrzeugen und Steuergeräten.
Design und Implementierung einer Web-Applikation zur Fahrzeugdaten-Pflege
Die Fülle von Herstellen, Plattformen und Fahrzeugtypen im GM-Konzern ist reichhaltig und unübersichtlich. Damit die verschiedenen Applikation wissen, welchem Fahrzeug sie verarbeitete Daten zuweisen sollen, bietet diese Applikation 'Vehicle Info' gesammelte Fahrzeugdaten für die weitere Nutzung an. Hier ist z.b. hinterlegt, dass der Opel Corsa-D von 2007 bis 2012 in Eisenach und Zaragoza gebaut wurde.
Design und Implementierung einer Web-Applikation zur Fahrzeug-Konfigurations-Pflege
Zusätzlich zu den eigentlichen Fahrzeugdaten fallen auch viele Konfigurations-Daten für ein Fahrzeug an. Hier ist z.B. hinterlegt, ob das Fahrzeug mit einer Anhängerkupplung gebaut oder auch ob diese später nachgerüstet wurde. Abhängig davon ist der aktuelle Softwarestand.
Diese Applikation 'VDMS' sammelt und verarbeitet daher alle Fahrzeugdaten, wie sie ab Werk angefallen sind - d.h. der Zustand wie gebaut - sowie alle Änderungen, die ein Fahrzeug während seiner Lebenszeit erfahren hat.
Vorgefundener Zustand in der Abteilung war, dass die Arbeitsplätze der verschiedenen Mitarbeiter (Autoren, Tester, Daten-Analysten) relativ losgelöst und alleinstehend installiert und gepflegt wurden. Als gemeinsame Datenbasis sowie Austauschmedium existierten Fileserver sowie Lotus-Notes-Datenbanken.
Eine entscheidende Anforderung für das gewünschte neue System war, dass möglichst nichts auf den Client-Systemen installiert werden sollte, die Lösung sollte im Frontend 'so schlank wie möglich' sein. Deshalb entschieden wir uns für ein Internet-Browser gestütztes Design in dem möglichst alle späteren Applikation als Web-Applikationen ausgeführt und über das Intranet verteilt werden sollten.
Das Projekt wurde komplett mit der Eclipse IDE entwickelt und mit GIT versioniert. Schwerpunkt war hier für mich die Softwarearchitektur.
Es mussten alle Schichten der Applikation geplant werden, angefangen vom Frontend auf den jeweiligen Nutzer-PCs bis hin zum Backend auf den Applikations-/Datenbankservern. Im Frontend sollte der Internet Explorer unterstützt werden, damals noch in der Version 8. Die Realisierung lässt sich dabei wie folgt aufteilen:
- Frontend Internet-Explorer: Webseiten realisiert mit HTML / Javascript / jQuery
- Frontend-Library (Eigenentwicklung) mit zentraler Komponente 'jTable' zur schnellen Visualisierung von neuen Tabellen incl. Dialoge zum Neuanlegen, Editieren und Löschen von Datensätzen.
- Middleware-Library (Eigenentwicklung) mit Methoden zum schnellen Erstellen von neuen Servlets
- Backend-Library (Eigenentwicklung) mit Datenbank-Zugriffskomponenten sowie allgemeiner Utility-Sammlung
- Java-Servlets
- Oracle JDBC-Treiber
- Oracle-Datenbank
Implementiert wurden hier neben dem grundsätzlichen Design der Hauptseite hauptsächlich der Administrationsbereich mit Strukturen für die Nutzerverwaltung, Applikationsverwaltung sowie eine Rollenverwaltung zu einfachen Zuweisung von Applikationspaketen. Bestehende Java-Applikationen können nun über die Website mittels Java-Webstart angeboten werden.
Planung und Realisierung eines Filmscanners für Bewegtfilme. Schwerpunkt liegt hier auf der digitalen Bildverarbeitung
In der Abteilung 'Aftersales' gab es bis dato außer Lotus-Notes, eMail- sowie Fileservern noch keine weiteren Server, um Daten zu speichern, zu verteilen sowie die existierenden proprietären Applikationen zu verteilen. Die Idee war daher, einen zentralen Server einzurichten, der jedem Mitarbeiter automatisch die aktuellen Versionen aller von ihm benötigten Applikationen mit allen Daten zur Verfügung stellt.
Nach einiger Abwägung und Evaluierung von verfügbaren Systemen fiel die Wahl schließlich auf ein VM-Ware-Host-System, welches grundsätzlich beliebig viele virtuelle Server zu Verfügung stellen kann.
Es wurde nun zunächst ein Datenbankserver eingerichtet, bei dem wir uns für Oracle-10g-Installation entschieden haben, als Betriebssystem kam Oracle-Linux zum Einsatz.
Dem Datenbankserver wurde ein Applikationsserver zur Seite gestellt, der zunächst auf Windows Server 2008 mit einem Tomcat 6 aufgesetzt wurde.
Um die Ausfallsicherheit zu erhöhen, wurden zusätzlich noch zwei Backupserver eingerichtet, die zweite Oracle-Instanz läuft dabei als 'Physical Standby'.
Fahrzeugdaten-Pflege
Entwicklung von produktunterstützenden Tools
Weiterentwicklung und Wartung von Autorensystemen
Testen und erstellen von Test-Plänen
Aktualisieren von Zentralservern
Realisierung von Systemkomponenten zur Migration von DB-Tabellen und Daten von Oracle nach DB2
Konzept und Entwicklung einer Anwendung zum Erfassen von Lieferungen und Rechnungserstellung
1996 - 1998: Erstellung eines Warenwitschaftssystem für kleine bis mittlere Betriebe
Aufgabe
Deckt viele Funktionen ab, die man für z.B. einen kleinen Einzelhandelsbetrieb benötigt (Lagerhaltung, Faktura, Buchführung etc.).
Umgebung
Paradox / Interbase, Delphi, Windows
1997 - 1997: siehe Aus- und Weiterbildung
1997 - 1997: 3D-Visualisierung fr HMD
Aufgabe
Positionsauswertung mit Head-Tracker, Simulation eines Raumes mit sich bewegenden Gegenständen im HMD.
Umgebung
Borland C++, DOS
1996 - 1996: Speicheroszilloskop 100kHz
Aufgabe
Selbstentworfene Messschaltung, dazu ein Visualisierungs- und Auswertungs-Programm.
Umgebung
Borland C++, Windows 95
1996 - 1996: TimeKey - Ein Zeiterfassungssystem
Aufgabe
Datenbankanwendung, Unabhängige Terminals über Feldbus verbunden,.
Umgebung
Borland C++, Windows 95, CAN-Bus
1992 - 1992: Zeiterfassungssystem
Aufgabe
Umgebung
Pascal, DOS
2021
Spring-/Boot-Schulung bei tutego/Christian Ullenboom
2020
Scrum-Kurs bei der DVAG
2000-2019
Autodidaktische Einarbeitung in aktuelle Techniken und Methoden
1998
Studium Ingenieurinformatik
Abschluss Diplom-Ingenieur-Informatiker (FH)
1992
Abgeschlossenes Fachabitur
Elektrotechnik
1991
Abgeschlossene Lehre
Büroinformationselektroniker
Schule bis Klasse 11
Full-Stack-Entwickler
Teilprojekt-Leitung
Methoden / Standards / Erfahrungen
100% Remote bevorzugt
Die
bestehende In-/Exkasso Projektlösung PayTraS mit Anbindung an bisher
wenige Umsysteme soll zum Produkt weiterentwickelt werden. Dazu
müssen die Schnittstellen für weitere Umsysteme erweitert, die
einfachere Anpassbarkeit an verschiedene Kunden ermöglicht sowie
immer neu benötigte Funktionen zur Verfügung gestellt werden.
Meine
Aufgabe ist hierbei die Unterstützung des kompletten
Entwicklungsweges angefangen vom EMF-Modelling (Persistence-Services
und DB-Struktur) über die Domänen-Entitäten, Services und
Prozessen bis hin zum Frontend.
Daneben bin ich zeitweise für
das Deployment und das Updaten der Docker-Container zuständig. Eine
weitere Hauptbeschäftigung sind auch Datenbank-SQL-Abfragen zum
Herausfinden von Datenfehlern oder
Optimierungsmöglichkeiten.
Zeitweise bin ich auch beim Kunden
auf Kubernetes in der AWS unterwegs.
Eine Teilaufgabe war, bestehende Applikationen und Microservices durch Fehlerbeseitigung und Codeoptimierungen zu stabilisieren sowie neue Features zu implementieren.
Die Entwicklung wurde hier in Scrum-Teams mit ca. 5 bis 10 Personen geleistet, insgesamt gab es ca. 15 verschiedene Teams an verschiedenen Standorten. Jedes Team hatte seine eigenen Kompetenzen für eine Anzahl von Modulen. Stories/Tickets wurden dabei vom gesamten Team ins Jira eingestellt und fertig ausformuliert. Bei allen Arbeiten wurde zunächst ein neuer Feature-/Bugfix-Branch in Git erstellt, erst nach einem erfolgten PR und Review durfte der geänderte Code in den Master-Branch gemergt werden. Es wurde immer besonderer Wert auf vollständige Unit- und Integrationstests sowie Dokumentation gelegt.
Nachdem der neue Code im Master-Branch verfügbar war, musste ein Deployment-Ticket gestellt werden, damit die neue Version auch auf die Test-Stages gelangten. Erst nachdem die neuen Versionen erfolg-reich auf Test-, Integration- Approval und PreLife-Stages getestet wurden, erfolgte schliesslich das Deployen auf die Live-Umgebung. Automatische Unit-, Acceptance-, Regression- und Smoke-Tests (auch in Form von Gauge-Tests) prüften hierbei die korrekte Funktionsweise ab.
Es gab allerdings noch zwei grundsätzlich verschiedene ‚Welten‘: Zum einen die OnPrem-Umgebung mit eigenen Stages und Oracle-Datenbanken, auf der anderen Seite die Cloud-Umgebung mit Postgres-Datenbanken. Liquibase-Skripte erledigten die Datenbank-Befüllung.
Desweiteren war man gerade auch dabei, die bestehenden OnPrem-Systeme in die Cloud zu migrieren (zumindest für einen Teil der neueren Daten). Dafür musste der Code an neue Schnittstellen, neue Komponenten sowie für das geänderte Deployment angepasst werden. Die Cloud-Migration erfolgte dabei in mehreren Schritten: Als Zwischenschritt wurde zunächst die AWS gewählt, für neueste Entwicklungen dann aber die Azure-Cloud.
Projektaufgabe: Die monolithische OnPremise-Umgebung sollte in Microservices zerlegt und in Azure gehostet werden.
Die On-Premise-Umgebung war über viele Jahre gewachsen und ist um einen zentralen ZOS-Host aufgebaut. Zusätzlich zu den DB2-Datenbanken auf dem Host wurden auch einige Oracle-Datenbanken beigestellt. Viele verschiedene Applikationen nutzen die Daten für interne sowie externe Mitarbeiter und Kunden.
Das Projekt beinhaltete dazu alle Schritte von der Analyse des Ist-Zustandes bis hin zum produktiven System in der Azure-Cloud. Die Aufgaben wurden auf 4 Scrum-Teams verteilt, ich war ein Entwickler in einem Team. Die Sprints hatten eine Länge von 2 Wochen.
Aufgabe unseres Team war die Implementation eines Microservices, der die Daten der sogenannten Vermögensberater über eine REST-Schnittstelle abrufbar sowie änderbar machen sollte. Gearbeitet wurde mit IntelliJ, der Microservice wurde in Kotlin mit Spring-Boot implementiert. Für lokale Testzwecke wurde eine MS-SQL-Datenbank in einem Docker-Container genutzt, für manche Tests auch eine H2-Datenbank. Aufgebaut wurde die Datenbank über Flyway-Skripte, der produktive Microservice selbst nutzte dann eine Azure-Datenbank. Angesprochen haben wir die Datenbank über JPA-Repositories, der Microservice war in drei Schichten für API/Controller, Service sowie DB/Repositories aufgebaut. Ein Jenkins-Server deployte die aktuellen Änderungen auf einen Kubernetes in Azure, die Qualität wurde durch automatisch angestoßene Modul-, Integrations- sowie API-Tests und zusätzlich einem Sonar zur Kontrolle der Testabdeckung gewährleistet. Da der vorhandene Host für eine längere Übergangszeit auf jeden Fall noch erhalten bleiben sollte und damit auch weiterhin für die meisten Daten die Datenhoheit hatte, mussten die Bestandsdaten regelmäßig von der DB2-Datenbank in die Azure-Datenbank übertragen werden. Exportiert wurden die Daten auf dem Host mit entsprechenden Skripten und vom Host-Team in einen Data-Lake in Azure übertragen. Von dort aus realisierten wir den Import in die Azure-DB mittels Pipelines und Data-Flows der Azure-Data-Factory. Für den Reibungslosen Ablauf von Entwicklung, Integration, Abnahme und Produktion sorgten vier getrennte Umgebungen in Azure und Kubernetes.
Meine vorherigen Arbeiten in der Abteilung 'After-Sales' waren nun abgeschlossen, der Weiterbetrieb des Intranets soll von internen Mitarbeitern geleistet werden. Die dafür vorgesehenen Mitarbeiter sollen auf einen Wissensstand gebracht werden, damit der Betrieb gewährleistet ist. Hierfür wurde sämtliche Dokumentation überarbeitet und in einem WiKi bereitgestellt. Zusätzlich fanden wöchentliche Schulungen statt, in den wir (ein weiterer freiberuflicher Kollege und ich) systematisch unterteilt die Mitarbeiter in kleinen Gruppen geschult haben. Ergänzt wurden die Schulungsmaßnahmen durch Einzelschulungen zu bestimmten aktuellen Themen. Parallel habe ich in einzelnen Applikation kleine Verbesserungen und Fehlerkorrekturen durchgeführt.
Planung und Realisierung einer Internetseite, auf der sich Gruppen und Bewegungen vernetzen und austauschen können. Wordpress wurde dabei nur als grober Rahmen und für die Benutzerverwaltung genutzt, alle anderen Module sind PHP Eigenentwicklung
Basis für dieses Teilprojekt bilden die vielen in den vorhergenenden Prokten bereitgestellten Daten. Aufgrund der Datenfülle sind alle diese gesammelten Daten nicht nur in einem Datenbank-Schema gespeichert, sondern in einzelnen, separierten Bereichen verteilt. Damit sind die Daten jeweils in sich abgeschlossen, besser wartbar und können einfacher gesichert und im Notfall auch besser restauriert werden.
Diese Applikation 'Easy Objects' ermöglicht auf grafische Weise datenbank-übergreifend die einfache Verknüpfung aller Daten und stellt eine einfache Möglichkeit bereit, diese Daten auch grafisch als z.B. Pie- oder Bar-Chart einem anderen Nutzer im Browser zur Verfügung zu stellen.
Für diese Applikation war HTML5 notwendig, da hier mittels des Canvas-Objektes wesentlich umfangreichere grafische Möglichkeiten existieren.
Da bei General Motors Fahrzeuge in aller Welt gebaut und unterstützt werden, fallen auch ebenso vielfältige Daten in den unterschiedlichsten Formaten an. Das können Daten sein, die entweder per Fileshare, per FTP, Datenbank-Direktzugriff, per eMail oder sonst wie angeliefert werden. Die Formate sind dabei ebenso vielfältig, z.B. als Plain Text, XML, proprietäre Binärformate und andere. Dazu kommt, dass bestimmte Daten nur innerhalb eines bestimmten Zeitfensters verfügbar sind.
Da die Sammlung und Verarbeitung dieser Daten zuvor weitesgehend händisch erfolgte, musste nun zuerst der aktuelle Zustand analysiert und verschiedene Arbeitsgruppen in ihrer Arbeitsweise befragt werden. Nachdem ein grober Rahmen bekannt war, welche Daten in welcher Menge zu erwarten waren sowie Prozesse herausgearbeitet wurden, in welcher Form die Daten zu verarbeiten, bereitzustellen bzw. zu präsentieren waren, wurden eizelne Applikationen definiert. Im Laufe des Projekts wurde das Entwicklerteam bis auf 5 Mitarbeiter aufgestockt. Da ich die vorhandenen Systeme von Beginn an geplant und mit aufgebaut hatte, habe ich hier neben meiner Entwicklertätigkeit auch die Einarbeitung der neuen Projektmitarbeiter übernommen sowie in enger Abstimmung mit dem Projektleiter auf Kundenseite versucht, die anstehenden Arbeiten sinnvoll zu verteilen.
Hier soll nur kurz auf die verschiedenen Applikationen im Einzelnen eingegangen werden:
Design und Implementierung einer Web-Applikation zum Sammeln von Fahrzeug-Daten
Die Applikation 'Collet Data' sollte daher in der Lage sein, automatisiert Daten einzusammeln und in die Datenbank - entweder im Rohformat oder schon (vor-)verarbeitet – abzulegen. Dazu wurde ein System geschaffen, in dem der Nutzer 'Jobs' anlegen kann, in denen er jeweils ein Skript in einer
proprietären frei erweiterbaren Skriptsprache mit Anweisungen verfassen kann, die das Einsammeln und Verarbeiten der Daten bewerkstelligen. Diese Jobs können zum einmaligem Start oder auch für feste Wiederholungen konfiguriert werden. Die Erfolgsüberwachung der Jobs wird grafisch aufbereitet angezeigt.
Design und Implementierung einer Web-Applikation zum schnellen Bereitstellen spezieller Softwarepakete für Kunden
Es gibt Situationen, in denen der Softwarestand auf den General Motors Applikationsservern, von denen sich KFZ-Werkstätten mit Fahrzeugdaten versorgen, nicht aktuell genug ist oder auch eine Softwarevariante für ein spezielles Fahrzeug so nicht verfügbar ist. In diesen Fällen werden von der Fachabteilung für dieses Fahrzeug dedizierte Softwarepakete vorbereitet.
Diese Pakete sollen von dieser Applikation 'Special-VCI' auf den GM-Applikationsservern für die sofortige Verwendung bereitgestellt werden. Außerdem ermöglicht diese Applikation einen Überblick über alle bisher bereitgestellten Pakete inklusive aller notwendigen Funktionen wie Freigabe/Sperrung von Paketen, setzen spezieller Flags oder auch das Löschen eines nicht mehr benötigten Paketes.
Design und Implementierung einer Web-Applikation zur Modul-Pflege
Angefangen mit nur einem Motor-Steuergerät haben Fahrzeuge zunehmend immer mehr Steuergeräte. Das sind Steuergeräte für z.B. das Getriebe, Multimedia oder Servolenkung etc.. Jedes dieser Steuergeräte wird mit einer Software programmiert, die wieder aus mehreren Modulen aufgebaut ist. Diese Module werden von Zeit zu Zeit aktualisiert, entweder wegen neuen Funktionen und Vorgaben oder auch zur Fehlerbereinigung. Deshalb kommen regelmäßig Lieferungen mit neuen Modulen incl. Zuordnungen, für welche Fahrzeuge und Steuergeräte diese Module gültig sind.
Die Applikation 'PDS' verwaltet hier alle diese Module mit den Versionsständen sowie den Zuordnungen zu Fahrzeugen und Steuergeräten.
Design und Implementierung einer Web-Applikation zur Fahrzeugdaten-Pflege
Die Fülle von Herstellen, Plattformen und Fahrzeugtypen im GM-Konzern ist reichhaltig und unübersichtlich. Damit die verschiedenen Applikation wissen, welchem Fahrzeug sie verarbeitete Daten zuweisen sollen, bietet diese Applikation 'Vehicle Info' gesammelte Fahrzeugdaten für die weitere Nutzung an. Hier ist z.b. hinterlegt, dass der Opel Corsa-D von 2007 bis 2012 in Eisenach und Zaragoza gebaut wurde.
Design und Implementierung einer Web-Applikation zur Fahrzeug-Konfigurations-Pflege
Zusätzlich zu den eigentlichen Fahrzeugdaten fallen auch viele Konfigurations-Daten für ein Fahrzeug an. Hier ist z.B. hinterlegt, ob das Fahrzeug mit einer Anhängerkupplung gebaut oder auch ob diese später nachgerüstet wurde. Abhängig davon ist der aktuelle Softwarestand.
Diese Applikation 'VDMS' sammelt und verarbeitet daher alle Fahrzeugdaten, wie sie ab Werk angefallen sind - d.h. der Zustand wie gebaut - sowie alle Änderungen, die ein Fahrzeug während seiner Lebenszeit erfahren hat.
Vorgefundener Zustand in der Abteilung war, dass die Arbeitsplätze der verschiedenen Mitarbeiter (Autoren, Tester, Daten-Analysten) relativ losgelöst und alleinstehend installiert und gepflegt wurden. Als gemeinsame Datenbasis sowie Austauschmedium existierten Fileserver sowie Lotus-Notes-Datenbanken.
Eine entscheidende Anforderung für das gewünschte neue System war, dass möglichst nichts auf den Client-Systemen installiert werden sollte, die Lösung sollte im Frontend 'so schlank wie möglich' sein. Deshalb entschieden wir uns für ein Internet-Browser gestütztes Design in dem möglichst alle späteren Applikation als Web-Applikationen ausgeführt und über das Intranet verteilt werden sollten.
Das Projekt wurde komplett mit der Eclipse IDE entwickelt und mit GIT versioniert. Schwerpunkt war hier für mich die Softwarearchitektur.
Es mussten alle Schichten der Applikation geplant werden, angefangen vom Frontend auf den jeweiligen Nutzer-PCs bis hin zum Backend auf den Applikations-/Datenbankservern. Im Frontend sollte der Internet Explorer unterstützt werden, damals noch in der Version 8. Die Realisierung lässt sich dabei wie folgt aufteilen:
- Frontend Internet-Explorer: Webseiten realisiert mit HTML / Javascript / jQuery
- Frontend-Library (Eigenentwicklung) mit zentraler Komponente 'jTable' zur schnellen Visualisierung von neuen Tabellen incl. Dialoge zum Neuanlegen, Editieren und Löschen von Datensätzen.
- Middleware-Library (Eigenentwicklung) mit Methoden zum schnellen Erstellen von neuen Servlets
- Backend-Library (Eigenentwicklung) mit Datenbank-Zugriffskomponenten sowie allgemeiner Utility-Sammlung
- Java-Servlets
- Oracle JDBC-Treiber
- Oracle-Datenbank
Implementiert wurden hier neben dem grundsätzlichen Design der Hauptseite hauptsächlich der Administrationsbereich mit Strukturen für die Nutzerverwaltung, Applikationsverwaltung sowie eine Rollenverwaltung zu einfachen Zuweisung von Applikationspaketen. Bestehende Java-Applikationen können nun über die Website mittels Java-Webstart angeboten werden.
Planung und Realisierung eines Filmscanners für Bewegtfilme. Schwerpunkt liegt hier auf der digitalen Bildverarbeitung
In der Abteilung 'Aftersales' gab es bis dato außer Lotus-Notes, eMail- sowie Fileservern noch keine weiteren Server, um Daten zu speichern, zu verteilen sowie die existierenden proprietären Applikationen zu verteilen. Die Idee war daher, einen zentralen Server einzurichten, der jedem Mitarbeiter automatisch die aktuellen Versionen aller von ihm benötigten Applikationen mit allen Daten zur Verfügung stellt.
Nach einiger Abwägung und Evaluierung von verfügbaren Systemen fiel die Wahl schließlich auf ein VM-Ware-Host-System, welches grundsätzlich beliebig viele virtuelle Server zu Verfügung stellen kann.
Es wurde nun zunächst ein Datenbankserver eingerichtet, bei dem wir uns für Oracle-10g-Installation entschieden haben, als Betriebssystem kam Oracle-Linux zum Einsatz.
Dem Datenbankserver wurde ein Applikationsserver zur Seite gestellt, der zunächst auf Windows Server 2008 mit einem Tomcat 6 aufgesetzt wurde.
Um die Ausfallsicherheit zu erhöhen, wurden zusätzlich noch zwei Backupserver eingerichtet, die zweite Oracle-Instanz läuft dabei als 'Physical Standby'.
Fahrzeugdaten-Pflege
Entwicklung von produktunterstützenden Tools
Weiterentwicklung und Wartung von Autorensystemen
Testen und erstellen von Test-Plänen
Aktualisieren von Zentralservern
Realisierung von Systemkomponenten zur Migration von DB-Tabellen und Daten von Oracle nach DB2
Konzept und Entwicklung einer Anwendung zum Erfassen von Lieferungen und Rechnungserstellung
1996 - 1998: Erstellung eines Warenwitschaftssystem für kleine bis mittlere Betriebe
Aufgabe
Deckt viele Funktionen ab, die man für z.B. einen kleinen Einzelhandelsbetrieb benötigt (Lagerhaltung, Faktura, Buchführung etc.).
Umgebung
Paradox / Interbase, Delphi, Windows
1997 - 1997: siehe Aus- und Weiterbildung
1997 - 1997: 3D-Visualisierung fr HMD
Aufgabe
Positionsauswertung mit Head-Tracker, Simulation eines Raumes mit sich bewegenden Gegenständen im HMD.
Umgebung
Borland C++, DOS
1996 - 1996: Speicheroszilloskop 100kHz
Aufgabe
Selbstentworfene Messschaltung, dazu ein Visualisierungs- und Auswertungs-Programm.
Umgebung
Borland C++, Windows 95
1996 - 1996: TimeKey - Ein Zeiterfassungssystem
Aufgabe
Datenbankanwendung, Unabhängige Terminals über Feldbus verbunden,.
Umgebung
Borland C++, Windows 95, CAN-Bus
1992 - 1992: Zeiterfassungssystem
Aufgabe
Umgebung
Pascal, DOS
2021
Spring-/Boot-Schulung bei tutego/Christian Ullenboom
2020
Scrum-Kurs bei der DVAG
2000-2019
Autodidaktische Einarbeitung in aktuelle Techniken und Methoden
1998
Studium Ingenieurinformatik
Abschluss Diplom-Ingenieur-Informatiker (FH)
1992
Abgeschlossenes Fachabitur
Elektrotechnik
1991
Abgeschlossene Lehre
Büroinformationselektroniker
Schule bis Klasse 11
Full-Stack-Entwickler
Teilprojekt-Leitung
Methoden / Standards / Erfahrungen
"Während seiner Tätigkeit in unserem Unternehmen zeigte der Consultant stets Initiative und Eifer. Zudem führte er seine Aufgaben selbständig mit Umsicht und Engagement stets zu unserer vollsten Zufriedenheit aus. Des weiteren können wir sagen, dass wir ihn als einen zielstrebigen, fleißigen und gewissenhaften Mitarbeiter kennen. Daneben war der Consultant ein ausdauernder und sehr belastbarer Mitarbeiter. Er war vertrauenswürdig und stets bereit, Verantwortung zu übernehmen. Sein Verhalten gegenüber Kollegen und Vorgesetzten war stets einwandfrei. Er hat seine Kollegen mit seinem Fachwissen sehr gut unterstützt. Mit Beendigung der Teilprojekte, in denen der Consultant eingesetzt war, verlässt er uns zum 30.06.2000. Wir danken ihm für seine Tätigkeit und würden uns sehr freuen, wenn er uns in Zukunft noch einmal in einem weiteren Projekt unterstützen könnte."
— Projekt Entwicklungsaufgaben unter Windows/AIX mit Delphi, C (mit embedded SQL) und C++, 09/98 - 06/00
Referenz durch Projektleiter einer Unternehmensberatung mit ca. 40 Ma. vom 27.06.00