software-entwicklung.peter-nebe.de
Softwareengineering
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.
Tätigkeitsschwerpunkte:
- 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
- Verwendung von Werkzeugen zur Versionsverwaltung und zur Erzeugung der Softwaredokumentation aus Sourcecode-Kommentaren, Erstellung von Spezifikationen zu Schnittstellen und Datenformaten sowie von Anwenderdokumentation