Schlagwörter
Skills
- Objektorientierte Programmierung
- Softwarearchitektur: Konzeption und Implementierung von Bibliotheken und Frameworks
- Thread- und Systemprogrammierung
- Web-, Anwendungs- und Datenbankentwicklung
- Komplexe Algorithmen und Datenstrukturen
- Graphische Benutzeroberflächen
- Migration / Portierung / Integration / Test
- Werkzeugentwicklung: Parser, Interpreter, Compiler, Programmgeneratoren
- Technische Dokumentation, Coaching, Training
Methoden:
- Objektorientiertes Design, UML, Entwurfsmuster
- Softwaretechnik: Refactoring, Unit Testing
- Generative Softwareentwicklung (Templates)
- Sprachdesign: Domain Specific Languages, Model Driven Architecture
- Funktionale (seiteneffektfreie) Programmierung
- Relationale Datenmodellierung, ORM, Normalisierung
Architekturen:
- Verteilte Systeme
- Embedded Systems
- Mehrschichtenarchitekturen
Programmiersprachen:
- Objektorientierte Sprachen: C++, Java, C#
- Funktionale Sprachen: ML, OCaml, Scheme
- Dynamische Sprachen: Python, Ruby, Perl
- Relationale Sprachen: SQL, PL/SQL
- Prozedurale Sprachen: C, Pascal, Visual Basic 6
- Deklarative Sprachen: HTML, CSS, XML (Schema, DTD, XPath, ...)
- Maschinensprachen: Z80, M68000
- Spezialsprachen: UML, Make, Jam, IDL, Tex
Betriebssysteme:
- Unix Familie: Linux, QNX, Solaris, IRIX
- Windows NT Familie, Windows CE
- Android
Bibliotheken:
- STL, Rogue Wave, pthreads, cppUnit, pyunit, SQLAlchemy, log4j, libxml, u.a.
Frameworks:
- JDK 1.6
- .Net 3 (Grundlagen)
- Ruby on Rails (Grundlagen)
GUI Toolkits:
- Qt 4.3, MFC, Tk
Viele gängige Entwicklungswerkzeuge:
- Eclipse, Visual Studio, Together, Vim, Emacs, u.a.
Konfigurationsmanagement:
- Perforce, Subversion, CVS, Bazaar
Analysewerkzeuge:
- Purify, PC-Lint, BoundsChecker, gprof, doxygen
Bugtracking:
- Trac, Bugtracker
Debugger:
- gdb, DDD, WinDBG
Projektrollen:
- Entwickler
- Architekt
- Reviewer
- Trainer
- Coach
Ich bin ein erfahrener Softwareentwickler mit schneller Auffassungsgabe und hohem Qualitätsanspruch.
Projekthistorie
- Implementierung von neuen Features auf Mikrocontroller-Ebene.
- Interrupt-Programmierung zur Überwachung und Auswertung von Gerätesensoren.
- Erweiterung des proprietären Betriebssystems des Geräts.
- Implementierung einer Bibliothek für State-Machines für die C Programmiersprache.
- Codeanalyse-Werkzeug zur Generierung von Zustandsdiagrammen.
- Auswertung von Messwerten mit Python-Skripten.
- Erstellung, Durchführung und Dokumentierung von Systemtests.
- Refactoring und Unit Testing von Legacy Code.
- Erweiterung der Anwendungs-API (REST).
- Konzeption und Implementierung von Datenbankmigrationen.
- Implementierung einer Schnittstelle zu Kundensystemen zur Übermittlung von Statusänderungen der Baustellensignalisierung auf XML Basis (Datex II).
- Implementierung einer automatischen Schemavalidierung von JSON Nachrichten des MQTT Bus.
- Implementierung einer MQTT Simulation für eine Testumgebung.
- Überarbeitung des Benutzerberechtigungssystems.
- Erstellung von Benutzerschnittstellen.
- Refactoring, Unit Testing, Dokumentation.
Produktverifikation einer Insulinpumpe zur Diabetes-Therapie:
- Anpassung von Spezifikation und Implementierung der Systemtests an neue Pumpen-Features.
- Wartung, Anpassung und Erweiterung der Testsysteme und Werkzeugumgebung an neue Versionen der Pumpensoftware und -hardware.
- Durchführung und Überwachung einer Vielzahl von Verifizierungen neuer Versionen der Pumpensoftware.
- Auswertung, Erfassung und Bearbeitung nachgewiesener Diskrepanzen zur Produktspezifikation auf Simulator- oder Produktseite.
- Erstellung von Testprotokollen gemäß den Dokumentationsanforderungen für internationale medizinische Produkte.
Migration der Testskriptumgebung auf eine neue Qualitätsmanagementsoftware:
- Entwicklung von Software für die automatisierte Migration.
- Durchführung und Verifikation.
Migration der Quellcodeumgebung auf eine neue Versionsverwaltungssoftware:
- Konzeption und Erstellung von Build-Skripten.
- CruiseControl-Konfigurationen.
Weiterentwicklung der Systemtestumgebung für eine neue Generation von Insulinpumpen:
- Überarbeitung des Testkonzepts anhand von Lessons Learned.
- Umfassendes Redesign und Refactoring des Testframeworks.
- Entwicklung eines Code Generators in Python zur automatisierten Erzeugung der Schnittstelle zu Systemtestklassen anhand von Spezifikationen in XML.
- Portierung des Frameworks auf eine neue Hardware- und Software-Umgebung.
- Konzeption und Implementierung einer Job-Queue in Python zur Verteilung von Tests auf einen Pool von Testmaschinen.
- Training und Coaching von Entwicklern für die neue Framework-Generation.
- Implementierung und Pflege von Systemtests.
Produktverifikation einer Insulinpumpe zur Diabetes-Therapie:
- Implementierung eines Simulators der graphischen Benutzeroberfläche des neuen Produkts.
- Erweiterung des Simulator-Frameworks und der Testumgebung um neue Funktionalität.
- Implementierung verschiedener Code Generatoren in Python für die Auswertung XML spezifizierter Schnittstellen und Benutzeroberflächen.
- Erweiterung des Ant Build-Prozesses mit Javascipt und JSON Konfigurationsdateien zur Integration der Code Generierungsphase.
- Entwicklung einer Vielzahl von automatisierten Systemtests nach Testfallspezifikation.
- Durchführung und Überwachung der Testläufe.
- Erfassung, Auswertung und Bearbeitung nachgewiesener Diskrepanzen zur Produktspezifikation auf Simulator- oder Produktseite.
- Erstellung von Testprotokollen gemäß den Dokumentationsanforderungen für internationale medizinische Produkte.
Migration, Redesign und Erweiterung einer historisch gewachsenen Werkzeugsammlung für die Auswertung statistischer Simulationen von optischen Systemen in einem Rechencluster (LSF):
- Portierung von TCL nach Python.
- Modularisierung durch Refactoring und Redesign zu Bibliotheken für verbesserte Erweiterbarkeit und Wiederverwendbarkeit.
- Einführung qualitätssichernder Maßnahmen durch automatisierte Modultests und umfassende Dokumentation.
Einführung neuer Konzepte zur Flexibilisierung der Architektur:
- Datenhaltung in relationalen Datenbanken.
- Entwicklung von Domain Specific Languages zu Konfigurationszwecken.
- Erweiterung um neue Funktionalitäten.
Betreuung einer Einführung der Programmiersprache Python als abteilungsweite Standardsprache:
- Konzeption und Durchführung der Schulung von Mitarbeitern.
- Begleitendes Coaching während der Umstellung.
- Beratung bezüglich Vorgehensweisen und Werkzeugauswahl.
- Konzeption und Umsetzung eines Bugtracking-Systems.
Entwicklung eines Werkzeugs für die automatisierte Erzeugung von Reports aus Simulationsergebnissen in Form von PDF-Dateien:
- Integration in bestehende Prozesse.
- Portierung (Windows CE nach QNX), Fehlerberichtigung und Optimierung einer Bibliothek für Interprozesskommunikation.
- Implementierung einer Abstraktionsschicht für betriebssystemspezifische Dienste als Grundlage einer Simulations- und Testumgebung für die Produkte des Unternehmens.
- Implementierung eines Code Generators in Python nach C++ für eine Beschreibungssprache für Modulschnittstellen.
- Implementierung eines konfigurierbaren Zustandsautomaten für die Koordination eines Sprachdialogsystems und verschiedener Benutzereingabegeräte.
Entwicklung einer neuen Generation eines Frameworks für graphische Benutzeroberflächen:
- Mitarbeit am Architekturkonzept.
- Konzeption einer deklarativen Beschreibungssprache für Benutzeroberflächen.
- Implementierung eines Code Generators für die Beschreibungssprache.
- Konzeption und Implementierung einer Komponentenarchitektur für Anwendungslogik.
- Implementierung von Prototypen.
- Erstellung von umfangreicher Dokumentation.
- Unit Testing.
- Konzeption und Implementierung einer Bibliothek für einfache und effiziente Kommunikation und Ereignisübermittlung zwischen Anwendungskomponenten (vergleichbar QT Signals/Slots).
- Konzeption und Implementierung eines konfigurierbaren und flexibel einsetzbaren Toolkits von Oberflächenelementen für das neue Framework.
- Konzeption und Leitung von Schulungen für die neue Framework-Generation (auch international).
- Coaching von Projektentwicklern in der Verwendung des neuen Frameworks.
Implementierung einer Anwendung für die Verwaltung von Zugriffsrechten auf die Kundenstammdatenbank der T-Online.
Verschiedene Anwendungen zur automatisierten Synchronisation von Datenbanken der T-Online: Netzwerkprogrammierung im firmeninternen Netzwerk für verteilte Anwendungen.
Schnittstellensoftware in Python für die Kommunikation mit Partnerunternehmen für eine große medizinische Spenderdatenbank (DKMS):
- Konzeption und Implementierung.
- Automatisierte Auswertung von Anfragen der Partner.
- Automatisierte Erzeugung und verschlüsselte Übermittlung von Nachrichten an die Partnerunternehmen.
- Integration des Systems in die bestehenden Prozesse.
- Unterstützung verschiedener Datenformate und Übertragungsarten der beteiligten Unternehmen.
- Konzeption einer Beschreibungssprache für Datenformate zur erleichterten Anpassung des Systems an neue Anforderungen.
Entwicklung von Software zur Auswertung von großen Datenmengen von CD für eine medizinische Datenbank.
Projekt für mobile Datenerfassung für eine Abteilung der Universitätsklinik Dresden:
- Mitarbeit am Architekturkonzept.
- Konzeption und Implementierung der Benutzeroberfläche zur Dateneingabe auf Basis von Windows CE Handhelds.
- Implementierung der Software zur Synchronisation von zentraler Datenbank und mobilen Datenbanken.
- Erstellung des relationalen Datenmodells.
Entwicklung eines Informationssystems zur Verwaltung von Patientendaten für die Universitätsklinik Dresden:
- Mitarbeit am Architekturkonzept.
- Konzeption und Implementierung von Benutzeroberflächen.
- Erstellung von relationalen Datenmodellen.
Entwicklung von Software zur Abfrage und Auswertung von Daten eines medizinischen Analysegeräts.