Flexible Softwarearchitektur: Clean- und Hexagonal-Architektur verstehen und anwenden


Online-Workshop am 08.12.2022, ca. 9–16 Uhr
Flexible Geschäftsmodelle benötigen flexible Softwarearchitekturen. Setzt die Softwarearchitektur die Bedürfnisse der fachlichen Domäne optimal um, dann können entscheidende Wettbewerbsvorteile erzielt werden. Neben einer fachlichen Ausrichtung der Softwarearchitektur werden Architekturmuster benötigt, die "Design for Change" und weiterführend "Flexibility by Design" unterstützen.

Die Clean- und Hexagonal-Architektur versprechen eine Entkopplung der fachlichen Domäne von infrastrukturellen Aspekten. Dies ist die Basis für solch flexible Softwarearchitekturen. Die zu Grunde liegende Idee von Ports und Adapters ist mächtig und hilft, technische, fachliche sowie organisatorische Flexibilität in der Anwendungsarchitektur zu realisieren.

Im Workshop lernst du Flexibilitätsanforderungen aus der Praxis kennen und erhältst die Möglichkeit, Anforderungen aus ihrem Projektkontext mithilfe von Qualitätsszenarien zu beschreiben. Weiter folgt eine detaillierte Einführung in die Clean- und Hexagonal-Architektur. Gemeinsam wollen wir verstehen, wann der Einsatz dieser Architekturmuster zielführend ist und wie du diese auf der technischen Ebene realisierst.

Im Workshop werden wir Codebeispiele in Java analysieren und Vorteile, Nachteile sowie Kompromisse diskutieren. Mit Übungen wird das Verständnis für die technische Umsetzung vertieft. Du erhältst alle Trainingsmaterialien und Beispiele und hast die Möglichkeit, die Thematik hinterher im Selbststudium zu vertiefen.

Vorkenntnisse

Teilnehmende sollten die im Nachfolgenden genannten Kenntnisse und/oder Erfahrung mitbringen. Insbesondere bilden substanzielle praktische Erfahrungen aus der Softwareentwicklung im Team eine wichtige Voraussetzung zum Verständnis des vermittelten Lernstoffes und für ein erfolgreiches Training:

  • Mehr als 18 Monate praktische Erfahrung in arbeitsteiliger Softwareentwicklung (d. h. in Teams), erworben durch Programmierung unterschiedlicher Systeme außerhalb der Ausbildung.
  • Kenntnisse und praktische Erfahrung in mindestens einer höheren Programmiersprache (z.B. Java, Kotlin oder C#) und der Konzepte Modularisierung (Pakete, Namensräume) sowie Dependency Injection.
  • Empfehlenswert sind einschlägige Erfahrungen in der Modellierung von fachlichen Anforderungen und Datenstrukturen z.B. mit UML (Klassen-, Paket-, Komponenten- und Sequenzdiagramme) sowie in der Konzeption der Architektur von mittleren und großen IT-Systemen

Lernziele

  • Die Probleme der Schichtenarchitektur erkennen und ihnen mittels Ports & Adapter sowie fachlicher Modularisierung begegnen können
  • Die Clean und Hexagonal Architecture implementieren sowie diese Architekturmuster unterscheiden können
  • Unterschiedliche Modularisierungsvarianten und Mappingsstrategien für die Clean und Hexagonal Architecture anwenden können
  • Fortgeschrittene Entwurfsmuster zur Abbildung von Beziehungen zwischen fachlichen Bausteinen sowie für besonderen Flexibilitätsbedarf
  • Die Möglichkeit, Ihre Architektur mittels Architekturtest kontinuierlich zu testen und das Mindset der Evolutionären Architektur anzuwenden

Agenda

Was ist Flexible Softwarearchitektur?
  • Drei Elemente pragmatischer Softwarearchitektur
  • Flexibilität als Qualitätsmerkmal für Softwarearchitektur
Die Idee des Ports & Adapters Architekturmuster
  • Die Probleme der Layered Architecture
  • Das Ports-and-Adapters-Architekturmuster als Basismuster für die Clean und Hexagonal Architecture
Hexagonal Architecture
  • Die Anwendung von Ports und Adapters mittels Dependency Inversion in der Hexagonal Architecture
  • Klassen-Stereotypen der Hexagonal Architecture
  • Call-Flow durch die Hexagonal Architecture
  • Coding Session
Clean Architecture
  • Die Anwendung von Ports und Adapters mittels Dependency Inversion in der Clean Architecture
  • Klassen-Stereotypen der Clean Architecture
  • Call-Flow durch die Clean Architecture
  • Coding Session
Modularisierung
  • Modularisierungsvarianten für fachliche Module
  • Coding Session Modularisierungsvariante architektonisch ausdrucksstark
Mapping-Strategien für Adapters
  • Mapping Strategien für Adapters
  • Mappings mit Third-Party-Bibliotheken vereinfachen
  • Coding Session Two-Way-Mapping-Strategie
Beziehungen zwischen fachlichen Modulen
  • Entwurfsmuster für Beziehungen zwischen fachlichen Modulen
  • Coding Session
Flexibilitätsanforderungen und Flexibilitätsmuster
  • Qualitätsanforderungen für Flexibilität
  • Muster für Flexibilitätsanforderungen
  • Coding Session
Evolutionäre Architektur
  • Das Mindset der Evolutionären Architektur
  • Fitness Functions für die Clean und Hexagonal Architecture
  • Coding Session
Das Training wird begleitet von Programmierübungen in Java, Kotlin und C#. Ziel ist es, die Implementierung der Hexagonal und Clean Architecture zu verstehen. Frameworks und Third-Party-Bibliotheken werden hier vernachlässigt.

 

Technische Anforderungen

Jeder Teilnehmer trägt dafür Sorge, dass zwei Konsolen-Programme in der Sprache und IDE seiner Wahl im Workshop erstellt und für die Programmierübungen verwendet werden können.
Die Teilnehmer sollten in der Lage sein, an ihrem PC ein Java Konsolen Programm zu erstellen mit der Entwicklungsumgebung ihrer Wahl. Alternativ das gleiche für C#.
Die Teilnehmer sollten außerdem in der Lage sein eine Demo-Anwendung von GitHub zu clonen oder als Zip-File herunterzuladen

Der Workshop wird über Zoom durchgeführt.

Speaker

 

Matthias Eschhold
Matthias Eschhold ist Softwarearchitekt und Managing Consulting bei der Novatec Consulting GmbH. Als Domain-Driven-Design-Enthusiast und Experte für strukturelle Softwarequalität unterstützt er Kunden bei der Architekturarbeit in der agilen Anwendungsentwicklung und schreibt hierbei selbst aktiv Code. Matthias verfügt über fundierte Erfahrung in der Ausgestaltung der Softwarearchitektur für Produktlinien, die er bei namhaften Kunden zum Einsatz bringt. Außerdem vermittelt er als Trainer oder im Rahmen des iSAQB Foundation Level sein Architekturwissen.

betterCode-Newsletter

Du möchtest über die betterCode() Clean Architecture und weitere unserer betterCode()-Events auf dem Laufenden gehalten werden?

 

Anmelden