Neben der reinen Programmierung zählt die Softwarearchitektur zu den zentralen Aspekten eines Softwareprojektes und entscheidet nicht selten über Erfolg oder Scheitern. Nachdem ein Softwareprojekt die Phase des Proof-of-Concept verlassen hat, ist der späteste Zeitpunkt, eine flexible und tragfähige Softwarearchitektur zu planen und umzusetzen. Dabei spielen nicht nur technische Aspekte sondern auch die Stuktur des Entwicklerteams sowie die Gesamtstruktur des Unternehmens eine oft unterschätzte Rolle.
Dr. Hornecker unterstützt den Entwurf und die Einführung von tragfähigen Softwarearchitekturen durch Beratung, Schulung sowie Training-on-the-job. Insbesondere folgende Konzepte kommen hierbei zum Einsatz:
Der typische Vertreter einer Plug-in-Architektur ist das Softwaresystem Eclipse. Derzeit über 44 Millionen Lösungen auf Basis von Eclipse demonstrieren in beeindruckender Weise die Möglichkeiten dieses Architekturansatzes. Auch moderne Browsersysteme basieren mehr und mehr auf dieser Softwarearchitektur. Bei einer Plug-in-Architektur werden die einzelnen Funktionalitäten über standardisierte Schnittstellen gekoppelt. Dies kann man sich ähnlich zu einer klassischen PC-Architektur vorstellen, bei der einzelne Funktionalitäten (Grafikkarte, Netzkarte) über Hardware-Schnittstellen bereitgestellt werden. Ebenso wie bei der Hardware einzelne Komponenten ausgetauscht oder erweitert werden können und so das Gesamtkonzept ausgebaut werden kann, ist dies auch mit den einzelnen Modulen einer Plug-in-Architektur möglich. Somit lassen sich die Entwicklung einzelner Komponenten auch auslagern, die notwendige Kommunikation zwischen Entwicklern wird reduziert und die Gesamtproduktivität steigt.
Microservice-Architekturen setzen das Konzept der Plug-ins in der Bereich der Webanwendungen fort. Module sind hier typischerweise in Containern gekapselt und die Schnittstellen sind über REST-APIs realisiert. Der Betrieb der Anwendung auf einem Kubernetes-Cluster ermöglicht neben einer flexiblen Wartung und Erweiterung zusätzlich eine gute Skalierung der einzelnen Komponenten.
Mit webbasierten Funktionen wird ein weiterer Abstraktionsgrad der Plug-in-Architekturen erreicht. Hier ist die zu Grunde liegende Infrastruktur komplett abstrahiert, im Vordergrund steht nur noch die Funktion selbst, die über eine Web-API bereitgestellt wird. Auf dieser Ebene können Funktionen (Module, Plug-ins) in jeder Programmiersprache geschrieben und auf einer beliebigen Plattform bereitgestellt werden. Viele der großen Cloud-Anbieter bieten bereits diesen Level an Abstraktion, der es ermöglicht, sich komplett auf die Entwicklung der Funktion zu konzentrieren, ohne sich um das darunterliegende Management der Infrastruktur kümmern zu müssen.