06.10.2025 aktualisiert


teilweise verfügbar
Software-Architekt & -Entwickler: C++, REST, MQTT, IIoT
Trossingen, Deutschland
Deutschland +1
Dipl.-Mathematiker (FH)info: Deutschland, Schweiz
Skills
HTMLJavaJavaScript.Net FrameworkPHPAPIsAgile MethodologieAndroid StudioArchitekturAtlassian ConfluenceAtlassian JiraAuditsAutomatisierungUnit TestingAutomobilindustrie
Fachlicher Schwerpunkt
Software-Architekt & -Entwickler, Mathematiker, Schwerpunkt C++ (98/11/14/17/20/23), Coach/Trainer
Key-Skills
Mathematiker/Spezialist für C++ (98/11/14/17/20/23). Reiche Erfahrung in der Architektur von Systemen auf der "Grünen Wiese" (u.a. Microservice-Architektur, monolithische Anwendungen) gesammelt. Außerdem ist besonderer Erfahrungsschatz in der Erweiterung, im nachhaltigen Refactoring und in der Restrukturierung von großen, gewachsenen Projekten (Umfang von 20-100+ Personenjahren) vorhanden. In diesem Umfeld ist auch die Fähigkeit zur schnellen Orientierung in "fremdem" Code gereift.
Training/Coaching
Zu folgenden Themen wurden bereits Trainings/Workshops durchgeführt:
- Visual Studio (2010) für C++-Entwickler
- Debugging mit Visual Studio
Dozent für C++ an der DHBW Stuttgart, Campus Horb März 2015 - Dezember 2016
Technische Skills
Programmiersprachen
- C++ (98/11/14/17/20)
- Java
- C#
- C
- Delphi
- Python
- Pascal
- Basic
- NC-Programmierung/G-Code
- PostScript
- JavaScript
- Perl
- PHP
- Kotlin
- Linux-Shell (u.a. sh, bash, ash)
Bibliotheken/Frameworks/APIs
- STL
- Boost
- libcurl
- BlueZ
- Qt 4, Qt 5
- MFC
- VCL
- WinAPI
- .NET 3.0, 3.5, 4.0
- WCF
- nHibernate
- OpenGL
- WPF
- Grit 2.6
- Segger emFile, emUSB, embOS
- LibMPSSE
- Linux/Unix Programming Interface
- rapidjson
- CUDA
- paho.mqtt.c
- Mosquitto
- CivetWeb
- gstreamer
Dokumentbeschreibungssprachen
- XML
- (X)HTML & CSS
- JSON
Datenbanken
- MySQL
- MS SQL Server
- SQL
- Access
- BDE
- ODBC
- Sybase (SQL Anywhere)
- MySQL Workbench
- SQLite
- ORM nHibernate
- OTL 4.0
Protokolle
- HTTP
- HTTPS
- TLS
- MQTT
- D-Bus
- RTSP
- RTP
- TCP/IP
- UDP
- Bluetooth/Bluetooth LE (BLE)
- GATT
Methodiken
- REST
- Microservices
- IoT
- UML2
- Objektorientierte Analyse (OOA)
- Objektorientiertes Design (OOD)
- Objektorientierte Programmierung (OOP)
- Methoden der agilen Entwicklung (XP, Scrum)
Tools
IDEs
- Microsoft Visual Studio 6/2003/2005/2008/2010/2012/2013/2015/2017
- Eclipse & Eclipse CDT
- IDEA IntelliJ
- Android Studio
- Visual Studio Code
- IAR Embedded Workbench (6.x)
- Borland C++ Builder 4/5
- Borland Delphi 5/7
- Borland C++
- Turbo Pascal
- Sourcery CodeBench Lite
Build & Compiler
- make/nmake
- SCons
- CMake
- MSBuild
- gcc
- clang
Revision Control Systeme
- git
- Subversion (svn)
- Visual Source Safe 6.0 (VSS)
- Perforce
- PVCS
Unit tests
- Boost.Test
- googletest
- Microsoft UnitTest-Framework
- NUnit
- JUnit
Sonstige
- BugZilla
- Jira
- Docker
- Team Foundation Server
- Altova XML Spy
- Visual Paradigm
- SparxSystems Enterprise Architect
- Code Smith
- T4 text templates
- Confluence
- valgrind
- Tera Term
- putty
- Postman
- mqtt-spy
- curl
- Maple
- VLC
- PhonerLite
Branchen
- Maschinenbau
- Sondermaschinenbau
- Anlagenbau
- Robotersteuerung
- Automatisierungstechnik
- Softwarehersteller
- Automotive
- Autobranche
- Unterhaltungselektronik
- Kommunikation
Ausbildung
03/1998 – 02/2003
Fachhochschule Stuttgart – Hochschule für Technik
Studium Mathematik
Abschluss als Dipl.-Math. (FH)
Erfahrung
Berufserfahrungmehr als 10 Jahre
Freelancer seit2009
Sprachen
DeutschMutterspracheEnglischverhandlungssicherFranzösischGrundkenntnisse
Projekthistorie
Beschreibung:
Für ein Gebäudekommunikationssystem wurde für ein Gateway, das zur Anbindung des proprietären Kommunikationssystems an IPbasierte
Netzwerke dient, ein Software-Modul entwickelt, das für die Verteilung und Überwachung von Kommunikations-, Benutzer- und
Systemanforderungen zuständig ist (z.B. Rufe, Video, Konfiguration).
Im Fokus standen hierbei die Skalierbarkeit (Parallelisierung, Multithreading: bei Einsatz auf leistungsfähigerer Hardware sollte diese
auch genutzt werden können), Stabilität, Testbarkeit und Wartbarkeit der Software.
Hauptaufgaben waren die Vorgabe der Server-Architektur, die Entwicklung von zentralen Komponenten des Servers, die Vorgabe der
Architektur für die plattformunabhängige Client-Bibliothek, die Vorgabe der Teststrategie und der Testbibliothek, das Coaching des
Teams in C++ (insbesondere C++11/C++14) und die Durchführung von Code-Reviews (dabei war insbesondere die Identifizierung von
Potential zur Verbesserung der Code-Qualität und die Vorgabe von Maßnahmen dieses auszuschöpfen wichtig).
Eine große Teilaufgabe lag in der effizienten Verteilung von Videoströmen über Netzwerke. Ebenso wurde die Anbindung an eine MySQLDatenbank
realisiert.
Weiterhin wurde ein Systemtest-Framework aufgesetzt. Dieses führt automatisiert Testfälle durch, indem es das System initialisiert und
dann die Test-Scripts (Python) auf einen oder mehrere Test-Clients verteilt. Weiterhin synchronisiert es die Clients und sammelt die
Testergebnisse ein.
Das System hat eine REST Schnittstelle erhalten. Für diese habe ich den kompletten Software-Stack auf Server- und Client-Seite
entworfen und federführend implementiert (HTTP-Server, Anbindung an C++-Applikation, Ressourcen-Mapping und Anbindung an
Systemkern, Übersetzung von Transportformat in native Datentypen und zurück, HTTP-Requests). Zum Kommunikations-Layer wurde
ebenso ein MQTT-basiertes Message-System hinzugefügt. Die Anbindung wurde mit paho.mqtt.c entwickelt. Auf der Server-Seite wird
Mosquitto verwendet. Die API wird mit OpenAPI 3.0 definiert. Es wurde ein Generator für Java-Client-Code zum Aufruf der API entwickelt.
Der Generator benutzt die API-Spezifikation als Eingabe. Der generierte Code wird unter anderem auch für REST API-Tests verwendet.
Damit basiert die Kommunikationsschicht auf einem modernen IoT-Technologiestack.
Ein weiterer Aufgabenbereich lag in der Vorgabe der Architektur und der Mitentwicklung von diversen Clients (Windows-Client,
Innensprechstelle, Tür).
Die Bereitstellung eines robusten Update-Mechanismus für Embedded Geräte, inklusiver der kompletten Logik, wurde auch
implementiert. Hier war es wichtig, dass die Geräte auch im Fehlerfall funktionsfähig bleiben. Deswegen wurde auch diverse Recovery-
Mechanismen eingebaut (Fallback auf vorherige Firmware, Recovery-Modus).
In einem weiteren Evolutionsschritt wurde die monolithische Systemarchitektur auf eine Microservice-Architektur umgestellt. Diese
Umstellung habe ich koordiniert und architektonisch gestaltet.
Nun folgte die Implementierung der Anbindung an einen cloud-basierten Kommunikationsdienst, der zur Ruf- und Videoverteilung an
Apps über das Internet dient.
Als nächstes folgte die Erstellung der Software für eine neue Innenstation. Die Anbindung der Innenstation, die via WLAN ans lokale Netz angeschlossen wird, an den Cloud-Dienst, wurde ebenso umgesetzt. Die Inbetriebnahme des Geräts erfolgt über Bluetooth Low Energy (Bluetooth LE, BLE) und einer GATT-API. Hierfür wurde zum einen auf Geräteseite BlueZ eingesetzt (D-Bus API, Management API) und zum anderen eine Android Test-App unter Android Studio mit Kotlin entwickelt. Wichtiger Fokus war eine sichere Inbetriebnahme mit zusätzlicher interner Verschlüsselung auf GATT-Ebene.
Ein weiteres Projekt war die Entwicklung einer IP-Innenstation, die es in 2 Varianten gibt (mit und ohne Bildschirm). Die Oberflächen wurde mit Qt 5 erstellt. In der Business-Logik war die freikonfigurierbare I/O-Logik ein Highlight. Die Anbindung an den Server erfolgte via DHCP, TFTP, REST und MQTT.
Für die nächste Server Generation wurde ein Prototyp erstellt, in welchem die Microservices in Docker-Containern laufen. Ebenso wurden hierfür RTSP-Server. und -Client-Komponenten entwickelt.
Projektmetrik:
Laufzeit: >5 Jahre
Umfang: >50 Personenjahre
Position: Consultant, Architekt & Entwickler
Teamgröße: 10+
Technologien:
Sprachen
- C++ (C++11, C++14, C++17)
- C
- Java
- Python
- Kotlin
- SQL
- Linux-Shell
Bibliotheken/Frameworks/API
- STL/C++-Standardbibliothek
- googletest
- Linux Programming Interface
- Boost
- rapidjson
- libcurl
- OTL
- paho.mqtt.c
- Mosquitto
- BlueZ
- CivetWeb
- gstreamer
Tools
- Eclipse CDT
- Visual Studio 2015
- IDEA IntelliJ
- MySQL Workbench
- Subversion
- git
- Bitbucket
- valgrind
- Tera Term
- putty
- Confluence
- Jira
- Postman
- mqtt-spy
- PhonerLite
- VLC
- curl
- Docker
Sonstiges
- SCons
- gcc
- gdb (Debugging und Remote Debugging)
- Clang
- PTXdist
Besonderheiten
- Multithreading
- Netzwerk (TCP/IP, UDP, Sockets)
- RTP
- RTSP
- H.264, MJPEG
- REST
- TLS
- HTTP, HTTPS
- MQTT
- Scrum
- IoT/IIoT
- JSON
- Bluetooth/Bluetooth LE, GATT
- Microservices
- D-Bus
- WLAN
- TFTP
Plattform
- Zielplattform: Embedded Linux. Windows (für Client-Software)
- Entwicklungsplattform: Debian Linux, Fedora Linux, Windows (für Client-Software)
Für ein Gebäudekommunikationssystem wurde für ein Gateway, das zur Anbindung des proprietären Kommunikationssystems an IPbasierte
Netzwerke dient, ein Software-Modul entwickelt, das für die Verteilung und Überwachung von Kommunikations-, Benutzer- und
Systemanforderungen zuständig ist (z.B. Rufe, Video, Konfiguration).
Im Fokus standen hierbei die Skalierbarkeit (Parallelisierung, Multithreading: bei Einsatz auf leistungsfähigerer Hardware sollte diese
auch genutzt werden können), Stabilität, Testbarkeit und Wartbarkeit der Software.
Hauptaufgaben waren die Vorgabe der Server-Architektur, die Entwicklung von zentralen Komponenten des Servers, die Vorgabe der
Architektur für die plattformunabhängige Client-Bibliothek, die Vorgabe der Teststrategie und der Testbibliothek, das Coaching des
Teams in C++ (insbesondere C++11/C++14) und die Durchführung von Code-Reviews (dabei war insbesondere die Identifizierung von
Potential zur Verbesserung der Code-Qualität und die Vorgabe von Maßnahmen dieses auszuschöpfen wichtig).
Eine große Teilaufgabe lag in der effizienten Verteilung von Videoströmen über Netzwerke. Ebenso wurde die Anbindung an eine MySQLDatenbank
realisiert.
Weiterhin wurde ein Systemtest-Framework aufgesetzt. Dieses führt automatisiert Testfälle durch, indem es das System initialisiert und
dann die Test-Scripts (Python) auf einen oder mehrere Test-Clients verteilt. Weiterhin synchronisiert es die Clients und sammelt die
Testergebnisse ein.
Das System hat eine REST Schnittstelle erhalten. Für diese habe ich den kompletten Software-Stack auf Server- und Client-Seite
entworfen und federführend implementiert (HTTP-Server, Anbindung an C++-Applikation, Ressourcen-Mapping und Anbindung an
Systemkern, Übersetzung von Transportformat in native Datentypen und zurück, HTTP-Requests). Zum Kommunikations-Layer wurde
ebenso ein MQTT-basiertes Message-System hinzugefügt. Die Anbindung wurde mit paho.mqtt.c entwickelt. Auf der Server-Seite wird
Mosquitto verwendet. Die API wird mit OpenAPI 3.0 definiert. Es wurde ein Generator für Java-Client-Code zum Aufruf der API entwickelt.
Der Generator benutzt die API-Spezifikation als Eingabe. Der generierte Code wird unter anderem auch für REST API-Tests verwendet.
Damit basiert die Kommunikationsschicht auf einem modernen IoT-Technologiestack.
Ein weiterer Aufgabenbereich lag in der Vorgabe der Architektur und der Mitentwicklung von diversen Clients (Windows-Client,
Innensprechstelle, Tür).
Die Bereitstellung eines robusten Update-Mechanismus für Embedded Geräte, inklusiver der kompletten Logik, wurde auch
implementiert. Hier war es wichtig, dass die Geräte auch im Fehlerfall funktionsfähig bleiben. Deswegen wurde auch diverse Recovery-
Mechanismen eingebaut (Fallback auf vorherige Firmware, Recovery-Modus).
In einem weiteren Evolutionsschritt wurde die monolithische Systemarchitektur auf eine Microservice-Architektur umgestellt. Diese
Umstellung habe ich koordiniert und architektonisch gestaltet.
Nun folgte die Implementierung der Anbindung an einen cloud-basierten Kommunikationsdienst, der zur Ruf- und Videoverteilung an
Apps über das Internet dient.
Als nächstes folgte die Erstellung der Software für eine neue Innenstation. Die Anbindung der Innenstation, die via WLAN ans lokale Netz angeschlossen wird, an den Cloud-Dienst, wurde ebenso umgesetzt. Die Inbetriebnahme des Geräts erfolgt über Bluetooth Low Energy (Bluetooth LE, BLE) und einer GATT-API. Hierfür wurde zum einen auf Geräteseite BlueZ eingesetzt (D-Bus API, Management API) und zum anderen eine Android Test-App unter Android Studio mit Kotlin entwickelt. Wichtiger Fokus war eine sichere Inbetriebnahme mit zusätzlicher interner Verschlüsselung auf GATT-Ebene.
Ein weiteres Projekt war die Entwicklung einer IP-Innenstation, die es in 2 Varianten gibt (mit und ohne Bildschirm). Die Oberflächen wurde mit Qt 5 erstellt. In der Business-Logik war die freikonfigurierbare I/O-Logik ein Highlight. Die Anbindung an den Server erfolgte via DHCP, TFTP, REST und MQTT.
Für die nächste Server Generation wurde ein Prototyp erstellt, in welchem die Microservices in Docker-Containern laufen. Ebenso wurden hierfür RTSP-Server. und -Client-Komponenten entwickelt.
Projektmetrik:
Laufzeit: >5 Jahre
Umfang: >50 Personenjahre
Position: Consultant, Architekt & Entwickler
Teamgröße: 10+
Technologien:
Sprachen
- C++ (C++11, C++14, C++17)
- C
- Java
- Python
- Kotlin
- SQL
- Linux-Shell
Bibliotheken/Frameworks/API
- STL/C++-Standardbibliothek
- googletest
- Linux Programming Interface
- Boost
- rapidjson
- libcurl
- OTL
- paho.mqtt.c
- Mosquitto
- BlueZ
- CivetWeb
- gstreamer
Tools
- Eclipse CDT
- Visual Studio 2015
- IDEA IntelliJ
- MySQL Workbench
- Subversion
- git
- Bitbucket
- valgrind
- Tera Term
- putty
- Confluence
- Jira
- Postman
- mqtt-spy
- PhonerLite
- VLC
- curl
- Docker
Sonstiges
- SCons
- gcc
- gdb (Debugging und Remote Debugging)
- Clang
- PTXdist
Besonderheiten
- Multithreading
- Netzwerk (TCP/IP, UDP, Sockets)
- RTP
- RTSP
- H.264, MJPEG
- REST
- TLS
- HTTP, HTTPS
- MQTT
- Scrum
- IoT/IIoT
- JSON
- Bluetooth/Bluetooth LE, GATT
- Microservices
- D-Bus
- WLAN
- TFTP
Plattform
- Zielplattform: Embedded Linux. Windows (für Client-Software)
- Entwicklungsplattform: Debian Linux, Fedora Linux, Windows (für Client-Software)
Beschreibung:
Auf Anfrage
Projektmetrik:
Laufzeit: 26 Monate
Umfang: 10 Personenjahre
Position: Entwickler & Consultant
Teamgröße: 4
Technologien:
Sprachen
- C
- C++
Bibliotheken/Frameworks/APIs
- Segger emFile, emUSB, embOS, emWin
- STL
- Boost, Boost.Test
- DirectC
- LibMPSSE
- TinyXML
Tools
- IAR Embedded Workbench 6.4, 6.5
- Visual Studio 2010/2013
- Sourcery CodeBench Lite
- Hercules
- Jira
- Subversion
- Doxygen
- Cppcheck
- Uncrustify
Sonstiges
- Segger J-Link
Besonderheiten
- ISO/IEC 62304
- EN/IEC 60601
Plattform
- Zielplattform: ARM 9 und ARM Cortex-M3, teilweise ohne Betriebssystem, teilweise mit embOS
- Entwicklungsplattform: Windows 7, Ubuntu Linux 12.04
Auf Anfrage
Projektmetrik:
Laufzeit: 26 Monate
Umfang: 10 Personenjahre
Position: Entwickler & Consultant
Teamgröße: 4
Technologien:
Sprachen
- C
- C++
Bibliotheken/Frameworks/APIs
- Segger emFile, emUSB, embOS, emWin
- STL
- Boost, Boost.Test
- DirectC
- LibMPSSE
- TinyXML
Tools
- IAR Embedded Workbench 6.4, 6.5
- Visual Studio 2010/2013
- Sourcery CodeBench Lite
- Hercules
- Jira
- Subversion
- Doxygen
- Cppcheck
- Uncrustify
Sonstiges
- Segger J-Link
Besonderheiten
- ISO/IEC 62304
- EN/IEC 60601
Plattform
- Zielplattform: ARM 9 und ARM Cortex-M3, teilweise ohne Betriebssystem, teilweise mit embOS
- Entwicklungsplattform: Windows 7, Ubuntu Linux 12.04
Beschreibung:
An einem grafischen Programmiersystem für Stanz- und Lasermaschinen mussten laufend Wartungsarbeiten und Weiterentwicklung
betrieben werden. Dabei lag mein Schwerpunkt fachlich im Bereich Werkzeuge und Technologien, technisch im Bereich Algorithmen,
Datenbanken und Oberflächen.
Eine große Aufgabe war die Konsolidierung der Anbindung eines Systems mittels WCF, eine andere die Entwicklung und
Implementierung eines komplexen Algorithmus zum Einsatz von Rollenwerkzeugen. Weiterhin war ich für diverse Themen im Gebiet
Werkzeuge und NC-Code-Generierung verantwortlich.
Ebenso habe ich andere Entwickler laufend bei Refactoring- und Debugging-Aufgaben unterstützt.
Außerdem habe ich bei der Einarbeitung und Förderung junger Entwickler (zumeist Universitäts-Absolventen im Fach Informatik) Wissen
und Praxiserfahrung übertragen und saubere Vorgehensweisen und Anti-Patterns an einem realen System erläutert. Dabei habe ich auch
meinen tiefen Kenntnisse im Bereich C++ weitergegeben und für eine steile Lernkurve bei den Entwicklern gesorgt.
Als Vorgehensmodell in der Entwicklung wurde hier Scrum eingesetzt.
Projektmetrik:
Laufzeit: 42 Monate
Umfang: > 100 Personenjahre
Position: Entwickler & Consultant
Teamgröße: 15
Technologien:
Sprachen:
- C++
- C#
Bibliotheken/Frameworks/APIs:
- STL
- Boost
- Grit 2.6
- Qt
- ODBC
- .Net 4.0
- WCF
Datenbanken:
- Microsoft SQL Server 2005 & 2008
- Microsoft Access
Tools:
- Visual Studio 2005 & 2010
- Perforce
- PVCS
- SparxSystems Enterprise Architect
- make
- Jira
- Code Smith
Sonstiges:
- NC-Programmierung/-Generierung, G-Code
- make
- cygwin
- yacc/lex
Besonderheiten:
- sehr großes, über 2 Jahrzehnte gewachsenes System
- Mischung von unmanaged und managed Code (C++, managed C++, C#)
- Verwendung/Entwicklung von Asynchronous State Machines (ASM)
Plattform:
- Windows XP, Vista, 7
An einem grafischen Programmiersystem für Stanz- und Lasermaschinen mussten laufend Wartungsarbeiten und Weiterentwicklung
betrieben werden. Dabei lag mein Schwerpunkt fachlich im Bereich Werkzeuge und Technologien, technisch im Bereich Algorithmen,
Datenbanken und Oberflächen.
Eine große Aufgabe war die Konsolidierung der Anbindung eines Systems mittels WCF, eine andere die Entwicklung und
Implementierung eines komplexen Algorithmus zum Einsatz von Rollenwerkzeugen. Weiterhin war ich für diverse Themen im Gebiet
Werkzeuge und NC-Code-Generierung verantwortlich.
Ebenso habe ich andere Entwickler laufend bei Refactoring- und Debugging-Aufgaben unterstützt.
Außerdem habe ich bei der Einarbeitung und Förderung junger Entwickler (zumeist Universitäts-Absolventen im Fach Informatik) Wissen
und Praxiserfahrung übertragen und saubere Vorgehensweisen und Anti-Patterns an einem realen System erläutert. Dabei habe ich auch
meinen tiefen Kenntnisse im Bereich C++ weitergegeben und für eine steile Lernkurve bei den Entwicklern gesorgt.
Als Vorgehensmodell in der Entwicklung wurde hier Scrum eingesetzt.
Projektmetrik:
Laufzeit: 42 Monate
Umfang: > 100 Personenjahre
Position: Entwickler & Consultant
Teamgröße: 15
Technologien:
Sprachen:
- C++
- C#
Bibliotheken/Frameworks/APIs:
- STL
- Boost
- Grit 2.6
- Qt
- ODBC
- .Net 4.0
- WCF
Datenbanken:
- Microsoft SQL Server 2005 & 2008
- Microsoft Access
Tools:
- Visual Studio 2005 & 2010
- Perforce
- PVCS
- SparxSystems Enterprise Architect
- make
- Jira
- Code Smith
Sonstiges:
- NC-Programmierung/-Generierung, G-Code
- make
- cygwin
- yacc/lex
Besonderheiten:
- sehr großes, über 2 Jahrzehnte gewachsenes System
- Mischung von unmanaged und managed Code (C++, managed C++, C#)
- Verwendung/Entwicklung von Asynchronous State Machines (ASM)
Plattform:
- Windows XP, Vista, 7