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