Evolutionäre Architekturmuster mit Clean und Hexagonal Architecture

2 Tage

Dates and Booking

Description

Dieses Training hilft dir, Probleme der Schichtenarchitektur zu erkennen und vermittelt anhand vieler Übungen einen Werkzeugkasten, mit dem du Clean und Hexagonal Architecture implementieren kannst. Nach dem Training kannst du deine Architektur kontinuierlich testen und das Mindset der Evolutionären Architektur anwenden.

Immer wieder stolpern wir bei der Erweiterung von Bestandssystemen über starre Architekturen, die sich nicht erweitern lassen oder gar über gewachsene Systeme, die keine zur Architektur passende Erweiterung mehr zulassen, da gar keine Architektur mehr erkennbar ist. In der Konsequenz kann sich auch das zugrunde liegende Geschäftsmodell nicht mehr weiterentwickeln. Doch wie können wir diesem Szenario vorbeugen? Wie können wir eine Architektur in unserem Softwaresystem einsetzen, die der Evolution des Systems standhält?

Sowohl die Clean als auch die Hexagonal Architecture versprechen eine klare Trennung der fachlichen Domäne von den infrastrukturellen Aspekten. Die Kernidee, das Ports und Adapters Pattern, ist mächtig und hilft, technische, fachliche sowie organisatorische Flexibilität in der Softwarearchitektur zu realisieren. Darauf aufbauend werden wir im Training die Clean und Hexagonal Architectures im Kontext der Evolutionary Architecture beleuchten und Umsetzungsmöglichkeiten von Fitness Functions für diese Architekturmuster darstellen.

Im Training “Evolutionäre Softwarearchitektur” sprechen wir über Gemeinsamkeiten, Unterschiede, Nutzen, Tradeoffs sowie pragmatische Entwicklungsansätze für diese Architekturmuster. Anhand einer Demoanwendung in Java werden wir gemeinsam Codebeispiele analysieren und anhand eines fachlichen Beispiels selbst implementieren. Dabei verwenden wir die Bausteine des taktischen Domain-Driven Design und lernen, wie diese eingebettet in die Clean Architecture implementiert werden. Du erhältst Zugriff zur Demoanwendung mit Spring Boot und Java und hast die Möglichkeit, die Thematik hinterher im Selbststudium weiter zu vertiefen.

Agenda

Tag 1

Softwarearchitektur als Struktur und Methodik

  • Funktionale Systemdekomposition und Modularisierung
  • Architekturmuster, Architekturprinzipien, Entwurfsmuster und Mustersprache
  • Time-To-Adaption und strukturelle Qualität von Softwarearchitektur

Ports & Adapters als Architekturmuster

  • Die Schwächen der Schichtenarchitektur
  • Von der Schichtenarchitektur zu Ports & Adapters Architekturmuster

Eine isolierte Domäne erstellen

  • Implementierung von Geschäftsobjekten und Fachwerten nach dem Prinzip des Rich Domain Model
  • Domänen-bezogene Datenvalidierung implementieren
  • Unterschiedliche Aufgaben auf die Klassenstereotypen Service, Root Entity, Entity und Value Object verteilen
  • Code-Übung: Domänenmodel

Hexagonal Architecture

  • Implementierung von Geschäftsobjekten und Fachwerten nach dem Prinzip des Rich Domain Model
  • Domänen-bezogene Datenvalidierung implementieren
  • Unterschiedliche Aufgaben auf die Klassenstereotypen Service, Root Entity, Entity und Value Object verteilen
  • Code-Übung: Domänenmodell

Clean Architecture

  • Die Domäne in der Clean Architecture
  • Der Use-Case-Ring der Clean Architecture
  • Prinzipien des Use-Case-Schnitt
  • Der Framework Ring der Clean Architecture
  • Call-Flow durch die Clean Architecture
  • Code-Übung: Use-Case-Ring und Framework-Ring

Tag 2

Mapping Strategien

  • One-Way, Two-Way und Full Mapping Strategie
  • Mappings mit Third-Party-Bibliotheken vereinfachen
  • Mapper, Konverter und Factories
  • Code-Übung: Two-Way-Mapping-Strategie

Domain-Driven Modularization

  • Modularisierung mit Domänenmodulen anhand Root Entities
  • Strukturierung von Domänenmodulen
  • Entwurfsmuster für Beziehungen zwischen den Domänenmodulen
  • Coding-Übung: Abhängigkeiten zwischen Domänenmodulen

Evolutionäre Architektur

  • Motivation für Architektur-Disziplin anhand der Broken Window Theory
  • Das Mindset der Evolutionären Architektur
  • Fitness Functions für die Clean und Hexagonal Architecture
  • Coding-Übung: Clean Architecture Fitness Functions mit ArchUnit

Audience

Dieses Training richtet sich an Softwarearchitekt:innen und Entwickler:innen, die diese Architekturmuster und ihre Anwendung im Projektalltag verstehen möchten. Die Teilnehmer:innen sollten folgende Erfahrungen und Kenntnisse mitbringen:

  • Mehr als 12 Monate praktische Erfahrung in der Softwareentwicklung im Team von mittleren bis großen Softwaresystemen
  • Kenntnisse und praktische Erfahrung in mindestens einer höheren Programmiersprache (für die Kursbeispiele wird die Sprache Java verwendet)
  • Vertraut mit Schichtenarchitektur, SOLID-Prinzipien, Entwurfsmuster, Dependency Injection sowie Konzepte der Modularisierung (Module, Pakete, Namensräume)
  • Vertraut mit der Erstellung fachlicher Objektmodelle in Java oder in einer vergleichbaren Programmiersprache

Training Objectives

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 Mappingstrategien für die Clean und Hexagonal Architecture anwenden können

Entwurfsmuster zur Abbildung von Beziehungen zwischen fachlichen Bausteinen gezielt einsetzen können

Die Möglichkeit, deine Architektur mittels Architekturtest kontinuierlich zu testen und das Mindset der Evolutionären Architektur anzuwenden

Your Trainers

Matthias Eschhold

Architektur, Domain-driven Design

Matthias ist Lead-Architekt der E-Mobilität bei der EnBW AG. Mit seiner Erfahrung in der Softwarearchitektur und Domain-Driven Design gestaltet er mit seinem Team die IT-Landschaft und Team-Topologie der E-Mobilität. Trotz der Schwerpunkte auf strategischer und sozio-technischer Architekturebene, fühlt sich Matthias nach wie vor mit Java und Spring Boot auf der Codeebene zuhause, implementiert Prototypen und führt Refactorings durch. Seit vielen Jahren teilt Matthias seine Leidenschaft für Architektur als Trainer. Seine Stärke liegt in praxisnahen Schulungen, die nicht nur Architekturmuster und -prinzipien vermitteln, sondern auch die Realitäten von Projekten berücksichtigen. Er sucht stets nach Wegen, um Softwarearchitektur alltagstauglich zu machen.

Online Courses

On-site Courses

Dates by Request

Event ticketing software by pretix

In-House Training

You can also book this training as an in-house training course exclusively for your team. Please use the enquiry form for more details.

Enquire now