Logo von nextlevels
Projekt anfragen
Zurück zum Wiki

Softwarearchitektur

Zuletzt aktualisiert am

Kurz erklärt

Die Softwarearchitektur beschreibt die grundlegende Struktur eines Softwaresystems: aus welchen Bausteinen es besteht, wie diese zusammenarbeiten und nach welchen Prinzipien es entworfen und weiterentwickelt wird. Sie umfasst die Entscheidungen, die später nur mit großem Aufwand zu ändern sind.

Die Norm ISO/IEC/IEEE 42010 definiert Architektur in ihrer Fassung von 2011 als die grundlegenden Konzepte oder Eigenschaften eines Systems in seiner Umgebung, verkörpert in seinen Elementen, deren Beziehungen und den Prinzipien seines Entwurfs und seiner Weiterentwicklung.

Ob „Softwarearchitektur“ oder „Software-Architektur“: Gemeint ist dasselbe. Entscheidend ist, dass Architektur kein Diagramm ist, sondern eine Sammlung begründeter Entscheidungen. Das Diagramm macht sie nur sichtbar. Wer Software entwickeln lassen will, sollte diese Entscheidungen kennen, weil sie Kosten, Tempo und Wartbarkeit über Jahre bestimmen.

Wozu Softwarearchitektur dient

Funktionen lassen sich in fast jeder Struktur bauen. Die Architektur entscheidet darüber, wie gut das System die Qualitätsanforderungen erfüllt, die in der Anforderungsanalyse festgelegt wurden: Performanz unter Last, Sicherheit, Verfügbarkeit, Wartbarkeit und Erweiterbarkeit. Die Norm ISO/IEC 25010 fasst diese Merkmale in einem Qualitätsmodell zusammen.

  • Komplexität beherrschen: Klare Bausteine mit klaren Grenzen erlauben es, ein großes System in Teilen zu verstehen.
  • Teams entkoppeln: Mehrere Teams können parallel arbeiten, wenn die Schnittstellen zwischen ihren Bereichen stabil sind.
  • Änderungen ermöglichen: Gute Architektur hält die Teile flexibel, die sich voraussichtlich ändern, etwa Zahlungsanbieter oder Oberflächen.
  • Risiken früh sichtbar machen: Engpässe, Single Points of Failure und Abhängigkeiten zu Drittsystemen werden erkannt, bevor sie im Betrieb auffallen.

Jede Architekturentscheidung ist ein Kompromiss. Mehr Verteilung bringt unabhängige Skalierung, aber auch Netzwerkfehler und aufwendigeren Betrieb. Mehr Abstraktion bringt Austauschbarkeit, aber auch mehr Code. Die Aufgabe der Architektur ist, diese Abwägungen bewusst und nachvollziehbar zu treffen.

Architektur, die mit deinem Geschäft wächst

Von der Anforderung zur tragfähigen Struktur – mit dokumentierten Entscheidungen statt Bauchgefühl.

Systemarchitektur ansehen

Bekannte Architekturmuster

Architekturmuster sind bewährte Lösungen für wiederkehrende Strukturprobleme. Die meisten realen Systeme kombinieren mehrere davon.

MusterKernideePasst gut, wennPreis dafür
SchichtenarchitekturPräsentation, Fachlogik und Datenzugriff liegen in getrennten Schichten; jede nutzt nur die darunterKlassische Geschäftsanwendungen mit überschaubarer FachlogikFachliche Änderungen ziehen sich oft durch alle Schichten
Modularer MonolithEine deploybare Anwendung, intern in fachliche Module mit klaren Schnittstellen geteiltEin Team oder wenige Teams, fachliche Grenzen noch in BewegungModulgrenzen brauchen Disziplin, sonst entsteht ein unstrukturierter Monolith
MicroservicesViele kleine, fachlich abgegrenzte Dienste, die getrennt deployt werdenMehrere Teams, stark unterschiedliche Last je FachbereichVerteilte Fehler, Datenkonsistenz und Betrieb werden deutlich aufwendiger
Ereignisgesteuert (Event-driven)Bausteine reagieren auf Ereignisse („Bestellung angelegt“), statt sich direkt aufzurufenViele Systeme müssen auf dieselben Vorgänge reagieren, lose Kopplung ist wichtigAbläufe sind schwerer nachzuvollziehen und zu testen
Hexagonal (Ports and Adapters)Die Fachlogik steht im Zentrum; Datenbank, APIs und Oberflächen docken über Adapter anLanglebige Fachlogik, Infrastruktur soll austauschbar und testbar bleibenMehr Schnittstellen und Abbildungscode

Die Microservices-Architektur ist dabei kein Qualitätsmerkmal an sich. Für viele mittelständische Vorhaben ist ein modularer Monolith die bessere Wahl, weil er die fachliche Trennung bietet, ohne den Betriebsaufwand verteilter Systeme. Wo fachliche Grenzen verlaufen, klärt Domain-driven Design mit dem Konzept des Bounded Context. Die hexagonale Architektur geht auf Alistair Cockburn zurück; verwandte Ansätze sind die Onion Architecture und die Clean Architecture.

Softwarearchitektur vs. Systemarchitektur

Die Begriffe überschneiden sich, haben aber einen unterschiedlichen Zuschnitt. Die Systemarchitektur betrachtet das Gesamtsystem: Software, Hardware, Netzwerke, Infrastruktur und die Verbindungen zu anderen Systemen. Die Softwarearchitektur betrachtet die innere Struktur der Software selbst. Daneben stehen das feinere Softwaredesign und die übergreifende Unternehmensarchitektur.

EbeneBetrachtetTypische Fragen
UnternehmensarchitekturGeschäftsprozesse, Anwendungslandschaft, Daten und IT des ganzen UnternehmensWelches System ist führend für Kundendaten? Wo gibt es Doppelungen?
SystemarchitekturEin Gesamtsystem aus Software, Hardware, Netz und BetriebWelche Server, Cloud-Dienste und Schnittstellen gibt es? Wie fließen Daten zwischen Shop, ERP und PIM?
SoftwarearchitekturStruktur einer AnwendungWelche Module gibt es, wie kommunizieren sie, wo liegt die Fachlogik?
SoftwaredesignKlassen, Funktionen und Datenstrukturen innerhalb eines ModulsWie ist dieser Baustein intern aufgebaut?

In der Praxis hängen die Ebenen eng zusammen: Ob ein Dienst in der Cloud getrennt skalieren kann, ist eine Frage der Systemarchitektur, setzt aber eine Softwarearchitektur voraus, die diesen Dienst überhaupt abtrennt. Wie wir beide Ebenen gemeinsam planen, beschreibt unsere Leistung Systemarchitektur und Design.

Beispiel: Architektur einer B2B-Bestellplattform

Ein Händler will ein Kundenportal bauen, in dem Geschäftskunden mit eigenen Preisen bestellen. Preise, Bestände und Kundenkonten liegen im ERP, Produktdaten im PIM. Eine mögliche Softwarearchitektur:

  • Modularer Monolith als Kern: Module für Katalog, Preise, Warenkorb, Bestellungen und Kundenkonten mit klaren internen Schnittstellen. Ein Team kann alles in einer Codebasis weiterentwickeln.
  • Hexagonaler Zuschnitt der Fachlogik: Die Preislogik kennt das ERP nicht direkt, sondern nur einen „Preis-Port“. Ein Adapter übersetzt auf die ERP-Schnittstelle. Wird das ERP später ersetzt, bleibt die Fachlogik unverändert.
  • Ereignisse für die Integration: Eine bestätigte Bestellung erzeugt das Ereignis „Bestellung angelegt“. ERP-Export, Bestätigungs-E-Mail und Statistik reagieren unabhängig darauf. Fällt das ERP kurz aus, gehen keine Bestellungen verloren, weil die Ereignisse in einer Warteschlange liegen.
  • Gezielte Abtrennung: Nur die Produktsuche, die deutlich mehr Last trägt als der Rest, läuft als eigener Dienst. Alles andere bleibt im Monolithen.

Das Beispiel zeigt die Grundregel: Muster werden nach Anforderungen gewählt, nicht nach Mode. Eine reine Microservice-Landschaft hätte hier mehr Betriebsaufwand erzeugt, ohne ein konkretes Problem zu lösen.

Architektur dokumentieren und entscheiden

ISO/IEC/IEEE 42010 beschreibt, wie eine Architekturbeschreibung aufgebaut ist: Sie richtet sich an Stakeholder mit bestimmten Anliegen (Concerns) und zeigt das System in verschiedenen Sichten. Verbreitete Hilfsmittel in der Praxis:

  • arc42: eine Gliederungsvorlage für Architekturdokumentation von Gernot Starke und Peter Hruschka, im deutschsprachigen Raum weit verbreitet.
  • C4-Modell: vier Zoomstufen von Kontext über Container und Komponenten bis zum Code, entwickelt von Simon Brown.
  • Architecture Decision Records (ADR): kurze Notizen je Entscheidung mit Kontext, Entscheidung und Konsequenzen. Sie beantworten Jahre später die Frage, warum etwas so gebaut wurde.

Architektur ist außerdem nie fertig. Systeme wachsen, Anforderungen ändern sich, und ohne Pflege erodiert die Struktur. Regelmäßiges Refactoring hält sie gesund. Ist die Struktur bereits verloren, wird aus dem System schnell Legacy-Software, deren Modernisierung deutlich mehr kostet als laufende Pflege. Das Gesetz von Conway (Melvin Conway, 1968) erinnert zudem daran, dass Systeme die Kommunikationsstrukturen der Organisation abbilden, die sie baut. Architektur und Teamzuschnitt gehören deshalb zusammen.

FAQ zur Softwarearchitektur

Was versteht man unter Softwarearchitektur?
Softwarearchitektur ist die grundlegende Struktur eines Softwaresystems: seine Bausteine, deren Beziehungen und die Prinzipien, nach denen es entworfen und weiterentwickelt wird. Sie umfasst vor allem die Entscheidungen, die sich später nur schwer ändern lassen.

Welche Architekturmuster gibt es?
Verbreitet sind die Schichtenarchitektur, der modulare Monolith, Microservices, die ereignisgesteuerte Architektur, die hexagonale Architektur (Ports and Adapters), Client-Server und Pipes and Filters. Reale Systeme kombinieren meist mehrere Muster.

Was ist der Unterschied zwischen Softwarearchitektur und Systemarchitektur?
Die Systemarchitektur beschreibt ein Gesamtsystem aus Software, Hardware, Netzwerk und Betrieb sowie seine Verbindungen zu anderen Systemen. Die Softwarearchitektur beschreibt die innere Struktur der Software selbst, also Module, Schnittstellen und die Verteilung der Fachlogik.

Was macht ein Softwarearchitekt?
Ein Softwarearchitekt leitet aus Anforderungen die Struktur eines Systems ab, wägt Alternativen ab, dokumentiert Entscheidungen und achtet darauf, dass die Umsetzung die Struktur nicht unterläuft. In kleineren Teams übernehmen erfahrene Entwickler diese Rolle mit.

Wann sollte man über die Architektur entscheiden?
Die grundlegenden Entscheidungen, etwa Monolith oder verteilte Dienste, Datenhaltung und Integrationsweg, gehören an den Anfang, sobald die wichtigsten Qualitätsanforderungen bekannt sind. Details können und sollten später fallen, wenn mehr Wissen vorliegt. Auch in agilen Projekten braucht es diesen Rahmen.

Weiterführend: Welche Architektur sich für Backends und APIs bewährt, zeigt unser Beitrag zu Enterprise-Backend-Architektur und API-Design.

Weiterführende Artikel