Softwarearchitekturen in der Informatik
Bereits seit der Softwarekrise der 1960er Jahre ist klar: Software wird immer umfangreicher, teurer und aufwändiger. Gleichzeitig muss Korrektheit, Erweiterbarkeit und Wartbarkeit gewährleistet werden.
Denn Unternehmen setzen für ihre Datenverarbeitung, für das Prozessmanagement und für die Automatisierung ihrer Arbeitsschritte auf Softwarelösungen und verlassen sich darauf, dass diese auch funktionieren.
Um den Anforderungen trotz der wachsenden Komplexität gerecht zu werden, gibt es verschiedene Ansätze. Die Konzeption von Softwarearchitekturen ist ein Ansatz, der Planung und Veranschaulichung in den Vordergrund stellt.
Was sind Softwarearchitekturen?
Softwarearchitekturen beschreiben die einzelnen Komponenten eines Softwaresystems und ihre Beziehungen zueinander. Jedes Softwareelement wird genau einer Architekturkomponente zugeordnet und das Gesamtsystem in separate Module zerlegt.
Manche Grundprinzipien für den Aufbau einer Architektur treten dabei immer wieder auf, sodass sich über die Jahrzehnte seit der Softwarekrise verschiedene Entwurfs- oder Architekturmuster etabliert haben.
Ein Softwarearchitekturmuster ist ein universeller Lösungsansatz, der unabhängig von der Programmiersprache auf wiederkehrende Probleme und Designfragen angewendet werden kann.
Wie ist eine Softwarearchitektur aufgebaut?
Eine Softwarearchitektur oder ein Entwurfsmuster besteht klassischerweise aus einzelnen Komponenten oder Modulen. Für jede Komponente werden die Verantwortlichkeiten (Responsibilities) und Beziehungen zu anderen Komponenten (Collaborations) festgelegt. Diesen Aufbau kann man mit CRC (Class-Responsibility-Collaboration)-Karten veranschaulichen.
Wie detailliert die Beschreibung der Systemkomponenten ist, ist variabel: In der gröbsten Form werden die Funktionen und Beziehungen nur in natürlicher Sprache definiert, auf Aussagen zur Implementierung verzichtet man allerdings. Theorie und Grundverständnis sind vorerst wichtiger als Überlegungen zur späteren Umsetzung.
Mit Klassenhierarchien, Modellen oder UML-Diagrammen wird ein Grobentwurf erweitert und konkretisiert. Durch die Vorgabe von Implementierungsrichtlinien und -ideen oder einer Abbildung der nötigen Softwareteile auf eine Hardware- oder Rahmenstruktur, können sehr praxisnahe und feingranulare Architekturen entworfen werden. Ein solcher Detailgrad ist aber nicht unbedingt notwendig. Oft genügt eine Mischung aus Beschreibungen und formalen Modellen.
Was bringen Softwarearchitekturen?
Indem man vor der Implementierung eines Softwaresystems eine Softwarearchitektur erstellt, ist man gezwungen, sich mit grundlegenden Designfragen auseinander zu setzen.
Das vermeidet, dass fehlerhaftes oder inkonsistentes Design in späteren Schritten der Softwareentwicklung den Prozess verlangsamt. Modelle und Übersichten helfen außerdem dabei, die Software besser zu verstehen und vereinfachen Kommunikation und Koordination zwischen verschiedenen Teams und Entwicklern.
So ist stets klar, welches Modul für welche Aufgabe verantwortlich ist, und zu welchen anderen Komponenten eine Schnittstelle besteht. Das hilft nicht nur während der Entwicklung, sondern auch bei Erweiterung und Wartung des Softwaresystems. Fehlerquellen oder Ansatzpunkte für die Umsetzung neuer Anforderungen können schnell identifiziert werden.
Anhand einer Softwarearchitektur kann die Entwicklung eines einzelnen Projektes also besser organisiert, in Schritte unterteilt und nachvollzogen werden. Dabei kann man wiederkehrende Muster entdecken und formalisieren. So etablieren sich einheitliche Standards, die die Softwareentwicklung grundlegend und langfristig voran treiben.
Artikel im Bereich Softwarearchitekturen in der Informatik
- Model View Controller (MVC)
- Model View Presenter (MVP)
- Model View ViewModel (MVVM)