Clean Architecture für Langlebige Softwareprojekte

In der vielfältigen Welt der Softwarearchitektur gibt es zahlreiche Ansätze, doch Clean Architecture steht für mich an erster Stelle. Dieser Ansatz, wie von Robert C. Martin in seinem Buch „Clean Architecture – Das Praxis-Handbuch für gutes Softwaredesign“ beschrieben, wird in diesem Beitrag genauer beleuchtet. Besonderes Augenmerk liegt darauf, warum die Reservierung äusserer Schichten für technologische Details von entscheidender Bedeutung ist.

Robert C. Martin: „Uncle Bob“ in der Softwareentwicklung

Robert C. Martin, auch bekannt als „Uncle Bob“, nimmt eine herausragende Rolle in der Softwareentwicklung ein. Seine Erfahrung als Softwareingenieur und seine Beiträge zum Manifesto for Agile Software Development sowie den SOLID-Prinzipien prägen die Branche. Uncle Bob hebt die Bedeutung klarer Strukturen, sauberen Codes und einer agilen Denkweise hervor, wie sie in seinen wegweisenden Büchern und Beiträgen zu finden sind.

Schichten der Clean Architecture
Abbildung der Schichten der Clean Architecture (Bildquelle: Niko Reichardt / erstellt mit draw.io)

Die Vier Hauptschichten

Clean Architecture besteht aus mindestens vier Schichten, bei denen die Quellcode-Abhängigkeiten nach innen gerichtet sind. Der Abstraktionsgrad erhöht sich mit jedem weiteren Schritt nach innen.

  1. Präsentationsschicht (Presentation):
    Hier findet die Benutzerschnittstelle statt. Dies kann eine Webanwendung, eine mobile App oder eine andere Form der Benutzerinteraktion sein. Die Präsentationsschicht ist darauf ausgerichtet, Benutzereingaben entgegenzunehmen, sie an die Anwendungsschicht weiterzuleiten und die Ergebnisse auf verständliche Weise darzustellen.
  2. Infrastrukturschicht (Infrastructure):
    Diese Schicht kümmert sich um technische Details und externe Abhängigkeiten. Datenbankzugriffe, externe APIs und andere technologische Integrationen werden hier behandelt. Es ist wichtig, dass diese Schicht die Domänenschicht nicht beeinflusst, um eine klare Trennung zwischen Geschäftslogik und technischer Implementierung zu gewährleisten.
  3. Anwendungsschicht (Application):
    Diese Schicht ist für die Implementierung der Anwendungsfälle verantwortlich. Hier findet die Orchestrierung der Geschäftsregeln statt, um bestimmte Funktionalitäten der Anwendung zu ermöglichen.
  4. Domänenschicht (Domain):
    In dieser Schicht dreht sich alles um die Kernlogik der Anwendung. Hier werden die Kerndatenstrukturen und -regeln definiert, die unabhängig von externen Einflüssen existieren. Wichtig ist, dass keine Daten von aussen in die Domäne gelangen und der Code in dieser Schicht ausschliesslich im Memory läuft, um die Unabhängigkeit und Reinhaltung der Fachlogik zu gewährleisten.

Die Wichtigkeit der klaren Trennung

Die Entscheidung, äussere Schichten für technologische Details und Frameworks vorzusehen, hat entscheidende Vorteile. Sie ermöglicht eine klare Trennung zwischen der Geschäftslogik und ihrer technischen Implementierung. Dies trägt dazu bei, dass Änderungen in der Technologie nicht die Kerngeschäftsregeln beeinträchtigen.

Klare Strukturen für Wartbarkeit

Die Schichtenstruktur erleichtert die Code-Wartung erheblich. Änderungen in einer Schicht haben minimale Auswirkungen auf andere, was eine problemlose Codepflege über die Zeit ermöglicht. Die modulare Struktur erlaubt einfache Skalierbarkeit, während die lose Kopplung zwischen den Schichten Flexibilität bietet. Klare Strukturen und die Trennung von Verantwortlichkeiten fördern die Produktivität der Entwickler.

Kontrolle und Verwaltung der Komplexität

Clean Architecture setzt klare Grenzen und Abhängigkeiten zwischen den Schichten, um die Komplexität zu kontrollieren. Dies erleichtert die Wartung und Skalierung von Softwareprojekten.

Projekte, die von der Clean Architecture profitieren

  • Anwendung von Domain-Driven Design (DDD):
    Die Clean Architecture und DDD sind ein starkes Duo, das sich hervorragend ergänzt.
  • Verwaltung komplexer Geschäftslogik:
    Die Clean Architecture bietet eine strukturierte Herangehensweise zur Organisation komplexer Logik.
  • Förderung der Testbarkeit:
    Mit der Clean Architecture wird die Testbarkeit von Software erheblich verbessert.
  • Integration von Designrichtlinien:
    Die Clean Architecture ermöglicht eine nahtlose Einbindung von Designrichtlinien in Ihre Projekte.

Meine Erfahrung mit Clean Architecture

Seit ich Clean Architecture in meinen Projekten nutze, erlebe ich eine erhebliche Verbesserung im Verständnis des Datenflusses und bei der Identifikation von Use Cases. Die klare Struktur ermöglicht es mir, auch nach längeren Pausen leicht wieder in das Projekt einzusteigen, ein Vorteil, den ich in vorherigen Projekten ohne Clean Architecture nicht erlebt habe. Diese Erfahrung betont die nachhaltigen Vorteile einer gut organisierten Architektur.

 

Hinweis: Dieser Blog-Beitrag wurde mit Unterstützung des Sprachmodells ChatGPT erstellt.

Beitrag teilen

Niko Reichardt

Niko Reichardt ist Application Manager bei der Komax und bloggt aus dem Unterricht des CAS Modern Software Engineering & Development.

Alle Beiträge ansehen von Niko Reichardt →

Schreibe einen Kommentar