Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Langlebige Software: Eine Einführung in DDD Str...

Langlebige Software: Eine Einführung in DDD Strategic Design (JUG Karlsruhe 24.10.2018)

Avatar for Manuel Zamora-Morschhäuser

Manuel Zamora-Morschhäuser

October 24, 2018

Other Decks in Programming

Transcript

  1. Unklare Verantwortlichkeit Der Kollege ist schon länger krank Das traut

    sich keiner anzufassen „Ganz einfach“ „Politik“
  2. Unternehmen sind komplexe, adaptive Systeme* *Netzwerke unabhängiger Teilnehmer, die sich

    gegenseitig beeinflussen und das Gesamtsystem dabei nicht-deterministisches Verhalten an den Tag legt
  3. Ziele • Identifizieren des eigentlichen Ziels der Unternehmung • Komplexität

    in der Fachdomäne aufzeigen • Finden eines möglichst passenden und nützlichen Modells für Prozesse und Konzepte • Schaffung einer gemeinsamen Sprache • Keine „Übersetzung“ nötig zwischen Domänenexperten, Entwicklern (und Software) • Kontinuierliches Lernen und Verbessern des Modells • Entwickeln einer Software-Lösung, die das Domänenmodell ohne Veränderung umsetzt • Modularisierung anhand fachlicher Grenzen zur unabhängige Weiterentwicklung innerhalb • Strikte Trennung zwischen Fachlichkeit und Technologie • Langfristig veränderliche Software
  4. Mission Statement: „Wir möchten die günstigsten Anbieter von Fahrten in

    Europa sein“ Core Domain: Fahrstrecken, Preise, Effizienz Supporting Domain: Verkaufen von Tickets, Sitze reservieren Generic Subdomain: Zahlungsabwicklung, Inkasso Beispiel: Fernbusunternehmen
  5. Bounded Context Beispiel: “Kunde“ in E-Commerce Domäne Authentifizierung: Email, Passwort,

    … Marketing: Interessen, Bestellverlauf, … Versand: Lieferadresse, …
  6. Aggregate Aggregates entsprechen den Invarianten* des Domänenmodells * Regel(n) der

    Domäne, die alle zusammen immer gültig sein müssen
  7. Aggregate = Transaktionseinheit Jede Transaktion in einem Bounded Context verändert

    nur ein Aggregate auf einmal Konsistenzen zwischen Aggregates werden über Eventual Consistency (z.B. mithilfe von Domain Events) sichergestellt
  8. Domain Event Beschreibt ein Ereignis aus der Fachdomäne, das an

    einem bestimmten Punkt in der Vergangenheit stattgefunden hat Domain Events sind Teil der Ubiquitous Language
  9. Domain Event Wird jedes Ereignis eines Aggregates in der Domäne

    mithilfe von Events modelliert, kann der Zustand des Aggregates an einem beliebigen Zeitpunkt jederzeit über die Summe aller Events bis dahin berechnet werden
  10. Context Maps Visualisiert alle Bounded Contexts eines Systems und ihre

    Beziehungen untereinander mit dem Ziel, eine ganzheitliche Übersicht zu vermitteln
  11. A B D E C Open Host ACL Customer /

    Supplier Customer / Supplier Open Host Conformist Partnership ACL Customer / Supplier
  12. Context Maps visualisieren Conway‘s Law* * Organisationen, die Systeme entwerfen,

    sind auf Entwürfe festgelegt, welche die Kommunikationsstrukturen dieser Organisation abbilden
  13. Event Storming Entdecken und modellieren wie die Domäne funktioniert, anhand

    der zeitlichen Abfolge von signifikanten Ereignissen
  14. Wie kann man Event Storming einsetzen? - Kennenlernen der gesamten

    Fachlichkeit im crossfunktionalen Team, zB zu Projektbeginn - Identifizieren der Bounded Contexts - Modellieren eines komplexen Teilprozesses - Modellieren/Verbessern einer User Experience Journey - Beibringen der Fachlichkeit, z.B. beim On-Boarding von neuen Kollegen - Modellieren von jeder Art von Prozessen auch außerhalb der Softwareentwicklung, z.B. als Value Streams - Als Konversationsstarter
  15. Was wird benötigt? - Möglichst große Modellierungsfläche (Optimal: Wände), die

    mit Endlospapier beklebt ist - Ganz viele Klebezettel mit verschiedenen Farben - Ausreichend viele Permanent-Marker - Klebematerial, um Linien ziehen zu können (z.B. Kreppband) - Flip-Chart o.ä. um Legenden festzuhalten - KEINE Stühle oder Tische - Teilnehmer – je nach Ziel des Workshops so divers wie möglich (Domänenexperten aus allen Abteilungen, Entwickler, Designer, PO, …) - Moderator - Ein Themengebiet zum Modellieren - Timebox
  16. Domain Event Domain Event • Ereignis aus der Domäne •

    Orangenes Post-It • Verb in Vergangenheitsform
  17. Policy Regel • Violettes Post-It • Regel • Formuliert Bedingung

    für Ereignis • Oder auch zeitliche Steuerung („alle n Minuten“)
  18. Read Model Zustand • Grünes Post-It • Information, die benötigt

    wird, um eine Entscheidung zu treffen / Anweisung zu geben • Berechnet aus Summe von Domain Events
  19. UI User Interface • Großes weißes Post-It • User-Interface, das

    zur Darstellung einer oder mehrerer Read Models verwendet wird
  20. Kunde Füge Artikel zu WK hinzu Warenkorb Artikel hinzugefügt Warenkorb

    Warenkorb Detailseite Artikel nicht verfügbar Nicht verfügbarer Artikel in WK? Entferne Artikel aus WK Artikel entfernt Lagerhaltung
  21. Akzeptieren von fachlicher Komplexität – Software ist kein Selbstzweck „Continous

    Learning“ als Kernprinzip unserer Arbeit Accidental Complexity minimieren – There is no silver bullet Niemals über etwas diskutieren, was nicht an der Wand klebt
  22. Literatur Domain Driven Design, Eric Evans Implementing Domain Driven Design,

    Vaughn Vernon Domain Driven Design Distilled, Vaughn Vernon Introducing Event Storming, Alberto Brandolini Langlebige Softwarearchitekturen, Carola Lilienthal