Modul 10 von 16 · 📖 7 min Lesezeit · ⏱ 30 min gesamt

FI-AE 10 Software-Architektur und Design Patterns

Inhaltsverzeichnis (6 Abschnitte)
  1. Konzepte und Hintergrund
  2. Architektur-Diagramm
  3. Praktische Schritte
  4. Häufige Fallstricke
  5. Weiterführende Ressourancen
  6. Wissens-Check

FI-AE 10 Software-Architektur und Design Patterns

Software-Architektur bildet das Fundament für wartbare, skalierbare und erweiterbare Anwendungen. Dieses Modul vermittelt die grundlegenden Architekturmuster und Design Patterns, die in der professionellen Softwareentwicklung unverzichtbar sind. Sie lernen, wie Sie komplexe Systeme in überschaubare Komponenten strukturieren und bewährte Lösungen wiederkehrender Probleme implementieren.

Die erworbenen Kenntnisse ermöglichen es Ihnen, fundierte Architekturentscheidungen zu treffen, die Wartbarkeit und Erweiterbarkeit von Anwendungen zu verbessern sowie die Kommunikation in Entwicklerteams zu optimieren. Sie werden in der Lage sein, passende Muster für spezifische Anforderungen zu identifizieren und effektiv anzuwenden.

Konzepte und Hintergrund

Schichtenarchitektur
Ein Architekturmuster, das eine Anwendung in horizontale Schichten mit definierten Schnittstellen unterteilt. Typische Schichten sind Präsentation, Geschäftslogik und Datenzugriff. Jede Schiente kommuniziert nur mit der direkt darunter- oder darüberliegenden Schicht.
Hexagonale Architektur
Ein Architekturmuster, bei dem die Kernanwendung (Hexagon) von technischen Details wie Datenbanken, Benutzeroberflächen oder externen Diensten isoliert ist. Die Kommunikation erfolgt über Ports und Adapter, was hohe Testbarkeit und Flexibilität ermöglicht.
MVC vs. MVVM
Model-View-Controller (MVC) trennt die Anwendung in Datenmodell, Benutzeroberfläche und Steuerlogik. Model-View-ViewModel (MVVM) erweitert dieses Konzept durch ein ViewModel, das die Daten für die View aufbereitet und die Kommunikation zwischen Model und View entkoppelt.
Design Patterns
Bewährte Lösungsansätze für wiederkehrende Probleme der Softwareentwicklung. Sie stellen wiederverwendbare Vorlagen dar, die die Kommunikation zwischen Entwicklern erleichtern und die Qualität des Codes verbessern.

Architektur-Diagramm

flowchart TB
    subgraph Präsentationsschicht
        UI[Benutzeroberfläche]
    end
    
    subgraph Geschäftslogik
        Controller[Controller]
        Service[Service-Schicht]
        Domain[Domain-Model]
    end
    
    subgraph Datenzugriffsschicht
        Repository[Repository]
        DB[Datenbank]
    end
    
    UI --> Controller
    Controller --> Service
    Service --> Domain
    Service --> Repository
    Repository --> DB

Praktische Schritte

  1. Analysieren Sie die Anforderungen und identifizieren Sie die Kernfunktionalitäten der Anwendung. Dies bildet die Grundlage für die Architekturplanung.
  2. Entwerfen Sie die Schichtenstruktur und definieren Sie die Schnittstellen zwischen den Schichten. Verwenden Sie dabei klare Verantwortlichkeiten für jede Schicht.
  3. Implementieren Sie das Domain-Model mit den Kernentitäten und Geschäftsregeln. Dies sollte unabhängig von technischen Details wie Datenbanken oder UI-Frameworks bleiben.
  4. Erstellen Sie die Service-Schicht, die die Geschäftslogik kapselt und die Kommunikation zwischen Domain-Model und Datenzugriffsschicht orchestriert.
  5. Implementieren Sie das Repository-Muster, um den Datenzugriff zu abstrahieren und die Geschäftslogik von konkreten Datenbanktechnologien zu entkoppeln.
  6. Wenden Sie ausgewählte Design Patterns an, um wiederkehrende Probleme zu lösen. Beispielsweise das Singleton-Pattern für Konfigurationsobjekte oder das Observer-Pattern für ereignisgesteuerte Kommunikation.
  7. Implementieren Sie die Controller-Komponenten, die Benutzeranfragen entgegennehmen, die Service-Schicht aufrufen und die passende View auswählen.
  8. Erstellen Sie die Benutzeroberfläche als dünne Schicht, die ausschließlich für die Darstellung zuständig ist und die Geschäftslogik nicht direkt aufruft.
  9. Schreiben Sie Unit-Tests für jede Komponente, insbesondere für das Domain-Model und die Service-Schicht, um die Korrektheit der Geschäftslogik sicherzustellen.
  10. Integrieren Sie die Anwendung in die Zielumgebung und führen Sie Integrationstests durch, um die korrekte Zusammenarbeit der Komponenten zu überprüfen.

Häufige Fallstricke

Weiterführende Ressourancen

Wissens-Check

Vier Fragen zur Selbstkontrolle. Klicken Sie jede Frage an, um die richtige Antwort und Erklärung zu sehen.

Was ist ein Hauptmerkmal der Schichtenarchitektur?
  • A) Jede Schicht kann mit jeder anderen Schicht kommunizieren
  • B) Die Anwendung wird in horizontale Schichten mit definierten Schnittstellen unterteilt
  • C) Es gibt nur drei Schichten: Frontend, Backend und Datenbank
  • D) Schichten können dynamisch zur Laufzeit hinzugefügt werden

Richtige Antwort: B. Die Schichtenarchitektur unterteilt die Anwendung in horizontale Schichten mit definierten Schnittstellen, während die anderen Optionen falsche oder unvollständige Beschreibungen enthalten.

Was ist der Hauptunterschied zwischen MVC und MVVM?
  • A) MVC hat vier Komponenten, MVVM nur drei
  • B) MVVM enthält ein ViewModel, das die Daten für die View aufbereitet
  • C)</strong) MVC wird nur für Webanwendungen, MVVM nur für Desktop-Anwendungen verwendet</li>
  • D) In MVC kommuniziert die View direkt mit dem Model, in MVVM nicht

Richtige Antwort: B. MVVM erweitert MVC durch ein ViewModel, das die Daten für die View aufbereitet und die Kommunikation zwischen Model und View entkoppelt, während die anderen Aussagen unzutreffend sind.

Was ist ein zentrales Prinzip der hexagonalen Architektur?
  • A) Die Anwendung besteht aus sechs gleichwertigen Modulen
  • B) Die Kernanwendung ist von technischen Details isoliert
  • C)</strong) Die Kommunikation erfolgt ausschließlich über XML-Dateien</li>
  • D) Die Architektur erfordert zwingend sechs verschiedene Datenbanken

Richtige Antwort: B. Die hexagonale Architektur isoliert die Kernanwendung von technischen Details wie Datenbanken oder Benutzeroberflächen, während die anderen Optionen falsche Annahmen enthalten.

Was ist der Hauptvorteil der Verwendung von Design Patterns?
  • A)</strong) Sie garantieren immer die beste Performance</li>
  • B) Sie stellen bewährte Lösungsansätze für wiederkehrende Probleme dar
  • C) Sie ermöglichen es, ohne jegliche Dokumentation auszukommen
  • D) Sie reduzieren die Entwicklungskosten immer um mindestens 50%

Richtige Antwort: B. Design Patterns sind bewährte Lösungsansätze für wiederkehrende Probleme, die die Kommunikation zwischen Entwicklern erleichtern und die Codequalität verbessern, während die anderen Aussagen übertrieben oder unzutreffend sind.