freiberufler Embedded Software Engineer (modernes C++, Design für Testbarkeit, gern hardwarenah) auf freelance.de

Embedded Software Engineer (modernes C++, Design für Testbarkeit, gern hardwarenah)

offline
  • auf Anfrage
  • 24941 Flensburg
  • DACH-Region
  • de  |  en  |  fr
  • 14.06.2022

Kurzvorstellung

Als passionierter Embedded Entwickler biete ich meine Unterstützung besonders gern im hardwarenahen Umfeld an. Entwicklungsleistungen von der Architektur über Implementierung und Test bis zur Integration. Beratung zu modernem C++, Unit Test, Git, CI.

Qualifikationen

  • C
  • C++
  • eigenes Elektronik-Labor: Mess- und Löttechnik
  • Embedded Entwicklung / hardwarenahe Entwicklung
  • Gerätetreiber
  • Mikrocontroller
  • Refactoring
  • Software Architektur / Modellierung
  • Software Design
  • Testautomatisierung
  • Unit Testing

Projekt‐ & Berufserfahrung

Software Engineer C++
Eigene Forschungsarbeit, Flensburg
2/2022 – offen (2 Jahre, 3 Monate)
IT & Entwicklung
Tätigkeitszeitraum

2/2022 – offen

Tätigkeitsbeschreibung

Entwicklung eines Code-Generators für die Erzeugung eines typsicheren Register-Modells für Mikrocontroller und FPGA in modernstem C++:
* Implementierung eines SystemRDL 2.0 Compiler Frontend
* Entwicklung eines transaktionsbasierten SFR Modells mittels C++20 zero-cost
Abstraktionen zur Compile-Zeit

Eingesetzte Qualifikationen

C++, Software Architektur / Modellierung, Software Design

Technical Lead
Kundenname anonymisiert, Remote
1/2022 – 6/2022 (6 Monate)
IT & Entwicklung
Tätigkeitszeitraum

1/2022 – 6/2022

Tätigkeitsbeschreibung

Umstellung einer proprietären Entwicklungslandschaft auf ein modernes,
herstellerunabhängiges Setup.
* Kritische Auseinandersetzung mit Anforderungen, Vorstellungen und Ansätzen des Kunden
* Konvertierung der IDE-zentrischen Build-Lösung auf CMake Build System
* Modellieren und Aufarbeiten von problematischen Abhängigkeitsbäumen
* Kontinuierliche Umstellung parallel zur Entwicklung/Produktpflege

Eingesetzte Qualifikationen

C++, Embedded Software Engineering, make (Software)

Embedded Software Entwickler, Berater
Kundenname anonymisiert, Remote
10/2021 – 12/2021 (3 Monate)
IT & Entwicklung
Tätigkeitszeitraum

10/2021 – 12/2021

Tätigkeitsbeschreibung

Analysen und Strategien zum Aufdecken und Beheben handwerklicher Mängel einer Bestandssoftware (über 20 Jahre gewachsen, ca. 2 Mio. LOC).
* Durchführung von Reviews und statischen Code-Analysen
* Kategorisierung von Mängeln Aufstellung von Gegenmaßnahmen
* Experimentelles Refactoring
* Erarbeitung einer langfristigen Strategie zum kontinuierlichen Abbau technischer Schulden

Eingesetzte Qualifikationen

C++, Software Analyse, Software Architektur / Modellierung

Embedded Software Entwickler
Kundenname anonymisiert, Schweiz
12/2020 – 5/2021 (6 Monate)
Life Sciences
Tätigkeitszeitraum

12/2020 – 5/2021

Tätigkeitsbeschreibung

Unterstützung eines Teams bei der Entwicklung eines medizinischen Geräts;
insbesondere Verifikation eines Alarm-Subsystems nach IEC 60601-1-8.
* Unit Test
* Code- und Design-Reviews
* Integration und Dokumentation einer Abstraktionsschicht zum Test von IBM
Rhapsody State Charts
* Beiträge zum internen Wissenstransfer bezüglich modernem C++ sowie Test- und Mocking-Techniken

Eingesetzte Qualifikationen

C++, Embedded Software Engineering, Testdesign (IT), Testing (IT)

Embedded Software Engineer, Berater
Kundenname anonymisiert, Berlin
10/2019 – 5/2020 (8 Monate)
Gebäudeautomation
Tätigkeitszeitraum

10/2019 – 5/2020

Tätigkeitsbeschreibung

Entwicklung und Umsetzung einer nachhaltigen Strategie zum nachträglichen Einbringen von Unit Tests in eine etwa 500k Zeilen große Codebasis einer Steuerung für Gebäudeautomation:

* Analyse der Codebasis und Entwicklung einer teamweiten Vision der künftigen Arbeitsweisen und der Projektstruktur
* Migration des Buildsystems nach CMake
* Modularisierung der Codebasis
* Redesign und Refactoring ausgewählter Bestandteile um Tests zu ermöglichen
* Moderation der Auswahl von Unit Test und Mocking Frameworks
* Einführen eines Git-basierten Peer-Review Workflows innerhalb des Scrum-Teams
* Einbringen der Tests in die Continuous Integration Pipeline

Parallele Beratung des Teams hinsichtlich:

* Einsatz moderner C++ Sprachbestandteile im Embedded Kontext
* Fortgeschrittene Techniken mit der Versionsverwaltung Git (Rebase-Workflow, Pflegen einer nachvollziehbaren Historie, etc.)
* Design und Entwurfsmuster für Testbarkeit
* Test- und Mocking-Techniken

Eingesetzte Qualifikationen

C++, SCRUM, Software Design, Testautomatisierung, Testdesign (IT)

Embedded Software Engineer, Berater
Kundenname anonymisiert, Berlin
2/2019 – 4/2019 (3 Monate)
Gebäudeautomation
Tätigkeitszeitraum

2/2019 – 4/2019

Tätigkeitsbeschreibung

Unterstützung und Beratung eines Teams bei der Aufwandsabschätzung zur nachträglichen Einführung von Unit Tests in die Codebasis eines komplexen Steuerungssystems:

* Kommunizieren der Architektur- und Strukturvoraussetzungen zur Umsetzung von Unit Tests und Mocking (z. B. SOLID-Prinzipien und ihr Erscheinungsbild in C++)
* Aufdecken problematischer Architektur- und Codemuster, die o. g. Prinzipien entgegenstehen.
* Durchführen von exemplarischen Code-Experimenten zur Messung der nötigen Arbeitszeit zur Auflösung dieser Probleme.
* Entwicklung eines systematischen Ansatzes zur Problemlösung, der parallelisierte Arbeiten ermöglicht.
* Extrapolieren der experimentell ermittelten Abschätzung mittels Code-Metriken.
* Dokumentieren der Strategie und der Aufwandsabschätzung als Entscheidungsgrundlage für das Management.

Eingesetzte Qualifikationen

C++, Confluence (Atlassian), SCRUM, Software Architektur / Modellierung, Software Design, Testdesign (IT)

Embedded Entwickler (Werkstudent) (Festanstellung)
Technische Universität Berlin, Berlin
8/2017 – 9/2018 (1 Jahr, 2 Monate)
Luft- und Raumfahrtindustrie
Tätigkeitszeitraum

8/2017 – 9/2018

Tätigkeitsbeschreibung

Raumfahrt: Validierung/Portierung von Satellitensoftware auf FreeRTOS

Anknüpfend an das vorausgehende Projekt TechnoSat wurde das dort entwickelte UHF-Kommunikationssystem für den Einsatz im neuen Satelliten TUBIN angepasst. TechnoSat und TUBIN sind Projekte der Technischen Universität Berlin in Zusammenarbeit mit dem DLR.

* Portierung der On-Board-Software des Kommunikationssystems des Satelliten vom proprietären OS (RODOS vom DLR) nach FreeRTOS
* Modellierung des Kommunikationssystems und dessen Protokolle als kommunizierende Automaten in UPPAAL; Model-Checking für Fehlerzustände und Deadlocks
* Wissensvermittlung der Systemarchitektur sowie nützlicher C++11/14/17 Konstrukte im Embedded Kontext an neue Teammitglieder

Eingesetzte Qualifikationen

Embedded Entwicklung / hardwarenahe Entwicklung, Echtzeitbetriebssystem (RTOS), C++, Luft- und Raumfahrttechnik (allg.)

Embedded Entwickler (Werkstudent) (Festanstellung)
Technische Universität Berlin, Berlin
7/2013 – 7/2017 (4 Jahre, 1 Monat)
Luft- und Raumfahrtindustrie
Tätigkeitszeitraum

7/2013 – 7/2017

Tätigkeitsbeschreibung

Eigenständige Entwicklung der On-Board-Software des UHF-Kommunikationssystems für die Plattform des Nanosatelliten TechnoSat (von der Architektur über die Implementierung bis zur Verifikation). Der Satellit wurde an der Technischen Universität Berlin in Zusammenarbeit mit dem DLR entwickelt und hat im Juli 2017 erfolgreich seinen Betrieb aufgenommen.

* Systemdesign Software ECSS Phase C und Verteidigung im Critical Design Review
* Treiberentwicklung für STM32F4-Serie und Semtech Transceiver
* Kanalcodierung (Scrambling, Interleaving, Block-Codes, CRC)
* Strategien zur fortlaufenden Synchronisation der Übertragungsstrecke
* Implementierung der diversen, proprietären Protokollschichten
* Unterstützung bei HF-Tests und Charakterisierung der Antennen in externer Testanlage
* Planung und Durchführung von Freifeldversuchen mit der Referenz-Bodenstation

Darüber hinaus Beiträge zur Entwicklung der Satellitenplattform:

* Entwicklung einer Satelliten-weiten C++ Treiberarchitektur zur vollständigen Entkopplung von Interface, Hardware-Konfiguration und Treiber-Implementierung
* Einführung und Realisierung eines Peer-Review Prozesses basierend auf Git
Implementierung einer Continuous Integration Pipeline basierend auf Jenkins und Docker
* Design und Implementierung eines redundanten, fehlertolleranten, Bootloaders; formale Verifikation mit dem Isabelle/HOL Theorembeweiser
Entwicklung von Wireshark "Packet Dissector Plugins" zur Analyse von proprietären CAN-Nachrichten
* Implementierung eines Unit-Testing Frameworks für verteiltes Testen auf der Zielhardware; Anschluss an den CI-Server
* Implementierung von Thread-aware Debugging für ein proprietäres Betriebssystem (RODOS vom DLR) innerhalb von OpenOCD
* Unterstützung bei der Entwicklung eines Testplans für die Abnahmetests
* Unterstützung der Umwelttests (Radioaktive Strahlung, Thermal/Vakuum)

Eingesetzte Qualifikationen

Echtzeitbetriebssystem (RTOS), Objektorientierte Analyse und Design (OOAD), C++, Gerätetreiber, Mikrocontroller, Kanalkodierung, Embedded Software Engineering

Ausbildung

Technische Informatik
Master of Science
2018
Berlin
Informationstechnik/Vernetzte Systeme
Bachelor of Engineering
2012
Berlin

Über mich

Bevorzugt Projekte in Norddeutschland aber auch gern DACH-weit, wenn nur abschnittsweise Anwesenheit notwendig ist. Grundsätzlich auch EU-weit verfügbar für Kurzprojekte (bis zu 2 Monate).

Weitere Kenntnisse

modernes C++/C für Mikrocontroller (RTOS oder bare-metal), Software- und Treiber-Design, Refactoring/Redesign von Bestandscode, Unit Test, Debugging

Programmiersprachen:

C++ mein Schwerpunkt, C++11 bis C++17, insbesondere auf Embedded Systemen
C insbesondere auf Embedded Systemen
Java bis Version 1.8
Verilog
Bash Shell

Betriebssysteme:

Bare Metal Entwicklung
FreeRTOS auf ARM Cortex M3, M4, A9
Linux
RODOS (vom DLR)

Hardware:

STM32
ARM Cortex M
ARM Cortex A
Atmel AVR
Microchip PIC16
Semtech HF Transceiver
Lattice ECP5 FPGA

Im Umgang mit typischen Laborgerätschaften bin ich vertraut und kann diese teilweise auch bereitstellen:

Oszilloskop
Spektrumanalysator
JTAG Equipment
USB Analyzer (High-Speed, Super-Speed)
Löttechnik
ESD-Arbeitsplatz
Der Umgang mit Schaltplänen, Layouts, Datenblättern ist selbstverständlicher Teil meiner Arbeit.

Arbeitsformen:

Ich habe sowohl Erfahrungen in agilen Teams (Scrum, Pair-Programming, TDD, CI), wie auch erste Erfahrungen in regulativen Umgebungen (Space ECSS Standards) gemacht.

Domänenspezifisches Wissen:

Kanalcodierung
UHF Kommunikation und Modulationstechniken
Satellitentechnik, Kleinstsatelliten

Schnittstellen/Busse:

UART, I2C, SPI, DMX
USB (sowohl Host-seitig mit libusb-1.0, als auch Device-seitig mit Synopsys IP)
CAN

Eingesetzte Werkzeuge:

IDEs: JetBrains CLion, NetBeans, Eclipse, Visual Studio
Compiler: GNU GCC, Clang, Werkzeugentwicklung mit LLVM/Clang Frontend
Debugger: GDB mit OpenOCD
Buildsysteme: GNU Make, CMake, Apache Maven
Groupware: Jira, Confluence, Redmine
Unit Test Frameworks: Catch2, Google Test
Mocking Frameworks: Turtle, FakeIt
Continuous Integration: Jenkins, Docker
Source Code Management: Git, Mercurial, Subversion, gitolite, Gitlab
Dokumentation: Doxygen, LaTeX, Javadoc
UML: Visual Paradigm
Analyzer: Wireshark, TotalPhase Beagle USB 5000, generische Logic Analyzer

Kontakte mit Industriestandards:

IEC 61499: Steuerungen: Funktionsblockmodelle mit ereignisorientiertem Ausführungsmodell
ECSS Normen: Projektmanagement und Softwareentwicklung im Raumfahrtumfeld

Persönliche Daten

Sprache
  • Deutsch (Muttersprache)
  • Englisch (Fließend)
  • Französisch (Grundkenntnisse)
Reisebereitschaft
DACH-Region
Arbeitserlaubnis
  • Europäische Union
Home-Office
bevorzugt
Profilaufrufe
1248
Alter
34
Berufserfahrung
10 Jahre und 9 Monate (seit 07/2013)

Kontaktdaten

Nur registrierte PREMIUM-Mitglieder von freelance.de können Kontaktdaten einsehen.

Jetzt Mitglied werden