Deutschland: Nur deutschsprachiger bzw. englischsprachiger Raum
Berlin oder Remote bevorzugt.
Umfeld: Windows/Ubuntu-basierte Jenkins-Buildumgebung unter Gradle, BitBucket, Artifactory
Bereitstellung einer definierten Python-Umgebung (automatische Installation des benötigten Pythons, Erzeugung von PyPi-Packages, Selektion und Download von PyPi-Packages)
Erstellung von Jenkins-Pipelines zur Entwicklung und Anwendung von Python Paketen (PyLint-Test, Unit-Test)
Erstellung von Python-Skripten zur Erkennung von Konfigurationsfehlern in AsciiDoc basierten XML-Dateien und Darstellung von Fehlern im Jenkins Junit-Ausgabeformat
Erstellung von Skripten und Pipelines zur Erzeugung und Aktualisierung von CodeBeamer Items (zum Beispiel zum Import von Inhalten aus Autosar-arxml Dateien)
Erstellung und Konfiguration von Virtuellen Maschinen (Virtual-Box Ubuntu)
Umfeld: Windows-basierte Jenkins-Buildumgebung unter SVN zur Erzeugung von Embedded Software
Bereitstellung einer definierten Python-Umgebung (automatische Installation des benötigten Pythons, Erzeugung von PyPi-Packages, Selektion und Download von PyPi-Packages)
Erstellung von Python-Skripten zur Unterstützung von Software-Lieferungen (Export von SVN-Dateien entsprechend JSON-Konfigurationsdateien, Analyse der korrekten Anwendung von SVN-Branches und Ausgabe von Abweichungen sowie Statistiken)
Installation der neuesten VisualSvn Server Software auf eine neue virtuelle Maschine
Migration der Daten des alten VisualSvn Servers auf den neuen VisualSvn Server
Installation einer Jenkins 3.x Master und einer Jenkins Slave Instanz auf getrennten virtuellen Maschinen als Windows-Services.
Ermittlung und Dokumentation aller Anforderungen benötigter Jenkins-Mechanismen und Ableitung der zu verwendenden Software und ihre Installation/Konfiguration.
Installation eines Nexus Artefakt-Manage-Servers und Export von Jenkins Artifakten auf Nexus
Migration alter Jenkins 2.x-Builds auf das neue Jenkins 3.x System
Entwicklung generischer Jenkins-Pipelines (Groovy Jenkinsfile)
SW-Integration durch Selektion von Komponenten-Releases (SVN Externals) mittels dynamischer Jenkins Kontrollelementen
Einbindung von versionierter Toolchain, Quality-Gates (Lint, Ceedling Unit-Test, Software-Test)
Umstellung des Systems von Cmake 2.x auf Cmake 3.x
Ermittlung von Anforderungen und Toolchain-Inkompatibilitäten
Administration eines Jira-Projekts zum Management der Migrationsabläufe
Erstellung von Cmake-Regeln zur Gewährleistung der Zukunftssicherheit der Cmake-Konfiguration
Parsing von Cmake-Konfigurationen unter Python 3.x zur Erkennung und Ausgabe von Konfigurationsfehlern (Violations) und Konfigurationsschwächen (Deviations)
Umsetzung moderner Cmake Features und Standards
Automatische Erkennung unbenutzter Cmake-Konfigurationen
Analyse alter Build-Skripte und Entfernung unbenötigter Dateien aus den Git-Repositories
Erweiterung der Python Skripte zur Sicherstellung der Build-Reproduzierbarkeit für Langzeitwartung und Software-Releases
Verbesserung der vorhandenen Python-Scripte (Dokumentation und Kodierung nach PEP-8, Umstellung auf Klassen, Verbesserung der Usability durch Docopt und Tcl-Tk GUI
Erstellung eines Python GUI-Frameworks mit CSS/HTML basierter Online-Hilfe und Adaption der Machine-Expert basierten Anwenderführung unter Subversion für Beckhoff SPS unter Git.
Erstellung und Administration eines Jira-Projekts zur Verwaltung der Migrationsschritte
Unterstützung von Projekten basierend auf unterschiedlichen gewachsenen Buildsystemen zur Cross-Compilation von Windows auf die ARM Zielhardware zur Flüssigkeitsanalyse.
Entwicklung eines Panoramic Viewing System („L2G8970“ + „L2G8975“ für PSA Group) basierend auf einem Embedded Zwei-Prozessor System „Renesas BSPv2 ADAS“ mit Autosar und QNX.
Embedded SW-Entwicklung von Notrufsystemen (Valeo „LTENAD“) für Openembedded Yocto basiertes Linux mit Qualcom 9x15/9x28/9x40 Chipsätzen unter Ubuntu
Embedded SW-Entwicklung für Navigationssysteme (VW „MIB 3“) unter Ubuntu VM und Git
Windows 7, Embedded SW-Entwicklung C++, Plattformen ENET & KNX-RF, 30 Projekte je 4-10 Build-Konfigurationen, 3 Firmen (Hausautomatisierung/Beleuchtungstechnik)
Konfigurations-Management
Build-Management:
Erstellung von Skripten für generische und projektspezifische Build-Abläufe; Durchführung von Testbuilds zur Vermeidung von Problemen während der Software-Integation; Kontinuierliche Verbesserung des Ablaufverhaltens der Software-Builds (Parallelität, Geschwindigkeit, Fehlerweiterleitung, Fortsetzung); Start und Überwachung/Fortsetzung von Builds (z.B. an Samstagen/Sonntagen oder am späten Abend bzw. mittels Fernzugang von Zuhause); Berücksichtigung von speziellen Betriebssystemproblemen wie maximalen Pfad-Tiefen; Erzeugung automatischer Emails (bei Build-Fehlern, bei Erzeugung wesentlicher Build-Artefakte, bei Fertigstellung des Builds); Unterstützung von Continous Integration (automatisch gestartete Builds)
Integrations-Management:
Zusammenführen von Config-Specs und Hinzufügen von Bugfixes; Bereinigung von Config-Specs; Durchführung lokaler Builds; Durchführung von Testbuilds; Prüfung der Protokolldateien und Build-Artefakte; Verwaltung offizieller Softwarebuilds und Testbuilds in Jira. Bereitstellung von Informationen an das Test-Team; Unterstützung der Software-Stabilisierung durch Config-Spec Branching (Modul-Branching und Kopieren der Patches und dessen Verifizierung)
Tooling-Management und Support:
Planung der Feature-Entwicklung; Priorisierung von Bugfixes; Sicherstellung der Funktionalität der (12) Build-PCs; Sicherstellung der Langzeit-Reproduzierbarkeit von Builds; Kontinuierliche Messung der Geschwindigkeit einzelner Build-Schritte und der Arbeitskopie-Ladezeiten der Entwickler-PCs; Verwendung von Jira-Tickets zur Koordinierung der Tool-Entwicklung und Feature-Anfragen der Entwickler (etwa 2 pro Tag); Kontinuierliche Erhöhung der Code-Qualität; Überwachung von Servern und Clients (Ressourcen, Software-Versionen, Ablaufzeiten); Erarbeitung von Zukunftskonzepten (Build-Farm, Parallele Builds, Build-Dienste usw.); Berücksichtigung von Systemausfällen in Hardware und Software (Bereitstellung von Rückfallebenen); Lizenzmanagement;
Tool-Entwicklung:
Bereitstellung von Skripten und Konfigurationsdateien für Arbeitsabläufe der Entwickler, Qualitätsmanager, Release-Manager, IT, Build-Manager, Deployer und Integratoren (u.a. generierten Webseiten). Verwendung von Feature-Branches zur Verringerung des Risikos bei Patch-Lieferungen; Implementierung von Caching-Mechanismen zur Erhöhung des Netzwerkdurchsatzes. Entwicklung und Dokumentation eines Skript-Frameworks mit ungefähr 130.000 Skript-Zeilen + Zeilen von Konfigurationsdateien (davon ungefähr 70 Kommando-Zeilen Skripts und 15 GUIs). Umstellung auf ActiveState Perl 5.14.2 + TCL 8.5. Entwicklung generischer auch eigenständig betreibbarer Gui-Plugins; Erzeugung Perl-unabhängiger Perl-Exe Dateien mittels PerlApp (für make-framework und Zulieferer); Erstellung umfangreicher Online-Hilfen (einschließlich Installationsanweisungen, abgesicherter Namensräume für Umgebungsvariablen etc.)
Liste entwickelter GUIs:
Build-Starter, Build-Monitor, Build-Manager (Status, Fortsetzung), Config-Spec Vergleich (Webseite mit Dateivergleich), Test-Tower Management (Build-Upload Management), Approval-Sheet Generator (erzeugt Excel-Seiten mit Jira-Infos), Conig-Spec GUI, Config-Spec Ladezeiten/Undo-Manager, SVN Repository Manager, Server-Monitor, Client-Admin, Client-Monitor, SVN Version-Tree (ähnlich ClearCase mit Merge-Info), Config-Spec/Arbeitskopie Grep.
Liste entwickelter Kommandozeilen-Skripte:
Build-Sequenz-Interpreter; Datenverschlüsselung; Übersetzerwarnungen in generisches Format für Excel CSV umwandeln; Trace/Debug Meldungen Parsen und Ressourcen ablegen (reduziert Speicherbedarf der Hardware und beschleunigt die ausgeführte Software); Rekursiver Vergleich oder Export von Verzeichnissen; Management persistenter Build-Konfigurationen und ID; Vergleich der Rechnerkonfiguration mit der Referenzmaschine; Zugriff auf tiefe Pfade unter DOS; Erzeugung von und Zugriff auf Jira-Tickets; Analyse von Map-Dateien (Generierung von Excel-Seiten); Erzeugung kompletter Software-Builds (einschließlich laden der Arbeitskopien); nachträgliche Änderung von Tooltip/Version-Infos (dlls + exe); Erstellung von Release-Webseiten und Index-Seiten; Automatischer Mailversand; Bereitstellung und Ermittlung von Software-Paketversionen (für Release-Notes); Exportieren von Zug-CDs auf die Testtower; Backup und Wiederherstellung von Verzeichnissen der Arbeitskopien (verhindert das Entwickler unarchivierte Quelldateien verlieren); Ermittlung aller Branches und Versionen von Dateien einer Config-Spec bzw. Arbeitskopie; Erzeugung von Branches (Berücksichtigung von Syntax und User-ID); Berücksichtigung von Rollen; Laden von Arbeitskopien; Verifikation von Arbeitskopien; Repository Mapping; Anwender-ID Management; Server Administration; Server Prozess (SVN Proxy + Batchmode-Unterstützung); Server Zugriffs-Management; Server-Caching (Cleanup, Management); Server Replikations-Management; Kommando-Wrapper (Queue); Wrapper-Management;
Software und Entwickler-Schnittstellen zur Prozessüberwachung wurden im laufendem Projekt eingeführt. Deshalb war es notwendig die Produktivität der Prozessentwickler der Entwicklerteams der Konsortiumspartner der unterschiedlichen Software-Segmente auch bei unvermittelt auftretenden Problemen, Neuanforderungen oder Fehlern durch Support in Form von kurzfristiger Lieferung von Bug-Fixes bzw. Publikation von sofort umsetzbaren Workarounds maximal zu gewährleisten. Ein entsprechend aussagekräftiges Logging der Aktionen der beteiligten Prozesse war aufgrund der üblicherweise in Ereignis-basierten Systemen auftretenden Reproduktionsproblemen hierzu unumgänglich. Unterstützend wurden Skripts zur Ausgabe und Laufzeitkonfiguration der Protokollmeldungen nach Problemkategorien entwickelt.
Aufgrund der Verwendung etlicher Datenbank-Nutzer mit bestehenden Querbeziehungen und Aufteilung von Datenmodell-Verantwortlichkeiten auf einzelne Konsortiumspartner, sowie zur Gewährleistung eines sauberen Datenmodells, mußte jedem DB-Import ein Wiederaufsetzen des Datenmodells mittels der DM-Skripts erfolgen. Durch Oracle-Import wurden nur die Daten selbst importiert. Bestimmte Datenbereiche der DB waren zu sichern bzw. durch den folgenden Import zu erweitern. Die Konzepte wurden unter meiner Leitung vielfach mit mehreren DB-Entwicklern überarbeitet.
Informatik-Studium an der TU-Berlin:
Deutschland: Nur deutschsprachiger bzw. englischsprachiger Raum
Berlin oder Remote bevorzugt.
Umfeld: Windows/Ubuntu-basierte Jenkins-Buildumgebung unter Gradle, BitBucket, Artifactory
Bereitstellung einer definierten Python-Umgebung (automatische Installation des benötigten Pythons, Erzeugung von PyPi-Packages, Selektion und Download von PyPi-Packages)
Erstellung von Jenkins-Pipelines zur Entwicklung und Anwendung von Python Paketen (PyLint-Test, Unit-Test)
Erstellung von Python-Skripten zur Erkennung von Konfigurationsfehlern in AsciiDoc basierten XML-Dateien und Darstellung von Fehlern im Jenkins Junit-Ausgabeformat
Erstellung von Skripten und Pipelines zur Erzeugung und Aktualisierung von CodeBeamer Items (zum Beispiel zum Import von Inhalten aus Autosar-arxml Dateien)
Erstellung und Konfiguration von Virtuellen Maschinen (Virtual-Box Ubuntu)
Umfeld: Windows-basierte Jenkins-Buildumgebung unter SVN zur Erzeugung von Embedded Software
Bereitstellung einer definierten Python-Umgebung (automatische Installation des benötigten Pythons, Erzeugung von PyPi-Packages, Selektion und Download von PyPi-Packages)
Erstellung von Python-Skripten zur Unterstützung von Software-Lieferungen (Export von SVN-Dateien entsprechend JSON-Konfigurationsdateien, Analyse der korrekten Anwendung von SVN-Branches und Ausgabe von Abweichungen sowie Statistiken)
Installation der neuesten VisualSvn Server Software auf eine neue virtuelle Maschine
Migration der Daten des alten VisualSvn Servers auf den neuen VisualSvn Server
Installation einer Jenkins 3.x Master und einer Jenkins Slave Instanz auf getrennten virtuellen Maschinen als Windows-Services.
Ermittlung und Dokumentation aller Anforderungen benötigter Jenkins-Mechanismen und Ableitung der zu verwendenden Software und ihre Installation/Konfiguration.
Installation eines Nexus Artefakt-Manage-Servers und Export von Jenkins Artifakten auf Nexus
Migration alter Jenkins 2.x-Builds auf das neue Jenkins 3.x System
Entwicklung generischer Jenkins-Pipelines (Groovy Jenkinsfile)
SW-Integration durch Selektion von Komponenten-Releases (SVN Externals) mittels dynamischer Jenkins Kontrollelementen
Einbindung von versionierter Toolchain, Quality-Gates (Lint, Ceedling Unit-Test, Software-Test)
Umstellung des Systems von Cmake 2.x auf Cmake 3.x
Ermittlung von Anforderungen und Toolchain-Inkompatibilitäten
Administration eines Jira-Projekts zum Management der Migrationsabläufe
Erstellung von Cmake-Regeln zur Gewährleistung der Zukunftssicherheit der Cmake-Konfiguration
Parsing von Cmake-Konfigurationen unter Python 3.x zur Erkennung und Ausgabe von Konfigurationsfehlern (Violations) und Konfigurationsschwächen (Deviations)
Umsetzung moderner Cmake Features und Standards
Automatische Erkennung unbenutzter Cmake-Konfigurationen
Analyse alter Build-Skripte und Entfernung unbenötigter Dateien aus den Git-Repositories
Erweiterung der Python Skripte zur Sicherstellung der Build-Reproduzierbarkeit für Langzeitwartung und Software-Releases
Verbesserung der vorhandenen Python-Scripte (Dokumentation und Kodierung nach PEP-8, Umstellung auf Klassen, Verbesserung der Usability durch Docopt und Tcl-Tk GUI
Erstellung eines Python GUI-Frameworks mit CSS/HTML basierter Online-Hilfe und Adaption der Machine-Expert basierten Anwenderführung unter Subversion für Beckhoff SPS unter Git.
Erstellung und Administration eines Jira-Projekts zur Verwaltung der Migrationsschritte
Unterstützung von Projekten basierend auf unterschiedlichen gewachsenen Buildsystemen zur Cross-Compilation von Windows auf die ARM Zielhardware zur Flüssigkeitsanalyse.
Entwicklung eines Panoramic Viewing System („L2G8970“ + „L2G8975“ für PSA Group) basierend auf einem Embedded Zwei-Prozessor System „Renesas BSPv2 ADAS“ mit Autosar und QNX.
Embedded SW-Entwicklung von Notrufsystemen (Valeo „LTENAD“) für Openembedded Yocto basiertes Linux mit Qualcom 9x15/9x28/9x40 Chipsätzen unter Ubuntu
Embedded SW-Entwicklung für Navigationssysteme (VW „MIB 3“) unter Ubuntu VM und Git
Windows 7, Embedded SW-Entwicklung C++, Plattformen ENET & KNX-RF, 30 Projekte je 4-10 Build-Konfigurationen, 3 Firmen (Hausautomatisierung/Beleuchtungstechnik)
Konfigurations-Management
Build-Management:
Erstellung von Skripten für generische und projektspezifische Build-Abläufe; Durchführung von Testbuilds zur Vermeidung von Problemen während der Software-Integation; Kontinuierliche Verbesserung des Ablaufverhaltens der Software-Builds (Parallelität, Geschwindigkeit, Fehlerweiterleitung, Fortsetzung); Start und Überwachung/Fortsetzung von Builds (z.B. an Samstagen/Sonntagen oder am späten Abend bzw. mittels Fernzugang von Zuhause); Berücksichtigung von speziellen Betriebssystemproblemen wie maximalen Pfad-Tiefen; Erzeugung automatischer Emails (bei Build-Fehlern, bei Erzeugung wesentlicher Build-Artefakte, bei Fertigstellung des Builds); Unterstützung von Continous Integration (automatisch gestartete Builds)
Integrations-Management:
Zusammenführen von Config-Specs und Hinzufügen von Bugfixes; Bereinigung von Config-Specs; Durchführung lokaler Builds; Durchführung von Testbuilds; Prüfung der Protokolldateien und Build-Artefakte; Verwaltung offizieller Softwarebuilds und Testbuilds in Jira. Bereitstellung von Informationen an das Test-Team; Unterstützung der Software-Stabilisierung durch Config-Spec Branching (Modul-Branching und Kopieren der Patches und dessen Verifizierung)
Tooling-Management und Support:
Planung der Feature-Entwicklung; Priorisierung von Bugfixes; Sicherstellung der Funktionalität der (12) Build-PCs; Sicherstellung der Langzeit-Reproduzierbarkeit von Builds; Kontinuierliche Messung der Geschwindigkeit einzelner Build-Schritte und der Arbeitskopie-Ladezeiten der Entwickler-PCs; Verwendung von Jira-Tickets zur Koordinierung der Tool-Entwicklung und Feature-Anfragen der Entwickler (etwa 2 pro Tag); Kontinuierliche Erhöhung der Code-Qualität; Überwachung von Servern und Clients (Ressourcen, Software-Versionen, Ablaufzeiten); Erarbeitung von Zukunftskonzepten (Build-Farm, Parallele Builds, Build-Dienste usw.); Berücksichtigung von Systemausfällen in Hardware und Software (Bereitstellung von Rückfallebenen); Lizenzmanagement;
Tool-Entwicklung:
Bereitstellung von Skripten und Konfigurationsdateien für Arbeitsabläufe der Entwickler, Qualitätsmanager, Release-Manager, IT, Build-Manager, Deployer und Integratoren (u.a. generierten Webseiten). Verwendung von Feature-Branches zur Verringerung des Risikos bei Patch-Lieferungen; Implementierung von Caching-Mechanismen zur Erhöhung des Netzwerkdurchsatzes. Entwicklung und Dokumentation eines Skript-Frameworks mit ungefähr 130.000 Skript-Zeilen + Zeilen von Konfigurationsdateien (davon ungefähr 70 Kommando-Zeilen Skripts und 15 GUIs). Umstellung auf ActiveState Perl 5.14.2 + TCL 8.5. Entwicklung generischer auch eigenständig betreibbarer Gui-Plugins; Erzeugung Perl-unabhängiger Perl-Exe Dateien mittels PerlApp (für make-framework und Zulieferer); Erstellung umfangreicher Online-Hilfen (einschließlich Installationsanweisungen, abgesicherter Namensräume für Umgebungsvariablen etc.)
Liste entwickelter GUIs:
Build-Starter, Build-Monitor, Build-Manager (Status, Fortsetzung), Config-Spec Vergleich (Webseite mit Dateivergleich), Test-Tower Management (Build-Upload Management), Approval-Sheet Generator (erzeugt Excel-Seiten mit Jira-Infos), Conig-Spec GUI, Config-Spec Ladezeiten/Undo-Manager, SVN Repository Manager, Server-Monitor, Client-Admin, Client-Monitor, SVN Version-Tree (ähnlich ClearCase mit Merge-Info), Config-Spec/Arbeitskopie Grep.
Liste entwickelter Kommandozeilen-Skripte:
Build-Sequenz-Interpreter; Datenverschlüsselung; Übersetzerwarnungen in generisches Format für Excel CSV umwandeln; Trace/Debug Meldungen Parsen und Ressourcen ablegen (reduziert Speicherbedarf der Hardware und beschleunigt die ausgeführte Software); Rekursiver Vergleich oder Export von Verzeichnissen; Management persistenter Build-Konfigurationen und ID; Vergleich der Rechnerkonfiguration mit der Referenzmaschine; Zugriff auf tiefe Pfade unter DOS; Erzeugung von und Zugriff auf Jira-Tickets; Analyse von Map-Dateien (Generierung von Excel-Seiten); Erzeugung kompletter Software-Builds (einschließlich laden der Arbeitskopien); nachträgliche Änderung von Tooltip/Version-Infos (dlls + exe); Erstellung von Release-Webseiten und Index-Seiten; Automatischer Mailversand; Bereitstellung und Ermittlung von Software-Paketversionen (für Release-Notes); Exportieren von Zug-CDs auf die Testtower; Backup und Wiederherstellung von Verzeichnissen der Arbeitskopien (verhindert das Entwickler unarchivierte Quelldateien verlieren); Ermittlung aller Branches und Versionen von Dateien einer Config-Spec bzw. Arbeitskopie; Erzeugung von Branches (Berücksichtigung von Syntax und User-ID); Berücksichtigung von Rollen; Laden von Arbeitskopien; Verifikation von Arbeitskopien; Repository Mapping; Anwender-ID Management; Server Administration; Server Prozess (SVN Proxy + Batchmode-Unterstützung); Server Zugriffs-Management; Server-Caching (Cleanup, Management); Server Replikations-Management; Kommando-Wrapper (Queue); Wrapper-Management;
Software und Entwickler-Schnittstellen zur Prozessüberwachung wurden im laufendem Projekt eingeführt. Deshalb war es notwendig die Produktivität der Prozessentwickler der Entwicklerteams der Konsortiumspartner der unterschiedlichen Software-Segmente auch bei unvermittelt auftretenden Problemen, Neuanforderungen oder Fehlern durch Support in Form von kurzfristiger Lieferung von Bug-Fixes bzw. Publikation von sofort umsetzbaren Workarounds maximal zu gewährleisten. Ein entsprechend aussagekräftiges Logging der Aktionen der beteiligten Prozesse war aufgrund der üblicherweise in Ereignis-basierten Systemen auftretenden Reproduktionsproblemen hierzu unumgänglich. Unterstützend wurden Skripts zur Ausgabe und Laufzeitkonfiguration der Protokollmeldungen nach Problemkategorien entwickelt.
Aufgrund der Verwendung etlicher Datenbank-Nutzer mit bestehenden Querbeziehungen und Aufteilung von Datenmodell-Verantwortlichkeiten auf einzelne Konsortiumspartner, sowie zur Gewährleistung eines sauberen Datenmodells, mußte jedem DB-Import ein Wiederaufsetzen des Datenmodells mittels der DM-Skripts erfolgen. Durch Oracle-Import wurden nur die Daten selbst importiert. Bestimmte Datenbereiche der DB waren zu sichern bzw. durch den folgenden Import zu erweitern. Die Konzepte wurden unter meiner Leitung vielfach mit mehreren DB-Entwicklern überarbeitet.
Informatik-Studium an der TU-Berlin: