Softwareentwickler und -architekt, IoT-Sicherheit, Test, Open Source, C++, OOP, OOAD
Aktualisiert am 17.10.2023
Profil
Referenzen (1)
Freiberufler / Selbstständiger
Remote-Arbeit
Verfügbar ab: 01.01.2024
Verfügbar zu: 100%
davon vor Ort: 100%
C++
Softwareengineering
IoT-Sicherheit
Softwarearchitektur
Softwareentwicklung
Technische Anwendungen
Open Source
Design Patterns
OOAD
OOP
Computer Vision
Robotik
Embedded System
Client/Server-Architektur
Requirements-Management
Test-Management
Unit Test
Sicherheitstest
C++-Standardbibliothek
Boost
Linux
Multithreading
Debuggen
Englisch
sehr gut

Einsatzorte

Einsatzorte

Deutschland, Österreich, Schweiz

Deutschland: außerhalb D6, D7: Vor-Ort-Einsatz < 100%

Weitere Länder: Vor-Ort-Einsatz max. 50%

möglich

Projekte

Projekte

3 Monate
2023-01 - 2023-03

OP-TEE-Portierung

Softwareentwickler C++ C Assembler ...
Softwareentwickler
Portierung des OP-TEE-Frameworks (Open Portable Trusted Execution Environment) auf den Raspberry Pi 4 als Weiterbildungsprojekt. Anschließend wurde auch ein TLS-Client als Trusted Application erstellt.
Tätigkeiten: Analyse des Assembler-Codes von Bootloader und OP-TEE-OS-Eintrittspunkt, Anpassung und Erweiterung der bereits vorhandenen Raspberry Pi 3-Portierungen von OP-TEE-OS und ARM Trusted Firmware in C, Erstellung des Linux-Kernels mit OP-TEE-Treiber sowie des Root-FS mit OP-TEE-Client-Package (TEE-Supplicant) sowohl mittels Buildroot als auch Yocto, Verwendung der Toolchains AARCH64/Bare Metal, Programmierung der Ausgabe über UART, Setup zum Booten via TFTP mit Dnsmasq, JTAG-Hardware-Debugging mit dem Adapter Adafruit FT232H und dem Debugger OpenOCD, Konfiguration der Bibliothek Mbed TLS um TLS in einer Trusted Application (TA) verwenden zu können, Implementierung einer TLS-Client-TA in C++, Erstellung eines Tests der Sicherheit einer OP-TEE-Installation

OP-TEE ARM Trusted Firmware Embedded Linux Yocto Buildroot Dnsmasq Adafruit FT232H OpenOCD Mbed TLS Raspberry Pi 4
C++ C Assembler AARCH64 Bare Metal UART TFTP JTAG-Debugging
5 Monate
2022-05 - 2022-09

Embedded System Upgrade

Softwareentwickler C++ Open Source Embedded System ...
Softwareentwickler

Erweiterung der Software von Geräten zur Energieverteilung um E-Mail-Transportverschlüsselung und Anmeldeverzögerung bei einem Premiumanbieter von Elektrotechnik. Die Geräte laufen unter Embedded Linux. 

Tätigkeiten: Ermittlung der Anforderungen zum E-Mail-Versand mit Transport Layer Security (TLS)-Verschlüsselung, Erstellung und Abstimmung des Umsetzungskonzepts mit dem Produkt-Management, Bewertung möglicher Open Source-Pakete, Auswahl und Integration des SMTP-Clients msmtp, Implementierung eines SMTP-Client-Wrappes in C++, der den SMTP-Client in einem separaten Prozess ausführt; Verwendung von TLS und StartTLS jeweils in Abhängigkeit von der konfigurierten Portnummer, Installation der benötigten Herausgeber- und Root-Zertifikate, geschützte Übergabe des SMTP-Passworts an den SMTP-Client über temporäre Pipe, Tests mit den wichtigsten öffentlichen SMTP-Servern, Erstellung von Unit-Tests mit Boost.Test, Analyse des vorhandenen Sourcecodes der Gerätesoftware und Ermittlung, wie sich eine Anmeldeverzögerung (Login-Delay) realisieren lässt, das heißt eine temporäre Sperre des Benutzerzugangs nach mehrmaliger Falscheingabe des Passworts unter Berücksichtigung der Zugangsarten Web, SSH und SNMP; Konfiguration der Pluggable Authentication Modules (Linux PAM) mit dem Modul pam_faillock.so, Anpassung der Webanwendung in C++ und JavaScript, um dem Benutzer bei Authentifizierungsfehler entsprechende Meldungen anzuzeigen; Ergänzung des Loggings bei Login-Fehlversuchen und -Sperren, Erweiterung der Anwendungsmodule in C++, um die Login-Delay-Konfiguration zu ändern und zu speichern; Erstellung eines neuen Kommandos, das zwischen diesen Modulen über den D-Bus ausgetauscht wird, einschließlich Code-Generierung mit dem Tool gdbus-codegen; Erweiterung der D-Bus- und SQLite-Schnittstellen in der Anwendung um boolschen Datentyp, Versionsverwaltung mit Git und Bitbucket, Ticketverwaltung mit Jira 

Linux Embedded Linux Buildroot ARM Toolchain GCC CMake msmtp Linux PAM pam_faillock log4cpp D-Bus SQLite Boost.Test Git Bitbucket Jira Jenkins Confluence OpenVPN MS-Teams
C++ Open Source Embedded System IT-Sicherheit TLS StartTLS X.509 SMTP Authentifizierung SSH SNMP JavaScript JSON Logging Interprozesskommunikation Unit Test
Home Office
3 Monate
2022-01 - 2022-03

Embedded Linux-Sicherheitsupdate

Softwareentwickler Common Vulnerabilities and Exposures (CVE) Open Source Embedded System ...
Softwareentwickler

Analyse und Aktualisierung der Geräte- und Build-Software bei einem Premiumanbieter von Elektrotechnik. Ziel war die weitere Gewährleistung der IT-Sicherheit von im Einsatz befindlichen Geräten zur Energieverteilung.

Tätigkeiten: Abfrage der Common Vulnerabilities and Exposures (CVE) der verwendeten Open Source-Pakete von der National Vulnerability Database (NVD) mittels Python-Skript, Analyse einzelner CVEs und Einschätzung des jeweiligen Sicherheitsrisikos im Endprodukt, Entwicklung und Vergleich von Konzepten zur Schwachstellenbeseitigung, Aktualisierung des Werkzeugs Buildroot, mit dem ein Embedded Linux-System erstellt wird, einschließlich der enthaltenen Pakete; Beseitigung verbliebener Schwachstellen durch Hinzufügen von Patch-Dateien, Anpassung der Bash-Skripte, mit denen ein Update-Paket erstellt und auf dem Target installiert wird; Verwendung der MTD- und UBI-Tools, um auf Partitionen zuzugreifen, die auf Raw Flash Devices liegen; Anpassung der voreingestellten SSH-Konfiguration auf dem Gerät, um SSH-Verbindungen ohne den mittlerweile unsicheren Secure Hash Algorithm SHA-1 zu ermöglichen (z. B. mit WinSCP); Update auf neue Versionen der Cross-Compiler-Toolchains für ARM Microchip SoCs (zum Teil Bare Metal) und des Build-Tools CMake einschließlich entsprechender Anpassungen der Projektdateien, Erstellung einer Native-Compiler-Toolchain durch Bauen des GCC-8 aus den Quellen, System-Update des Jenkins-Buildservers, Erstellung eines Skripts zur Prüfung, ob der öffentliche Schlüssel in einem X.509-Zertifikat mit einem gegebenen privaten Schlüssel korrespondiert; Konfiguration des Webservers lighttpd für HTTPS, Versionsverwaltung mit Bitbucket, Ticketverwaltung mit Jira

Linux Embedded Linux Buildroot BusyBox ARM Toolchain CMake GCC Python Bash OpenVPN Git Bitbucket Jira Jenkins Confluence Debian OpenSSL lighttpd OpenSSH WinSCP MS-Teams
Common Vulnerabilities and Exposures (CVE) Open Source Embedded System IT-Sicherheit IoT-Sicherheit Schwachstellen-Analyse X.509 HTTPS SSH JSON REST Service MTD UBI Patch C
Stuttgart, Home Office
8 Monate
2021-03 - 2021-10

3D-Bildverarbeitung

Softwareentwickler LiDAR-Kamera Bildverarbeitung 2D/3D geometrische Kalibrierung ...
Softwareentwickler

Entwicklung der Detektion von Treppenstufen zur Bewegungsplanung für mobile Roboter unter Verwendung einer LiDAR-Tiefenbildkamera. Das Projekt ist komplett Open Source.

Tätigkeiten: Entwicklung einer Methode zur geometrischen Kalibrierung der Kamera und Erstellung des entsprechenden Programms, Verwendung des Intel RealSense SDK zu Kamerasteuerung, Bild-/Punktwolkeneinzug und Projektion/Deprojektion einzelner Punkte; Implementierung der Koordinatentransformation mit Boost QVM und der weiteren Verarbeitung von 3D-Punktwolken in C++20, Segmentierung von konventionellen 2D-Bildern mit OpenCV, Visualisierung mittels OpenGL, Erstellung eines Wrappers in Python als Robot Operating System (ROS)-Komponente, Analyse eines Quirks des USB3-Controllers ASM1042 durch Debugging und Tracing des Linux-Kernels, Entwicklung eines Workarounds in Form eines Patches für den xHCI-Treiber im Kernel

Intel RealSense SDK L515 ROS Boost QVM OpenCV OpenGL GCC GDB Eclipse CMake Linux Kernel KGDB ASM1042
LiDAR-Kamera Bildverarbeitung 2D/3D geometrische Kalibrierung Koordinatentransformation Robotik C++20 Python Kernel-Debugging Kernel-Tracing USB3 xHCI Patch Kernel-Treiber
Home Office
9 Monate
2019-03 - 2019-11

Connectivity-Modul

Softwareentwickler IoT-Sicherheit IT-Sicherheit Netzwerk-Sicherheit ...
Softwareentwickler

Entwicklung der Konnektivitäts-Software für eine neue Gerätegeneration bei einem Medizintechnikhersteller. Das Connectivity-Modul dient dem Datenaustausch der Geräte mit der Umgebung, auch über das Internet. Der Fokus lag bei dem Projekt auf der IT-Sicherheit.

Tätigkeiten: Entwurf und Implementierung der Hauptanwendung für das Embedded System, Programmierung in C++17, Verwendung der Bibliothek Boost und der Werkzeuge GCC und CMake, Programmerstellung auf einer Workstation unter Linux Ubuntu für das Target (Toradex Colibri) unter Embedded Linux / Yocto, Konfiguration der Dienste auf dem Target mit systemd, Debuggen auf dem Target mit GDB, Konzepterstellung und Umsetzung der Serveranbindung des Gerätes über das Internet unter Beachtung der besonderen Anforderungen an die IT-Sicherheit, Implementierung des sicheren Datenaustauschs für Logfiles, Software-Updates usw. basierend auf Verschlüsselung und digitalen Signaturen, Realisierung einer gesicherten Verbindung über das Protokoll TLS mit gegenseitiger Authentifizierung unter Verwendung von X.509-Zertifikaten, Verwendung der OpenSSH- und OpenSSL-Tools sowie Anbindung der OpenSSL-Bibliothek, Absicherung des Systems mit den Programmen Fail2ban und iptables, Erstellung von entsprechenden Tests der Netzwerk-Sicherheit, Definition und Umsetzung spezieller Protokolle für die Kommunikation über serielle Ports und TCP-Sockets mittels Boost.Asio, Implementierung von Multithreading mit der C++11-Thread-Bibliothek, Erstellung eines Datenbankadapters zur Speicherung von Gerätedaten und -ereignissen in einer SQLite-Datenbank, Implementierung von State Machines und Puffern, Entwicklung von Unit-Tests mit Boost.Test, Erstellung von Modul- und Hardware-Tests sowie einer Teststeuerung mit Umgebungssimulation, Requirements- und Test-Management unter Beachtung der Medizingeräte-Software-Norm IEC 62304 mit dem Werkzeug Polarion, Erweiterung der Softwarearchitektur mit Enterprise Architect, Verwendung der Werkzeuge Eclipse (Papyrus), Doxygen, PuTTY, WinSCP; Installation des Remote Desktop Protocol Servers Xrdp unter Linux

OpenSSH OpenSSL Fail2ban iptables Linux Embedded Linux Yocto GCC CMake Boost SQLite systemd Eclipse GDB Doxygen PuTTY WinSCP Xrdp Enterprise Architect Eclipse Papyrus Polarion
IoT-Sicherheit IT-Sicherheit Netzwerk-Sicherheit Verschlüsselung digitale Signatur TLS X.509 Sicherheitstest Softwarearchitektur C++ Unit-Test Embedded System UML Medizingeräte-Software
Rastatt
1 Jahr
2017-11 - 2018-10

Spektrometer-Netzwerke

Softwareentwickler Client/Server-Architektur SOAP Webservice ...
Softwareentwickler

Weiterentwicklung einer Client/Server-Anwendung bei einem Hersteller von Spektrometern. Im Mittelpunkt standen dabei SOAP-basierte Webservices und eine Web-Oberfläche, sämtlich in C++ programmiert.

Tätigkeiten: Entwicklung neuer Programmteile in C++14, Umstellung der Webservices auf gSOAP-Toolkit einschließlich Optimierung der Architektur, Erstellung einer hierarischen WSDL-Dateistruktur, Entwicklung eines Code-Generators (zusätzlich zum gSOAP-eigenen) zur Erzeugung umfangreichen Datenüberführungs-Codes, Weiterentwicklung der Web Toolkit (Wt)-basierten Web-GUI, Programmierung einer neuen Tabelle zur Darstellung von Messdaten, Umsetzung eines adaptiven Layouts mittels CSS, Umstellung der Web-GUI auf Wt4, dadurch stärkere Orientierung an den C++ Core Guidelines (Stroustrup/Sutter), Implementierung der verschlüsselten Speicherung von Passwörtern mit Hashwert und Salt, Entwicklung von Unit-Tests mit Boost.Test, Erstellung eines Konzepts für automatisierte Tests der Web-GUI mit dem Microsoft-UI-Testframework im Visual Studio Enterprise, Aufsetzen einer Testumgebung bestehend aus Microsoft IIS, ODBC-Datenquelle und SQL-Server; Konfiguration der Webservices zur verschlüsselten Übertragung über https, Erstellung selbst-signierter X.509-Zertifikate mit OpenSSL und Installation dieser im Webserver Microsoft IIS und in den Webservice-Clients, digitales Signieren von Dateien mit OpenSSL und Microsoft Authenticode, Code-Analyse und Debugging (auch der Spektroskopiesoftware), Fehlersuche und -behebung, Projekt- und Versionsverwaltung mit Microsoft TFS

gSOAP Wt Boost.Test Microsoft-UI-Testframework Microsoft IIS Microsoft TFS Microsoft Authenticode OpenSSL
Client/Server-Architektur SOAP Webservice WSDL CSS C++ Core Guidelines ODBC Verschlüsselung TLS https X.509 digitale Signatur
Ettlingen
3 Jahre 3 Monate
2014-05 - 2017-07

Unit-Tests für Embedded Software

Softwareentwickler Unit Test Synchronization Primitives Platform Abstraction Layer ...
Softwareentwickler

Entwicklung von Unit-Tests für Steuerungssoftware bei einem führenden Hersteller von Antriebstechnik

Tätigkeiten: Programmierung von Unit-Tests einschließlich dazu benötigter Mock-Objekte in C++ auf den Plattformen Windows, Windows CE und Green Hills Integrity; Verwendung des Google C++ Testing- und Mocking-Frameworks (Google Test / Google Mock); Erstellung flexibel verwendbarer Tester-Klassen als gemeinsame Basis für die Tests verschiedener Softwarekomponenten und für eine große Anzahl unterschiedlicher Testszenarien; Nachbildung der Umgebung für jeweils ein isoliertes Testobjekt; Erstellung von Mock-Objekten u. a. für die Dateizugriffs- und Socket-Schnittstellen; Prüfung des Verhaltens, des Outputs und der Thread-Sicherheit von Softwarekomponenten; Realisierung der Thread-Sicherheit des oben genannten Testframeworks und der Bibliothek STLport unter Windows und Integrity durch Implementieren der Synchronisierungsmechanismen (Synchronization Primitives), plattformunabhängig mittels Platform Abstraction Layer (PAL); Black-Box- und White-Box-Tests, Codeanalyse, Code-Review, Verwendung des Visual Studio Team Foundation Server 2012

Google Test Google Mock Windows Windows CE Green Hills Integrity STLport Visual Studio Team Foundation Server
Unit Test Synchronization Primitives Platform Abstraction Layer Black Box Test White Box Test
Bruchsal
1 Jahr
2013-03 - 2014-02

Prüfstände Automotive

Softwareentwickler Softwareengineering Model/View-Architektur Model View ViewModel (MVVM)-Muster ...
Softwareentwickler

Mitarbeit an der Neuentwicklung von Steuer- und Auswertesoftware für Prüfstände in der Automotive Industrie. In diesem Projekt kamen verstärkt Open Source-Software und moderne Programmiertechniken zum Einsatz. Außerdem stand eine hochentwickelte Infrastruktur zur Verfügung.

Tätigkeiten: Programmierung in C++ mit den Compilern MinGW und GCC sowie dem Buildsystem CMake, Entwicklung eines Messdatenkonverters mit grafischer Oberfläche unter Verwendung des Frameworks Qt 5 und seiner Model/View-Architektur, Erstellung eines Tools zur grafischen Darstellung von Messwertekurven unter Einsatz des Model View ViewModel (MVVM)-Musters, Entwurf und Implementierung von Klassen zum Lesen und Schreiben von Hierarchical Data Format (HDF5)-Dateien sowie eines Iterators für den Messdatenzugriff, der das Strategy-Muster nutzt; Template-Metaprogrammierung mit Typlisten zur Verarbeitung verschiedener Messwerte-Datentypen, Verwendung der Xerces-C++-Bibliothek zum Parsen und Manipulieren von Ressourcen-XML-Dateien, Entwurf einer GUI-Softwarearchitektur, die sich an einem Schichtenmodell orientiert; Implementierung einfacher und zusammengesetzter Widgets, basierend auf dem Modul Qt Widgets, zum Beispiel einer numerischen Anzeige von Signalwerten mit Editiermöglichkeit und Konfiguration per Drag & Drop; Umsetzung von extern erstellten GUI-Designvorgaben, Erstellung von Unit Tests unter Windows 7 und Linux, basierend auf den Frameworks CppUnit und Qt Test; Nutzung des Continuous Integration-Systems Jenkins zum automatisierten Bauen und Testen, Versionsverwaltung mit Subversion (SVN), Verwendung weiterer Werkzeuge wie Qt Creator, Eclipse, Sparx Enterprise Architect und Doxygen

MinGW GCC CMake Qt Hierarchical Data Format HDF5 Xerces-C++ CppUnit Windows Linux Jenkins Subversion (SVN) Eclipse Sparx Enterprise Architect Doxygen
Softwareengineering Model/View-Architektur Model View ViewModel (MVVM)-Muster Unit Test Continuous Integration Scrum
Landau

Aus- und Weiterbildung

Aus- und Weiterbildung

Dipl.-Ing. Elektronische Bauelemente
MCAD (Microsoft Certified Application Developer for Microsoft .NET)

Position

Position

Als Softwarearchitekt und Entwickler bin ich mit dem gesamten Prozess der Softwareentwicklung vertraut. Durch Einsatz effektiver Methoden und leistungsfähiger Werkzeuge sowie moderner Design- und Programmiertechniken erhalten Sie qualitativ hochwertige Software.

Kompetenzen

Kompetenzen

Top-Skills

C++ Softwareengineering IoT-Sicherheit Softwarearchitektur Softwareentwicklung Technische Anwendungen Open Source Design Patterns OOAD OOP Computer Vision Robotik Embedded System Client/Server-Architektur Requirements-Management Test-Management Unit Test Sicherheitstest C++-Standardbibliothek Boost Linux Multithreading Debuggen

Schwerpunkte

IoT-Sicherheit
Softwareengineering
Softwarearchitektur
Technische Anwendungen

IoT-Sicherheit:

  • Beurteilung der Sicherheits-Schwachstellen eingebetteter Systeme in einem Netzwerk

  • Erstellung von optimal angepassten Sicherheitskonzepten

  • Abfrage von Common Vulnerabilities and Exposures (CVE) von öffentlichen Datenbanken, Analyse und Bewertung der CVEs

  • Erstellung von Sicherheitsupdates für Embedded Linux-Systeme

  • Erweiterung bestehender Gerätesoftware um Sicherheitsfunktionen wie TLS-Verschlüsselung des E-Mail-Versands oder Login-Delay

  • Portierung der Open Portable Trusted Execution Environment (OP-TEE) auf neue Geräte und Testen der Sicherheit von OP-TEE-Installationen

  • Implementierung der Prüfung digitaler Signaturen mittels OpenSSL zur Wahrung der Integrität eines Systems

  • Verschlüsselte Datenübertragung über das Protokoll MQTT mit TLS sowie mit den OpenSSH-Tools ssh und scp zum Schutz der Vertraulichkeit übertragener Informationen

  • Implementierung gesicherter Verbindungen über das Protokoll TLS mit gegenseitiger Authentifizierung unter Verwendung von X.509-Zertifikaten

  • Erstellung von TLS-Clients als Trusted Application

  • Gewährleistung der Verfügbarkeit eines Systems durch Abwehr von Denial of Service (DoS)-Angriffen, indem die IP-Adressen der Angreifer erkannt und blockiert werden; mögliche Realisierung mit dem Programm Fail2ban bzw. geeigneten Scripten zur Steuerung der Linux-Firewall (iptables, ipset)

  • Erhöhung der Sicherheit durch Kontrolle und Minimierung der offenen Ports sowie Einstellung unüblicher Portnummern

  • Test weiterer Sicherheitsfunktionen eines Systems einschließlich Analyse des Netzwerkverkehrs mit den Werkzeugen Wireshark und tcpdump sowie Entwicklung von entsprechenden automatisierten Tests

  • Durchführung von Penetrationstests


Softwareengineering:

  • Anforderungsanalyse, Softwaredesign und Implementierung in C++ und verwandten Programmiersprachen

  • Modellieren von Softwarearchitekturen mit UML-Werkzeugen (sowohl freie als auch proprietäre)

  • Anwendung von Entwurfsmustern (Design Patterns) mithilfe passender Programmiertechniken wie objektorientierte, generische oder funktionale Programmierung

  • Modernes C++-Design unter Verwendung der C++-Bibliotheken Loki und Boost

  • Flexible Entwürfe mit Policy-basiertem Klassendesign

  • Template-Metaprogrammierung mit Typlisten, zum Beispiel zur Erzeugung gestreuter oder linearer Vererbungshierarchien

  • Verwendung generischer Komponenten, wie generalisierte Funktoren zur Anwendung des Command-Musters, abstrakte Fabrik (Abstract Factory-Muster) oder Small-Object-Allokator

  • Berücksichtigung der Features der neuen Standards C++11 bis 20, zum Beispiel Typinferenz und Lambda-Funktionen, um die Produktivität beim Programmieren zu steigern

  • Einsatz weiterer C++11-Neuerungen, wie Rvalue-Referenzen und der dadurch ermöglichten Move-Semantik, Variadic Templates, sowie der integrierten Unicode-Unterstützung

  • Nutzung der neuen C++11-Multithreading-Funktionalität und der Standardbibliotheks-Erweiterungen für reguläre Ausdrücke, Type Traits, Smart Pointer sowie die neuen Container Tupel und Array

  • Verwendung der C++17-Features String-Sicht, optionaler Wert und Variante, sowie der Dateisystem-Bibliothek und der parallelen Algorithmen der Standardbibliothek

  • Konfiguration und Nutzung komplexer Continuous Integration-Systeme zur Software-Qualitätssicherung

  • Entwurf, Erstellung und Wartung automatisierter Modultests mithilfe geeigneter Test-Frameworks

  • Bauen des Linux-Kernels zum Debuggen und Patchen

  • Erstellen des Kernels und Root-FS für Embedded-Systeme mit Yocto und Buildroot

  • Verwendung von Werkzeugen zur Versionsverwaltung und zur Erzeugung der Softwaredokumentation aus Sourcecode-Kommentaren, Erstellung von Spezifikationen zu Schnittstellen und Datenformaten sowie von Anwenderdokumentation

 

Technische Anwendungen:

  • Entwicklung von PC-basierten Anwendungen der Mess-, Steuer- und Regelungstechnik

  • Software für die berührungslose Koordinatenmesstechnik

  • Ansteuerung von Sensoren; Aufzeichnung, Auswertung und Visualisierung von Messwerten

  • Kalibrierung, Fehlerrechnung, Nachweis der Messgerätefähigkeit

  • Programmierung von mehrachsigen Bahnsteuerungen (Motion Control)

  • Bildaufnahme und Steuerung digitaler Videokameras (USB, IEEE 1394 / FireWire) mit DirectShow

  • Bildverarbeitung: Segmentierung, Klassifizierung, Muster- und Bewegungserkennung; zum Teil auf der Open Source Computer Vision Library (OpenCV) basierend

  • Audio- und Videosignalcodierung (MP3, AAC, JPEG, MPEG, H.264), Implementierung von Bild- und Videokompressionsverfahren (Transformation, Quantisierung, Codierung), zum Teil optimiert für Mobilgeräte

  • Signalverarbeitung mit den Intel Integrated Performance Primitives (IPP): effiziente Arithmetik, digitale Filter, Short-Time Fourier-Transformation, Spektralanalyse, Farbkonvertierung, Schwellwertoperationen, FFT, DCT, Statistik, geometrische Transformationen, Wavelet-Operationen

  • Anwendungen und Grundlagen im Bereich Machine Vision, zum Beispiel normalisierte 2D-Grauwertkorrelation

  • Erarbeitung von Grundlagen zum Einsatz von LiDAR-Kameras: geometrische Kalibrierung, Transformation und Verarbeitung von 3D-Punktwolken, Identifikation und Vermessung von Objekten

  • Verwendung des Robot Operating System (ROS) sowie Erstellung neuer ROS-Komponenten

  • Erweitern und Patchen von Digital Living Network Alliance (DLNA)-Servern

  • Kommunikation über Bluetooth Low Energy (BLE) mittels Tiny Bluetooth LE Library (TinyB) bzw. Android-Bluetooth-Stack

  • Analyse von Hardware-Quirks, zum Beispiel in einem USB3-Controller, durch Debuggen des Linux-Kernels mittels Kernel-Debugger KGDB, Dynamic-Debug und Event-Tracing

  • Entwicklung von Workarounds in Form von Patches, zum Beispiel für den xHCI-Treiber im Kernel

 

Ich bin sowohl an der Übernahme von Teilaufgaben innerhalb größerer Projekte als auch an der Abwicklung kompletter Projekte, einschließlich Beratung und Support interessiert.

Produkte / Standards / Erfahrungen / Methoden

Open Source
Boost
Asio, Circular Buffer, Endian, Geometry, Log, QVM, Serialization, Test, Tokenizer
OOP
OOAD
Design Pattern
Entwurfsmuster
Sicherheitskonzept
Schwachstellenbewertung
CVE
Common Vulnerabilities and Exposures
Verschlüsselung
digitale Signatur
Sicherheitstest
Penetration-Test
Unit-Test
Authentifizierung
Linux PAM, pam_faillock
Logging
log4cpp
Interprozesskommunikation
Pipe, D-Bus
Bildverarbeitung 2D/3D
OpenCV
geometrische Kalibrierung
Koordinatentransformation
Robotik
ROS
Intel RealSense SDK
IoT
Paho MQTT C++ Client Library
OP-TEE
Open Portable Trusted Execution Environment
ARM Trusted Firmware
Dnsmasq
msmtp
lighttpd
TinyB
Tiny Bluetooth LE Library
Mbed TLS
DLNA
Digital Living Network Alliance
Eclipse
Eclipse Papyrus
CMake
Doxygen
Enterprise Architect
UML
GCC
GDB
OpenOCD
JTAG-Debugging
KGDB
Linux-Kernel
Debugging, Tracing, Treiber
Git
GitHub
OpenSSH
OpenSSL
X.509
OpenVPN
Linux-Firewall
Fail2ban
Wireshark
tcpdump
WinSCP
PuTTY
Xrdp
OpenGL
Bitbucket
Jira
Jenkins

Betriebssysteme

Linux
Ubuntu, Mint, Manjaro, Debian, Kernel
Embedded Linux
Yocto, Buildroot, BusyBox
Android
QNX
Symbian OS
Windows
7, 10, Server, CE, Mobile

Programmiersprachen

C++
C++20, GCC 11, MinGW, Visual C++
Python
C#
Java
JavaScript
PL/SQL
C
Assembler
 

Datenbanken

SQLite
MS SQL Server
MySQL
Oracle
SQL

Datenkommunikation

TLS
inkl. StartTLS
SSH
SCP
SFTP
SMTP
MQTT
HTTPS
HTTP
TFTP
FTPS
VPN
Bluetooth Low Energy
Ethernet
Internet, Intranet
JSON
REST
SOAP
gSOAP
TCP/IP
UDP
UART
 

Hardware

LiDAR-Kameras
Intel RealSense L515
Embedded Systeme
Toradex Colibri, ARM Microchip SoC, Raspberry Pi, Bare Metal
Adafruit FT232H
USB3-Controller
Echtzeitsysteme
Mobilgeräte
PC
Server
 

Branchen

Branchen

Automobil
Banken
EDV
Handel
IT
Maschinenbau
Medizintechnik
Pharma
Software
sonstige Industrie
Telekommunikation
Versicherungen

Einsatzorte

Einsatzorte

Deutschland, Österreich, Schweiz

Deutschland: außerhalb D6, D7: Vor-Ort-Einsatz < 100%

Weitere Länder: Vor-Ort-Einsatz max. 50%

möglich

Projekte

Projekte

3 Monate
2023-01 - 2023-03

OP-TEE-Portierung

Softwareentwickler C++ C Assembler ...
Softwareentwickler
Portierung des OP-TEE-Frameworks (Open Portable Trusted Execution Environment) auf den Raspberry Pi 4 als Weiterbildungsprojekt. Anschließend wurde auch ein TLS-Client als Trusted Application erstellt.
Tätigkeiten: Analyse des Assembler-Codes von Bootloader und OP-TEE-OS-Eintrittspunkt, Anpassung und Erweiterung der bereits vorhandenen Raspberry Pi 3-Portierungen von OP-TEE-OS und ARM Trusted Firmware in C, Erstellung des Linux-Kernels mit OP-TEE-Treiber sowie des Root-FS mit OP-TEE-Client-Package (TEE-Supplicant) sowohl mittels Buildroot als auch Yocto, Verwendung der Toolchains AARCH64/Bare Metal, Programmierung der Ausgabe über UART, Setup zum Booten via TFTP mit Dnsmasq, JTAG-Hardware-Debugging mit dem Adapter Adafruit FT232H und dem Debugger OpenOCD, Konfiguration der Bibliothek Mbed TLS um TLS in einer Trusted Application (TA) verwenden zu können, Implementierung einer TLS-Client-TA in C++, Erstellung eines Tests der Sicherheit einer OP-TEE-Installation

OP-TEE ARM Trusted Firmware Embedded Linux Yocto Buildroot Dnsmasq Adafruit FT232H OpenOCD Mbed TLS Raspberry Pi 4
C++ C Assembler AARCH64 Bare Metal UART TFTP JTAG-Debugging
5 Monate
2022-05 - 2022-09

Embedded System Upgrade

Softwareentwickler C++ Open Source Embedded System ...
Softwareentwickler

Erweiterung der Software von Geräten zur Energieverteilung um E-Mail-Transportverschlüsselung und Anmeldeverzögerung bei einem Premiumanbieter von Elektrotechnik. Die Geräte laufen unter Embedded Linux. 

Tätigkeiten: Ermittlung der Anforderungen zum E-Mail-Versand mit Transport Layer Security (TLS)-Verschlüsselung, Erstellung und Abstimmung des Umsetzungskonzepts mit dem Produkt-Management, Bewertung möglicher Open Source-Pakete, Auswahl und Integration des SMTP-Clients msmtp, Implementierung eines SMTP-Client-Wrappes in C++, der den SMTP-Client in einem separaten Prozess ausführt; Verwendung von TLS und StartTLS jeweils in Abhängigkeit von der konfigurierten Portnummer, Installation der benötigten Herausgeber- und Root-Zertifikate, geschützte Übergabe des SMTP-Passworts an den SMTP-Client über temporäre Pipe, Tests mit den wichtigsten öffentlichen SMTP-Servern, Erstellung von Unit-Tests mit Boost.Test, Analyse des vorhandenen Sourcecodes der Gerätesoftware und Ermittlung, wie sich eine Anmeldeverzögerung (Login-Delay) realisieren lässt, das heißt eine temporäre Sperre des Benutzerzugangs nach mehrmaliger Falscheingabe des Passworts unter Berücksichtigung der Zugangsarten Web, SSH und SNMP; Konfiguration der Pluggable Authentication Modules (Linux PAM) mit dem Modul pam_faillock.so, Anpassung der Webanwendung in C++ und JavaScript, um dem Benutzer bei Authentifizierungsfehler entsprechende Meldungen anzuzeigen; Ergänzung des Loggings bei Login-Fehlversuchen und -Sperren, Erweiterung der Anwendungsmodule in C++, um die Login-Delay-Konfiguration zu ändern und zu speichern; Erstellung eines neuen Kommandos, das zwischen diesen Modulen über den D-Bus ausgetauscht wird, einschließlich Code-Generierung mit dem Tool gdbus-codegen; Erweiterung der D-Bus- und SQLite-Schnittstellen in der Anwendung um boolschen Datentyp, Versionsverwaltung mit Git und Bitbucket, Ticketverwaltung mit Jira 

Linux Embedded Linux Buildroot ARM Toolchain GCC CMake msmtp Linux PAM pam_faillock log4cpp D-Bus SQLite Boost.Test Git Bitbucket Jira Jenkins Confluence OpenVPN MS-Teams
C++ Open Source Embedded System IT-Sicherheit TLS StartTLS X.509 SMTP Authentifizierung SSH SNMP JavaScript JSON Logging Interprozesskommunikation Unit Test
Home Office
3 Monate
2022-01 - 2022-03

Embedded Linux-Sicherheitsupdate

Softwareentwickler Common Vulnerabilities and Exposures (CVE) Open Source Embedded System ...
Softwareentwickler

Analyse und Aktualisierung der Geräte- und Build-Software bei einem Premiumanbieter von Elektrotechnik. Ziel war die weitere Gewährleistung der IT-Sicherheit von im Einsatz befindlichen Geräten zur Energieverteilung.

Tätigkeiten: Abfrage der Common Vulnerabilities and Exposures (CVE) der verwendeten Open Source-Pakete von der National Vulnerability Database (NVD) mittels Python-Skript, Analyse einzelner CVEs und Einschätzung des jeweiligen Sicherheitsrisikos im Endprodukt, Entwicklung und Vergleich von Konzepten zur Schwachstellenbeseitigung, Aktualisierung des Werkzeugs Buildroot, mit dem ein Embedded Linux-System erstellt wird, einschließlich der enthaltenen Pakete; Beseitigung verbliebener Schwachstellen durch Hinzufügen von Patch-Dateien, Anpassung der Bash-Skripte, mit denen ein Update-Paket erstellt und auf dem Target installiert wird; Verwendung der MTD- und UBI-Tools, um auf Partitionen zuzugreifen, die auf Raw Flash Devices liegen; Anpassung der voreingestellten SSH-Konfiguration auf dem Gerät, um SSH-Verbindungen ohne den mittlerweile unsicheren Secure Hash Algorithm SHA-1 zu ermöglichen (z. B. mit WinSCP); Update auf neue Versionen der Cross-Compiler-Toolchains für ARM Microchip SoCs (zum Teil Bare Metal) und des Build-Tools CMake einschließlich entsprechender Anpassungen der Projektdateien, Erstellung einer Native-Compiler-Toolchain durch Bauen des GCC-8 aus den Quellen, System-Update des Jenkins-Buildservers, Erstellung eines Skripts zur Prüfung, ob der öffentliche Schlüssel in einem X.509-Zertifikat mit einem gegebenen privaten Schlüssel korrespondiert; Konfiguration des Webservers lighttpd für HTTPS, Versionsverwaltung mit Bitbucket, Ticketverwaltung mit Jira

Linux Embedded Linux Buildroot BusyBox ARM Toolchain CMake GCC Python Bash OpenVPN Git Bitbucket Jira Jenkins Confluence Debian OpenSSL lighttpd OpenSSH WinSCP MS-Teams
Common Vulnerabilities and Exposures (CVE) Open Source Embedded System IT-Sicherheit IoT-Sicherheit Schwachstellen-Analyse X.509 HTTPS SSH JSON REST Service MTD UBI Patch C
Stuttgart, Home Office
8 Monate
2021-03 - 2021-10

3D-Bildverarbeitung

Softwareentwickler LiDAR-Kamera Bildverarbeitung 2D/3D geometrische Kalibrierung ...
Softwareentwickler

Entwicklung der Detektion von Treppenstufen zur Bewegungsplanung für mobile Roboter unter Verwendung einer LiDAR-Tiefenbildkamera. Das Projekt ist komplett Open Source.

Tätigkeiten: Entwicklung einer Methode zur geometrischen Kalibrierung der Kamera und Erstellung des entsprechenden Programms, Verwendung des Intel RealSense SDK zu Kamerasteuerung, Bild-/Punktwolkeneinzug und Projektion/Deprojektion einzelner Punkte; Implementierung der Koordinatentransformation mit Boost QVM und der weiteren Verarbeitung von 3D-Punktwolken in C++20, Segmentierung von konventionellen 2D-Bildern mit OpenCV, Visualisierung mittels OpenGL, Erstellung eines Wrappers in Python als Robot Operating System (ROS)-Komponente, Analyse eines Quirks des USB3-Controllers ASM1042 durch Debugging und Tracing des Linux-Kernels, Entwicklung eines Workarounds in Form eines Patches für den xHCI-Treiber im Kernel

Intel RealSense SDK L515 ROS Boost QVM OpenCV OpenGL GCC GDB Eclipse CMake Linux Kernel KGDB ASM1042
LiDAR-Kamera Bildverarbeitung 2D/3D geometrische Kalibrierung Koordinatentransformation Robotik C++20 Python Kernel-Debugging Kernel-Tracing USB3 xHCI Patch Kernel-Treiber
Home Office
9 Monate
2019-03 - 2019-11

Connectivity-Modul

Softwareentwickler IoT-Sicherheit IT-Sicherheit Netzwerk-Sicherheit ...
Softwareentwickler

Entwicklung der Konnektivitäts-Software für eine neue Gerätegeneration bei einem Medizintechnikhersteller. Das Connectivity-Modul dient dem Datenaustausch der Geräte mit der Umgebung, auch über das Internet. Der Fokus lag bei dem Projekt auf der IT-Sicherheit.

Tätigkeiten: Entwurf und Implementierung der Hauptanwendung für das Embedded System, Programmierung in C++17, Verwendung der Bibliothek Boost und der Werkzeuge GCC und CMake, Programmerstellung auf einer Workstation unter Linux Ubuntu für das Target (Toradex Colibri) unter Embedded Linux / Yocto, Konfiguration der Dienste auf dem Target mit systemd, Debuggen auf dem Target mit GDB, Konzepterstellung und Umsetzung der Serveranbindung des Gerätes über das Internet unter Beachtung der besonderen Anforderungen an die IT-Sicherheit, Implementierung des sicheren Datenaustauschs für Logfiles, Software-Updates usw. basierend auf Verschlüsselung und digitalen Signaturen, Realisierung einer gesicherten Verbindung über das Protokoll TLS mit gegenseitiger Authentifizierung unter Verwendung von X.509-Zertifikaten, Verwendung der OpenSSH- und OpenSSL-Tools sowie Anbindung der OpenSSL-Bibliothek, Absicherung des Systems mit den Programmen Fail2ban und iptables, Erstellung von entsprechenden Tests der Netzwerk-Sicherheit, Definition und Umsetzung spezieller Protokolle für die Kommunikation über serielle Ports und TCP-Sockets mittels Boost.Asio, Implementierung von Multithreading mit der C++11-Thread-Bibliothek, Erstellung eines Datenbankadapters zur Speicherung von Gerätedaten und -ereignissen in einer SQLite-Datenbank, Implementierung von State Machines und Puffern, Entwicklung von Unit-Tests mit Boost.Test, Erstellung von Modul- und Hardware-Tests sowie einer Teststeuerung mit Umgebungssimulation, Requirements- und Test-Management unter Beachtung der Medizingeräte-Software-Norm IEC 62304 mit dem Werkzeug Polarion, Erweiterung der Softwarearchitektur mit Enterprise Architect, Verwendung der Werkzeuge Eclipse (Papyrus), Doxygen, PuTTY, WinSCP; Installation des Remote Desktop Protocol Servers Xrdp unter Linux

OpenSSH OpenSSL Fail2ban iptables Linux Embedded Linux Yocto GCC CMake Boost SQLite systemd Eclipse GDB Doxygen PuTTY WinSCP Xrdp Enterprise Architect Eclipse Papyrus Polarion
IoT-Sicherheit IT-Sicherheit Netzwerk-Sicherheit Verschlüsselung digitale Signatur TLS X.509 Sicherheitstest Softwarearchitektur C++ Unit-Test Embedded System UML Medizingeräte-Software
Rastatt
1 Jahr
2017-11 - 2018-10

Spektrometer-Netzwerke

Softwareentwickler Client/Server-Architektur SOAP Webservice ...
Softwareentwickler

Weiterentwicklung einer Client/Server-Anwendung bei einem Hersteller von Spektrometern. Im Mittelpunkt standen dabei SOAP-basierte Webservices und eine Web-Oberfläche, sämtlich in C++ programmiert.

Tätigkeiten: Entwicklung neuer Programmteile in C++14, Umstellung der Webservices auf gSOAP-Toolkit einschließlich Optimierung der Architektur, Erstellung einer hierarischen WSDL-Dateistruktur, Entwicklung eines Code-Generators (zusätzlich zum gSOAP-eigenen) zur Erzeugung umfangreichen Datenüberführungs-Codes, Weiterentwicklung der Web Toolkit (Wt)-basierten Web-GUI, Programmierung einer neuen Tabelle zur Darstellung von Messdaten, Umsetzung eines adaptiven Layouts mittels CSS, Umstellung der Web-GUI auf Wt4, dadurch stärkere Orientierung an den C++ Core Guidelines (Stroustrup/Sutter), Implementierung der verschlüsselten Speicherung von Passwörtern mit Hashwert und Salt, Entwicklung von Unit-Tests mit Boost.Test, Erstellung eines Konzepts für automatisierte Tests der Web-GUI mit dem Microsoft-UI-Testframework im Visual Studio Enterprise, Aufsetzen einer Testumgebung bestehend aus Microsoft IIS, ODBC-Datenquelle und SQL-Server; Konfiguration der Webservices zur verschlüsselten Übertragung über https, Erstellung selbst-signierter X.509-Zertifikate mit OpenSSL und Installation dieser im Webserver Microsoft IIS und in den Webservice-Clients, digitales Signieren von Dateien mit OpenSSL und Microsoft Authenticode, Code-Analyse und Debugging (auch der Spektroskopiesoftware), Fehlersuche und -behebung, Projekt- und Versionsverwaltung mit Microsoft TFS

gSOAP Wt Boost.Test Microsoft-UI-Testframework Microsoft IIS Microsoft TFS Microsoft Authenticode OpenSSL
Client/Server-Architektur SOAP Webservice WSDL CSS C++ Core Guidelines ODBC Verschlüsselung TLS https X.509 digitale Signatur
Ettlingen
3 Jahre 3 Monate
2014-05 - 2017-07

Unit-Tests für Embedded Software

Softwareentwickler Unit Test Synchronization Primitives Platform Abstraction Layer ...
Softwareentwickler

Entwicklung von Unit-Tests für Steuerungssoftware bei einem führenden Hersteller von Antriebstechnik

Tätigkeiten: Programmierung von Unit-Tests einschließlich dazu benötigter Mock-Objekte in C++ auf den Plattformen Windows, Windows CE und Green Hills Integrity; Verwendung des Google C++ Testing- und Mocking-Frameworks (Google Test / Google Mock); Erstellung flexibel verwendbarer Tester-Klassen als gemeinsame Basis für die Tests verschiedener Softwarekomponenten und für eine große Anzahl unterschiedlicher Testszenarien; Nachbildung der Umgebung für jeweils ein isoliertes Testobjekt; Erstellung von Mock-Objekten u. a. für die Dateizugriffs- und Socket-Schnittstellen; Prüfung des Verhaltens, des Outputs und der Thread-Sicherheit von Softwarekomponenten; Realisierung der Thread-Sicherheit des oben genannten Testframeworks und der Bibliothek STLport unter Windows und Integrity durch Implementieren der Synchronisierungsmechanismen (Synchronization Primitives), plattformunabhängig mittels Platform Abstraction Layer (PAL); Black-Box- und White-Box-Tests, Codeanalyse, Code-Review, Verwendung des Visual Studio Team Foundation Server 2012

Google Test Google Mock Windows Windows CE Green Hills Integrity STLport Visual Studio Team Foundation Server
Unit Test Synchronization Primitives Platform Abstraction Layer Black Box Test White Box Test
Bruchsal
1 Jahr
2013-03 - 2014-02

Prüfstände Automotive

Softwareentwickler Softwareengineering Model/View-Architektur Model View ViewModel (MVVM)-Muster ...
Softwareentwickler

Mitarbeit an der Neuentwicklung von Steuer- und Auswertesoftware für Prüfstände in der Automotive Industrie. In diesem Projekt kamen verstärkt Open Source-Software und moderne Programmiertechniken zum Einsatz. Außerdem stand eine hochentwickelte Infrastruktur zur Verfügung.

Tätigkeiten: Programmierung in C++ mit den Compilern MinGW und GCC sowie dem Buildsystem CMake, Entwicklung eines Messdatenkonverters mit grafischer Oberfläche unter Verwendung des Frameworks Qt 5 und seiner Model/View-Architektur, Erstellung eines Tools zur grafischen Darstellung von Messwertekurven unter Einsatz des Model View ViewModel (MVVM)-Musters, Entwurf und Implementierung von Klassen zum Lesen und Schreiben von Hierarchical Data Format (HDF5)-Dateien sowie eines Iterators für den Messdatenzugriff, der das Strategy-Muster nutzt; Template-Metaprogrammierung mit Typlisten zur Verarbeitung verschiedener Messwerte-Datentypen, Verwendung der Xerces-C++-Bibliothek zum Parsen und Manipulieren von Ressourcen-XML-Dateien, Entwurf einer GUI-Softwarearchitektur, die sich an einem Schichtenmodell orientiert; Implementierung einfacher und zusammengesetzter Widgets, basierend auf dem Modul Qt Widgets, zum Beispiel einer numerischen Anzeige von Signalwerten mit Editiermöglichkeit und Konfiguration per Drag & Drop; Umsetzung von extern erstellten GUI-Designvorgaben, Erstellung von Unit Tests unter Windows 7 und Linux, basierend auf den Frameworks CppUnit und Qt Test; Nutzung des Continuous Integration-Systems Jenkins zum automatisierten Bauen und Testen, Versionsverwaltung mit Subversion (SVN), Verwendung weiterer Werkzeuge wie Qt Creator, Eclipse, Sparx Enterprise Architect und Doxygen

MinGW GCC CMake Qt Hierarchical Data Format HDF5 Xerces-C++ CppUnit Windows Linux Jenkins Subversion (SVN) Eclipse Sparx Enterprise Architect Doxygen
Softwareengineering Model/View-Architektur Model View ViewModel (MVVM)-Muster Unit Test Continuous Integration Scrum
Landau

Aus- und Weiterbildung

Aus- und Weiterbildung

Dipl.-Ing. Elektronische Bauelemente
MCAD (Microsoft Certified Application Developer for Microsoft .NET)

Position

Position

Als Softwarearchitekt und Entwickler bin ich mit dem gesamten Prozess der Softwareentwicklung vertraut. Durch Einsatz effektiver Methoden und leistungsfähiger Werkzeuge sowie moderner Design- und Programmiertechniken erhalten Sie qualitativ hochwertige Software.

Kompetenzen

Kompetenzen

Top-Skills

C++ Softwareengineering IoT-Sicherheit Softwarearchitektur Softwareentwicklung Technische Anwendungen Open Source Design Patterns OOAD OOP Computer Vision Robotik Embedded System Client/Server-Architektur Requirements-Management Test-Management Unit Test Sicherheitstest C++-Standardbibliothek Boost Linux Multithreading Debuggen

Schwerpunkte

IoT-Sicherheit
Softwareengineering
Softwarearchitektur
Technische Anwendungen

IoT-Sicherheit:

  • Beurteilung der Sicherheits-Schwachstellen eingebetteter Systeme in einem Netzwerk

  • Erstellung von optimal angepassten Sicherheitskonzepten

  • Abfrage von Common Vulnerabilities and Exposures (CVE) von öffentlichen Datenbanken, Analyse und Bewertung der CVEs

  • Erstellung von Sicherheitsupdates für Embedded Linux-Systeme

  • Erweiterung bestehender Gerätesoftware um Sicherheitsfunktionen wie TLS-Verschlüsselung des E-Mail-Versands oder Login-Delay

  • Portierung der Open Portable Trusted Execution Environment (OP-TEE) auf neue Geräte und Testen der Sicherheit von OP-TEE-Installationen

  • Implementierung der Prüfung digitaler Signaturen mittels OpenSSL zur Wahrung der Integrität eines Systems

  • Verschlüsselte Datenübertragung über das Protokoll MQTT mit TLS sowie mit den OpenSSH-Tools ssh und scp zum Schutz der Vertraulichkeit übertragener Informationen

  • Implementierung gesicherter Verbindungen über das Protokoll TLS mit gegenseitiger Authentifizierung unter Verwendung von X.509-Zertifikaten

  • Erstellung von TLS-Clients als Trusted Application

  • Gewährleistung der Verfügbarkeit eines Systems durch Abwehr von Denial of Service (DoS)-Angriffen, indem die IP-Adressen der Angreifer erkannt und blockiert werden; mögliche Realisierung mit dem Programm Fail2ban bzw. geeigneten Scripten zur Steuerung der Linux-Firewall (iptables, ipset)

  • Erhöhung der Sicherheit durch Kontrolle und Minimierung der offenen Ports sowie Einstellung unüblicher Portnummern

  • Test weiterer Sicherheitsfunktionen eines Systems einschließlich Analyse des Netzwerkverkehrs mit den Werkzeugen Wireshark und tcpdump sowie Entwicklung von entsprechenden automatisierten Tests

  • Durchführung von Penetrationstests


Softwareengineering:

  • Anforderungsanalyse, Softwaredesign und Implementierung in C++ und verwandten Programmiersprachen

  • Modellieren von Softwarearchitekturen mit UML-Werkzeugen (sowohl freie als auch proprietäre)

  • Anwendung von Entwurfsmustern (Design Patterns) mithilfe passender Programmiertechniken wie objektorientierte, generische oder funktionale Programmierung

  • Modernes C++-Design unter Verwendung der C++-Bibliotheken Loki und Boost

  • Flexible Entwürfe mit Policy-basiertem Klassendesign

  • Template-Metaprogrammierung mit Typlisten, zum Beispiel zur Erzeugung gestreuter oder linearer Vererbungshierarchien

  • Verwendung generischer Komponenten, wie generalisierte Funktoren zur Anwendung des Command-Musters, abstrakte Fabrik (Abstract Factory-Muster) oder Small-Object-Allokator

  • Berücksichtigung der Features der neuen Standards C++11 bis 20, zum Beispiel Typinferenz und Lambda-Funktionen, um die Produktivität beim Programmieren zu steigern

  • Einsatz weiterer C++11-Neuerungen, wie Rvalue-Referenzen und der dadurch ermöglichten Move-Semantik, Variadic Templates, sowie der integrierten Unicode-Unterstützung

  • Nutzung der neuen C++11-Multithreading-Funktionalität und der Standardbibliotheks-Erweiterungen für reguläre Ausdrücke, Type Traits, Smart Pointer sowie die neuen Container Tupel und Array

  • Verwendung der C++17-Features String-Sicht, optionaler Wert und Variante, sowie der Dateisystem-Bibliothek und der parallelen Algorithmen der Standardbibliothek

  • Konfiguration und Nutzung komplexer Continuous Integration-Systeme zur Software-Qualitätssicherung

  • Entwurf, Erstellung und Wartung automatisierter Modultests mithilfe geeigneter Test-Frameworks

  • Bauen des Linux-Kernels zum Debuggen und Patchen

  • Erstellen des Kernels und Root-FS für Embedded-Systeme mit Yocto und Buildroot

  • Verwendung von Werkzeugen zur Versionsverwaltung und zur Erzeugung der Softwaredokumentation aus Sourcecode-Kommentaren, Erstellung von Spezifikationen zu Schnittstellen und Datenformaten sowie von Anwenderdokumentation

 

Technische Anwendungen:

  • Entwicklung von PC-basierten Anwendungen der Mess-, Steuer- und Regelungstechnik

  • Software für die berührungslose Koordinatenmesstechnik

  • Ansteuerung von Sensoren; Aufzeichnung, Auswertung und Visualisierung von Messwerten

  • Kalibrierung, Fehlerrechnung, Nachweis der Messgerätefähigkeit

  • Programmierung von mehrachsigen Bahnsteuerungen (Motion Control)

  • Bildaufnahme und Steuerung digitaler Videokameras (USB, IEEE 1394 / FireWire) mit DirectShow

  • Bildverarbeitung: Segmentierung, Klassifizierung, Muster- und Bewegungserkennung; zum Teil auf der Open Source Computer Vision Library (OpenCV) basierend

  • Audio- und Videosignalcodierung (MP3, AAC, JPEG, MPEG, H.264), Implementierung von Bild- und Videokompressionsverfahren (Transformation, Quantisierung, Codierung), zum Teil optimiert für Mobilgeräte

  • Signalverarbeitung mit den Intel Integrated Performance Primitives (IPP): effiziente Arithmetik, digitale Filter, Short-Time Fourier-Transformation, Spektralanalyse, Farbkonvertierung, Schwellwertoperationen, FFT, DCT, Statistik, geometrische Transformationen, Wavelet-Operationen

  • Anwendungen und Grundlagen im Bereich Machine Vision, zum Beispiel normalisierte 2D-Grauwertkorrelation

  • Erarbeitung von Grundlagen zum Einsatz von LiDAR-Kameras: geometrische Kalibrierung, Transformation und Verarbeitung von 3D-Punktwolken, Identifikation und Vermessung von Objekten

  • Verwendung des Robot Operating System (ROS) sowie Erstellung neuer ROS-Komponenten

  • Erweitern und Patchen von Digital Living Network Alliance (DLNA)-Servern

  • Kommunikation über Bluetooth Low Energy (BLE) mittels Tiny Bluetooth LE Library (TinyB) bzw. Android-Bluetooth-Stack

  • Analyse von Hardware-Quirks, zum Beispiel in einem USB3-Controller, durch Debuggen des Linux-Kernels mittels Kernel-Debugger KGDB, Dynamic-Debug und Event-Tracing

  • Entwicklung von Workarounds in Form von Patches, zum Beispiel für den xHCI-Treiber im Kernel

 

Ich bin sowohl an der Übernahme von Teilaufgaben innerhalb größerer Projekte als auch an der Abwicklung kompletter Projekte, einschließlich Beratung und Support interessiert.

Produkte / Standards / Erfahrungen / Methoden

Open Source
Boost
Asio, Circular Buffer, Endian, Geometry, Log, QVM, Serialization, Test, Tokenizer
OOP
OOAD
Design Pattern
Entwurfsmuster
Sicherheitskonzept
Schwachstellenbewertung
CVE
Common Vulnerabilities and Exposures
Verschlüsselung
digitale Signatur
Sicherheitstest
Penetration-Test
Unit-Test
Authentifizierung
Linux PAM, pam_faillock
Logging
log4cpp
Interprozesskommunikation
Pipe, D-Bus
Bildverarbeitung 2D/3D
OpenCV
geometrische Kalibrierung
Koordinatentransformation
Robotik
ROS
Intel RealSense SDK
IoT
Paho MQTT C++ Client Library
OP-TEE
Open Portable Trusted Execution Environment
ARM Trusted Firmware
Dnsmasq
msmtp
lighttpd
TinyB
Tiny Bluetooth LE Library
Mbed TLS
DLNA
Digital Living Network Alliance
Eclipse
Eclipse Papyrus
CMake
Doxygen
Enterprise Architect
UML
GCC
GDB
OpenOCD
JTAG-Debugging
KGDB
Linux-Kernel
Debugging, Tracing, Treiber
Git
GitHub
OpenSSH
OpenSSL
X.509
OpenVPN
Linux-Firewall
Fail2ban
Wireshark
tcpdump
WinSCP
PuTTY
Xrdp
OpenGL
Bitbucket
Jira
Jenkins

Betriebssysteme

Linux
Ubuntu, Mint, Manjaro, Debian, Kernel
Embedded Linux
Yocto, Buildroot, BusyBox
Android
QNX
Symbian OS
Windows
7, 10, Server, CE, Mobile

Programmiersprachen

C++
C++20, GCC 11, MinGW, Visual C++
Python
C#
Java
JavaScript
PL/SQL
C
Assembler
 

Datenbanken

SQLite
MS SQL Server
MySQL
Oracle
SQL

Datenkommunikation

TLS
inkl. StartTLS
SSH
SCP
SFTP
SMTP
MQTT
HTTPS
HTTP
TFTP
FTPS
VPN
Bluetooth Low Energy
Ethernet
Internet, Intranet
JSON
REST
SOAP
gSOAP
TCP/IP
UDP
UART
 

Hardware

LiDAR-Kameras
Intel RealSense L515
Embedded Systeme
Toradex Colibri, ARM Microchip SoC, Raspberry Pi, Bare Metal
Adafruit FT232H
USB3-Controller
Echtzeitsysteme
Mobilgeräte
PC
Server
 

Branchen

Branchen

Automobil
Banken
EDV
Handel
IT
Maschinenbau
Medizintechnik
Pharma
Software
sonstige Industrie
Telekommunikation
Versicherungen

Vertrauen Sie auf GULP

Im Bereich Freelancing
Im Bereich Arbeitnehmerüberlassung / Personalvermittlung

Fragen?

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

Das GULP Freelancer-Portal

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