Grundlagen der Softwarearchitektur

4 min 2 Abschnitte
Was du nach diesem Konzept kannst 4
  1. Du bist in der Lage, die Bedeutung von Softwarearchitektur für den Projekterfolg zu interpretieren ,

    indem analysiert wird, wie architektonische Entscheidungen Qualitätsmerkmale wie Wartbarkeit, Skalierbarkeit, Sicherheit und Performance maßgeblich beeinflussen und Risiken minimieren.

  2. Du bist in der Lage, das Konzept der Softwarearchitektur zu erklären ,

    indem sie als die grundlegende Organisation eines Systems definiert wird, die sich in seinen Komponenten, deren Beziehungen zueinander und zur Umgebung sowie den Prinzipien, die seinen Entwurf und seine Evolution leiten, manifestiert.

  3. Du bist in der Lage, Softwarearchitektur von Softwareentwurf (Design) zu differenzieren ,

    indem Architektur als die Ebene der strategischen, systemweiten Entscheidungen und Design als die Ebene der taktischen, komponenteninternen Entscheidungen (z.B. Klassenstrukturen, Algorithmen) abgegrenzt wird.

  4. Du bist in der Lage, grundlegende Architekturmuster zu klassifizieren ,

    indem gängige Muster wie Schichtenarchitektur (Layered), Client-Server, Microservices und Event-Driven Architecture anhand ihrer Struktur und typischen Anwendungsfälle unterschieden werden.

Was ist Softwarearchitektur und wie grenzt sie sich vom Design ab?

Das Konzept: Komponenten, Beziehungen und Prinzipien

Stell dir vor, du entwickelst ein neues, komplexes ERP-System für ein großes Unternehmen. Bevor du die erste Zeile Code schreibst, musst du festlegen, wie das System im Großen und Ganzen aufgebaut ist. Genau das ist die Softwarearchitektur: Sie definiert die grundlegende Organisation eines Systems.

Diese Organisation manifestiert sich in drei wesentlichen Aspekten:

  1. Komponenten: Die großen, funktionalen Bausteine des Systems (z. B. eine zentrale Datenbank, ein Webserver, ein Abrechnungsmodul).
  2. Beziehungen: Die Art und Weise, wie diese Bausteine miteinander kommunizieren (z. B. über REST-APIs oder direkte Funktionsaufrufe).
  3. Prinzipien: Die übergeordneten Regeln und Leitlinien, die den Entwurf und die zukünftige Weiterentwicklung des Systems steuern.

Architektur vs. Entwurf (Design): Strategie trifft Taktik

Die Begriffe Architektur und Design werden oft synonym verwendet, unterscheiden sich aber deutlich in ihrer Tragweite:

  • Softwarearchitektur ist die Ebene der strategischen, systemweiten Entscheidungen. Hier legst du fest, dass es ein separates Abrechnungsmodul gibt und wie es mit der Datenbank kommuniziert. Wenn du diese Entscheidungen später ändern musst, treibt das die Total Cost of Ownership (TCO) massiv in die Höhe.
  • Softwareentwurf (Design) ist die Ebene der taktischen, komponenteninternen Entscheidungen. Hier bestimmst du, wie der Code innerhalb des Abrechnungsmoduls strukturiert ist. Du entscheidest über konkrete Klassenstrukturen oder Algorithmen.

Ein anschaulicher Vergleich: Die Architektur plant die Stadt und das Straßennetz, das Design plant den Grundriss der einzelnen Häuser.

Warum ist die Architektur entscheidend und welche Muster gibt es?

Der Einfluss auf den Projekterfolg und die Softwarequalität

Du kennst bereits die Qualitätsmerkmale nach ISO/IEC 25010. Die gewählte Softwarearchitektur entscheidet maßgeblich darüber, ob diese Anforderungen in der Praxis erfüllt werden, und minimiert so fundamentale Projektrisiken:

  • Wartbarkeit: Eine saubere Trennung von Komponenten verhindert, dass eine kleine Code-Änderung das gesamte System lahmlegt.
  • Skalierbarkeit: Die Architektur bestimmt, ob das System bei steigenden Nutzerzahlen einfach durch zusätzliche Hardware (z. B. weitere Server) erweitert werden kann.
  • Performance: Architektonische Entscheidungen über Datenhaltung und Kommunikationswege (synchron vs. asynchron) definieren die Antwortzeiten des Systems.
  • Sicherheit: Ein Konzept wie "Security by Design" verankert den Schutz sensibler Daten tief in der Architektur, indem beispielsweise öffentliche Schnittstellen strikt von internen Datenbanken isoliert werden.

Klassische Architekturmuster: Schichten und Client-Server

Um bewährte Strukturen nicht jedes Mal neu erfinden zu müssen, nutzt die Entwicklung Architekturmuster (Architectural Patterns). Zwei grundlegende Klassiker sind:

  • Schichtenarchitektur (Layered Architecture): Das System wird horizontal in logische Schichten unterteilt (meist Präsentation, Geschäftslogik und Datenhaltung). Jede Schicht darf nur mit der direkt darunterliegenden kommunizieren. Dies eignet sich hervorragend für klassische, monolithische Unternehmensanwendungen.
  • Client-Server-Modell: Die Aufgaben werden im Netzwerk verteilt. Ein zentraler Server stellt Ressourcen oder Dienste bereit, während mehrere Clients (z. B. Webbrowser oder mobile Apps) diese Dienste anfragen und konsumieren.

Moderne Architekturmuster: Microservices und Event-Driven

Für hochskalierbare und komplexe Cloud-Anwendungen werden heute oft modernere Muster eingesetzt:

  • Microservices: Das System wird in viele kleine, unabhängige Dienste zerlegt, die jeweils genau eine fachliche Aufgabe erfüllen. Beispiel: Ein Online-Shop hat einen Service für den Warenkorb und einen für Produktempfehlungen. Fällt der Empfehlungs-Service aus, können Kund:innen trotzdem weiter einkaufen. Teams können diese Services unabhängig voneinander entwickeln und skalieren.
  • Event-Driven Architecture (Ereignisgesteuerte Architektur): Komponenten kommunizieren hier nicht durch direkte Aufrufe, sondern asynchron über Ereignisse (Events). Beispiel: Ein:e Nutzer:in registriert sich. Das System feuert das Event UserRegistered. Ein Mail-Service reagiert darauf und sendet eine Willkommens-Mail, während parallel ein CRM-Service den neuen Kontakt anlegt – völlig entkoppelt voneinander.

Teste dein Wissen

Du startest ein neues Projekt für ein großes ERP-System. Bevor das Team programmiert, wird die Softwarearchitektur entworfen. Was wird dabei primär festgelegt?

Bereit für mehr?

Thema verstanden?

Teste dein Wissen interaktiv in unserer App. 7 Tage kostenlos, dann nur 5 € im Monat.