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

Domain-Driven Design – Unterlagen Pflichtprogramm

Domain-Driven Design – Unterlagen Pflichtprogramm

WPS – Workplace Solutions

January 01, 2020
Tweet

More Decks by WPS – Workplace Solutions

Other Decks in Programming

Transcript

  1. www.wps.de WPS – Workplace Solutions Jörn Koch [email protected] @JoernKoch DIE

    TRAINER [email protected] @hofstef Dr. Stefan Hofer Kai Bühner [email protected] [email protected] @clemologe Clemens Heppner Richard Voß [email protected] @richard_voss Henning Schwentner [email protected] @hschwentner
  2. www.wps.de WPS – Workplace Solutions INHALT § Pflichtprogramm § Überblick

    – Was ist DDD? § Knowledge Crunching § Strategisches Design mit Bounded Contexts § Strategisches Design mit Subdomains § Context Mapping § Ubiquitous Language § Das Domänenmodell entwickeln § Taktisches Design mit den Building Blocks § Zusatzprogramm § Unter https://speakerdeck.com/wps § Anhang § Zertifizierung und Prüfung § Wie geht’s weiter? § Fallstudie Kinosystem
  3. //// Seite 1 ÜBERBLICK – WAS IST DDD? Starring With

    Directed by In the role of Also Starring 1 2 4 Infrastruktur: 5 Remote-Etikette: * Video an * Echter Name 6 ! »Ich höre nix.« " »Ich möchte was sagen.« 7 @hschwentner Handout und Fallstudie: https://speakerdeck.com/wps 8 9 Foto: J. Rost 10
  4. //// Seite 2 ÜBERBLICK – WAS IST DDD? »Business-Software die

    Spaß macht« 11 Foto: B. Bertram/Wikipedia 12 13 Foto: Pixeden /Wikipedia 14 15 »Business-Software die Spaß macht« 16 17 18 @hschwentner Formales 72
  5. //// Seite 3 ÜBERBLICK – WAS IST DDD? 73 Foundation

    Level Expert Level Advanced Level 75 Foundation Level Expert Level Advanced Level 76 Foundation Level 77 Advanced Level 78 @hschwentner Unterschiedliche Module 79 DDD FLEX AGILA IMPROVE CLOUDINFRA ARCEVAL 80 @hschwentner Kompetenzbereiche 81 @hschwentner Methodisch Technisch Kommunikativ 82
  6. //// Seite 4 ÜBERBLICK – WAS IST DDD? @hschwentner Creditpoints

    83 @hschwentner Methodisch 20 CP Technisch 0 CP Kommunikativ 10 CP 84 @hschwentner Zeitplan 85 Workshop Workshop Workshop Workshop Vormittag Nachmittag Nicht remote 86 Vormittag Nachmittag Work shop Work shop Work shop Work shop Work shop Work shop Work shop 87 @hschwentner Erwartungen 88 89 90 @hschwentner Aufbau 91
  7. //// Seite 5 ÜBERBLICK – WAS IST DDD? 92 DOMÄNE

    DOMÄNE 93 @hschwentner 1. Pflicht 2. (Kür) 95 @hschwentner Inhalt 96 97 @hschwentner #unabsteigbar 98 “Football is a simple game; 22 men chase a ball for 90 minutes and at the end, the Germans win.” Gary Lineker 99 100 101
  8. //// Seite 6 ÜBERBLICK – WAS IST DDD? 102 103

    104 Ubiquitous Language Building Blocks Domain Event Aggregate Entity Value Object Bounded Context Strategic Design Context Mapping Collaborative Modeling Domain Expert Event Storming Modeling in Code Domain Storytelling Core Domain 106 Microservices CQRS Hexagonal Architecture Agile Event Sourcing Extreme Programming Scrum Cloud Self-Contained Sytems Verticals Clean Architecture DevOps AWS Azure Onion Architecture 107 108 @hschwentner Du 109 Programmiersprachen Fragen Mein Leben als Entwickler Erfahrungen mit DDD Wünsche an das Training iSAQB-Module 110 Geschichte 111
  9. //// Seite 7 ÜBERBLICK – WAS IST DDD? Conways Law

    Blue Book Red Book 2015 ’16 ’17 ’14 ’13 ’12 2010 ’11 ’09 ’08 ’07 ’06 2005 ’04 ’03 ’02 2000 01 1968 ... ’99 ’98 ’19 2020 ’18 112 113 115 116 Grafik: Robert Gloth/Wikipedia 117 118 Foto: Serge Melki/Wikipedia 119 Foto: Public Domain/Wikipedia 120 121
  10. //// Seite 8 ÜBERBLICK – WAS IST DDD? @hschwentner Wie

    kann das funktionieren? 122 123 124 Foto: Thorsten Bätge/Wikipedia 125 126 Detail: Tiefenzahl 127 Foto: Afrank99/Wikipedia 128 Foto: Henning Schwentner 129 130
  11. //// Seite 9 ÜBERBLICK – WAS IST DDD? 131 132

    133 134 13:00 19:00 135 LEGT NAUTIKER KAPITÄN FRAGT NACH 7 SCHIFFS- SILHOUETTE AUF PEILDIENST PEILSCHIFF TIEFE PEILT 1 SENDET 2 AN BERECHNET 3 ER Z EUG T 4 SENDET 5 PEILPLAN AN VERSCHIEBT & DREHT 8 SCHIFFS- SILHOUETTE UND FINDET 9 MELDET AN 6 ROUTE ROUTE PEILPLAN PEILPLAN TIEFEN- ZAHLEN ROUTE TIEFENLINIEN 136 @hschwentner Is There An App For It? 137 138 139
  12. //// Seite 10 ÜBERBLICK – WAS IST DDD? CYBER 140

    141 142 143 144 145 146 @hschwentner So ware != Selbstzweck 147 148
  13. //// Seite 11 ÜBERBLICK – WAS IST DDD? ? 149

    150 WICHTIG! 151 152 Software Domäne 153 154 155 Foto: Rosie the Riveter/Wikimedia/CC-PD-Mark 156 Fach- wissen Foto: Rosie the Riveter/Wikimedia/CC-PD-Mark 157
  14. //// Seite 12 ÜBERBLICK – WAS IST DDD? Collaborative Modeling

    160 Domain Expert Developer 161 Knowledge crunching 162 163 @hschwentner Methods 164 165 http://www.domainstorytelling.org 166 LA N G U A G E 167 168
  15. //// Seite 13 ÜBERBLICK – WAS IST DDD? Fach- sprache

    Domain Expert Developer 169 Ludwig Wi0genstein »Wovon man nicht sprechen kann, darüber muss man schweigen.« 170 Tiefenzahl M aßstab Silhoue2e M arkierung Peilplan verschieben berechnen Auf Grund gelaufen gelb 171 Ubiquitous Language 172 Jubikjutuss Lengwitsch 173 LEGT NAUTIKER KAPITÄN FRAGT NACH 7 SCHIFFS- SILHOUETTE AUF PEILDIENST PEILSCHIFF TIEFE PEILT 1 SENDET 2 AN BERECHNET 3 ER Z EUG T 4 SENDET 5 PEILPLAN AN VERSCHIEBT & DREHT 8 SCHIFFS- SILHOUETTE UND FINDET 9 MELDET AN 6 ROUTE ROUTE PEILPLAN PEILPLAN TIEFEN- ZAHLEN ROUTE TIEFENLINIEN 174 SMALL 175 176 177
  16. //// Seite 14 ÜBERBLICK – WAS IST DDD? class Silhouette

    { //... } 178 179 class Silhouette { public void verschiebeUm(Laenge l) //... } 180 182 class Silhouette { public void verschiebeUm(Laenge l) //... public void dreheUm(Winkel w) //... } 183 Erich Gam m a “Program to an interface, not to an implementaFon” 186 public class Silhouette { public void setPosition(Position p) //... } ✘ 187 ✘ 189 WARNING SETTERS CAUSE MODEL ANEMIA 190
  17. //// Seite 15 ÜBERBLICK – WAS IST DDD? SETTER =

    Denglisch für „set…“-Operation 191 VERSCHIEBT & DREHT 8 SCHIFFS- SILHOUETTE UND FINDET ROUTE NAUTIKER <<En$ty>> Silhoue(e verschiebe() drehe() 192 Modeling in Code 193 BIG 194 195 196 197 ! 198 199
  18. //// Seite 16 ÜBERBLICK – WAS IST DDD? 200 Bounded

    Context 201 ! 202 LEGT NAUTIKER KAPITÄN FRAGT NACH 7 SCHIFFS- SILHOUETTE AUF PEILDIENST PEILSCHIFF TIEFE PEILT 1 SENDET 2 AN BERECHNET 3 ER Z EUG T 4 SENDET 5 PEILPLAN AN VERSCHIEBT & DREHT 8 SCHIFFS- SILHOUETTE UND FINDET 9 MELDET AN 6 ROUTE ROUTE PEILPLAN PEILPLAN TIEFEN- ZAHLEN ROUTE TIEFENLINIEN TIEFEN- MESSUNG MANÖVER- PLANUNG MANÖVER- PLANUNG TIEFEN- MESSUNG 203 TIDE- VORHER- SAGE MANÖVER- PLANUNG TIEFEN- MESSUNG 204 Strategic Design 205 207 @hschwentner Tactical Design 208 209
  19. //// Seite 17 ÜBERBLICK – WAS IST DDD? Entity 210

    211 import org.jmolecules.ddd.annotation.*; @Entity public class Peilplan { //... } 212 Value Object 213 Beispiel: Tiefenzahl 214 import org.jmolecules.ddd.annotation.*; @ValueObject public class Tiefenzahl { //... } 215 Domain Event 216 MANÖVER- PLANUNG TIEFEN- MESSUNG PEILPLAN ERSTELLT 217 @hschwentner WAM 218
  20. //// Seite 18 ÜBERBLICK – WAS IST DDD? @hschwentner Grundidee:

    Menschen bearbeiten mit Werkzeug Materialien 219 Entwurfsmetaphern 220 Material 221 @hschwentner Material == Entity 222 Werkzeug 223 Foto: Svdm olen/W ikipedia 224 225 @hschwentner Literatur 226 Foto: H. Schwentner 227
  21. //// Seite 19 ÜBERBLICK – WAS IST DDD? Foto: H.

    Schwentner 228 h"ps://entwickler.de/online/development/gra7s-lesen-entwickler-kiosk- themen-dossier-domain-driven-design-579749361.html 229 @hschwentner Hands-On 230 @hschwentner LeasingNinja.io 231 @hschwentner Community 232 233 @DDDger h'ps://dddgermany.herokuapp.com 234 Germanys first DDD conference 235 236
  22. KNOWLEDGE CRUNCHING @hschwentner Knowledge Crunching 1 DOMÄNE DOMÄNE 2 3

    @hschwentner Tools 4 LEGT NAUTIKER KAPITÄN FRAGT NACH 7 SCHIFFS- SILHOUETTE AUF PEILDIENST PEILSCHIFF TIEFE PEILT 1 SENDET 2 AN BERECHNET 3 ERZEUGT 4 SENDET 5 PEILPLAN AN VERSCHIEBT & DREHT 8 SCHIFFS- SILHOUETTE UND FINDET 9 MELDET AN 6 ROUTE ROUTE PEILPLAN PEILPLAN TIEFEN- ZAHLEN ROUTE TIEFENLINIEN 5 6 @hschwentner EVENT STORMING 7 schnell intensiv ultra leichtgewich/g macht Spaß in die Domäne stürzen an die Grenzen gehen den Anwendungsfall erleben EVENT STORMING @JoernKoch 8 EVENT STORMING @JoernKoch 9
  23. KNOWLEDGE CRUNCHING EVENT STORMING - Wer hat‘s erfunden? Alberto Brandolini

    @ziobrando h:p://eventstorming.com 10 11 12 14 @hschwentner One Man One Marker 18 @hschwentner One (Wo)Man One Marker 19 20 21 23
  24. KNOWLEDGE CRUNCHING Once upon a time… @JoernKoch 24 1 gutes

    Beispiel ist besser als kein Beispiel »Denn manchmal sind drei gute Beispiele besser für das Verständnis der Anforderungen als eine schlechte Abstrak<on.« Peter H ruschka in Busines A nalysis und Requirem ents Engineering, S.102, H anser, 2014 25 26 þ Arbeiten þ Schlafen þ Arbeiten þ Schlafen þ Arbeiten 27 28 BEISPIEL 29 SZENARIO: MANÖVERSIMULATION IM HAFEN PEIL- POSITION ERREICHT TIEFE »10M« GEPEILT TIEFENZAHL EINGE- ZEICHNET TIEFE AN PEILDIENST GEMELDET TIEFENZAHL »ROT« GEFÄRBT 30 EVENT Ein FACHLICH RELEVANTES EREIGNIS Hier ist etwas geschehen, das uns fachlich EIN STÜCK WEITER gebracht hat. PEIL- POSITION ERREICHT TIEFE »10M« GEPEILT TIEFENZAHL EINGE- ZEICHNET TIEFE AN PEILDIENST GEMELDET TIEFENZAHL »ROT« GEFÄRBT 31 ORANGER STICKIE In VERGANGENHEITSFORM Tipp: In GROSSBUCHSTABEN EVENT PEIL- POSITION ERREICHT TIEFE »10M« GEPEILT TIEFENZAHL »ROT« GEFÄRBT 32
  25. KNOWLEDGE CRUNCHING PEIL- POSITION ERREICHT TIEFE »10M« GEPEILT KONKRET WERDEN!

    Andere Details = andere Geschichte EVENT TIEFENZAHL »ROT« GEFÄRBT 33 SZENARIO: MANÖVERSIMULATION IM HAFEN PEIL- POSITION ERREICHT TIEFE »10M« GEPEILT TIEFENZAHL EINGE- ZEICHNET TIEFE AN PEILDIENST GEMELDET TIEFENZAHL »ROT« GEFÄRBT TIEFEN- LINIE GEZOGEN PEILPLAN GEZEICHNET ZOOM- STUFEN BERECHNET UMLAUF- BAHN DES MONDES BERECHNET TIDEKURVE ERSTELLT SILHOUETTE DER LÄNGE 100M AUSGE- SCHNITTEN SILHOUETTE AUF ÖSTLICHE RICHTUNG GEDREHT SILHOUETTE 300M VER- SCHOBEN MANÖVER SIMULIERT 34 SZENARIO: MANÖVERSIMULATION IM HAFEN PEIL- POSITION ERREICHT TIEFE »10M« GEPEILT TIEFENZAHL EINGE- ZEICHNET TIEFE AN PEILDIENST GEMELDET TIEFENZAHL »ROT« GEFÄRBT TIEFEN- LINIE GEZOGEN PEILPLAN GEZEICHNET ZOOM- STUFEN BERECHNET UMLAUF- BAHN DES MONDES BERECHNET TIDEKURVE ERSTELLT SILHOUETTE DER LÄNGE 100M AUSGE- SCHNITTEN SILHOUETTE AUF ÖSTLICHE RICHTUNG GEDREHT SILHOUETTE 300M VER- SCHOBEN MANÖVER SIMULIERT 35 SZENARIO: MANÖVERSIMULATION IM HAFEN PEIL- POSITION ERREICHT TIEFE »10M« GEPEILT TIEFENZAHL EINGE- ZEICHNET TIEFE AN PEILDIENST GEMELDET TIEFENZAHL »ROT« GEFÄRBT TIEFEN- LINIE GEZOGEN PEILPLAN GEZEICHNET ZOOM- STUFEN BERECHNET UMLAUF- BAHN DES MONDES BERECHNET TIDEKURVE ERSTELLT SILHOUETTE DER LÄNGE 100M AUSGE- SCHNITTEN SILHOUETTE AUF ÖSTLICHE RICHTUNG GEDREHT SILHOUETTE 300M VER- SCHOBEN MANÖVER SIMULIERT STURMFLUT ERWARTET ALLE LIEGEPLÄTZE BELEGT PEILSCHIFF AUF GRUND GELAUFEN 36 SZENARIO: MANÖVERSIMULATION IM HAFEN PEIL- POSITION ERREICHT TIEFE »10M« GEPEILT TIEFENZAHL EINGE- ZEICHNET TIEFE AN PEILDIENST GEMELDET TIEFENZAHL »ROT« GEFÄRBT TIEFEN- LINIE GEZOGEN PEILPLAN GEZEICHNET ZOOM- STUFEN BERECHNET UMLAUF- BAHN DES MONDES BERECHNET TIDEKURVE ERSTELLT SILHOUETTE DER LÄNGE 100M AUSGE- SCHNITTEN SILHOUETTE AUF ÖSTLICHE RICHTUNG GEDREHT SILHOUETTE 300M VER- SCHOBEN MANÖVER SIMULIERT BEI WELCHEN TIEFEN? HIER PASSAGE BERÜCK- SICHTI- GEN! 37 Offene FRAGE oder PROBLEM PINKER STICKIE Kurz in Prosa beschreiben. In die Nähe des betroffenen Events hängen! HOTSPOT PEIL- POSITION ERREICHT TIEFE »10M« GEPEILT TIEFENZAHL EINGE- ZEICHNET TIEFE AN PEILDIENST GEMELDET TIEFENZAHL »ROT« GEFÄRBT BEI WELCHEN TIEFEN? 38 FERTIG! 39 BIG PICTURE EVENT STORMING PEIL- POSITION ERREICHT TIEFE »10M« GEPEILT TIEFENZAHL EINGE- ZEICHNET TIEFE AN PEILDIENST GEMELDET TIEFENZAHL »ROT« GEFÄRBT TIEFEN- LINIE GEZOGEN PEILPLAN GEZEICHNET ZOOM- STUFEN BERECHNET UMLAUF- BAHN DES MONDES BERECHNET TIDEKURVE ERSTELLT SILHOUETTE DER LÄNGE 100M AUSGE- SCHNITTEN SILHOUETTE AUF ÖSTLICHE RICHTUNG GEDREHT SILHOUETTE 300M VER- SCHOBEN MANÖVER SIMULIERT STURMFLUT ERWARTET ALLE LIEGEPLÄTZE BELEGT PEILSCHIFF AUF GRUND GELAUFEN BEI WELCHEN TIEFEN? HIER PASSAGE BERÜCK- SICHTI- GEN! 40 41
  26. KNOWLEDGE CRUNCHING @hschwentner Real Life 42 43 VISUAL LEGEND 44

    45 46 47 48 LITERATUR Ganzes Buch (in Arbeit) Kapitel 7 h"p://ziobrando.blogspot.de/ hTp://eventstorming.com/ BLOG: 49 51
  27. STRATEGISCHES DESIGN MIT BOUNDED CONTEXTS WPS – Workplace Solutions #dddkonkret

    www.wps.de STRATEGISCHES DESIGN – MIT BOUNDED CONTEXTS Domain-Driven Design konkret 1 17.12.20 //// Seite 2 WPS – Workplace Solutions INHALT DOMÄNE DOMÄNE 2
  28. STRATEGISCHES DESIGN MIT BOUNDED CONTEXTS 17.12.20 //// Seite 3 WPS

    – Workplace Solutions ÜBERSICHT § Die Welt verstehen § Bounded Context § Continuous Integration § Schneiden der Domäne 3 17.12.20 //// Seite 4 WPS – Workplace Solutions § Unser Hirn ist zu klein, um die Welt im Ganzen zu begreifen § Deshalb bauen wir uns Modelle ØWir abstrahieren ØWesentliches behalten ØUnwesentliches weglassen WIE KÖNNEN WIR DIE WELT VERSTEHEN? ? Foto: Maiconfz/pixabay/ CC0 Foto: Wikipedia/CC-PD 4
  29. STRATEGISCHES DESIGN MIT BOUNDED CONTEXTS 17.12.20 //// Seite 5 WPS

    – Workplace Solutions WISSENSCHAFTLICH ERWIESEN: GORILLAS SIND IN BASKETBALL-SPIELEN IRRELEVANT! 5 17.12.20 //// Seite 6 WPS – Workplace Solutions MEHRERE MODELLE/KLEINE MODELLE Foto: Maiconfz/pixabay/CCO Foto: Globus from book shelf/wikipedia/ CC-BY-3.0 Foto:Clker-Free-Vector-Images/pixabay/ CCO Foto: Wasserseemüller-Globus/Wikipedia/CC-PD-Mark 6
  30. STRATEGISCHES DESIGN MIT BOUNDED CONTEXTS 17.12.20 //// Seite 7 WPS

    – Workplace Solutions § »Newton was a genius, but not because of the superior computational power of his brain. Newton's genius was, on the contrary, his ability to simplify, idealize, and streamline the world so that it became, in some measure, tractable to the brains of perfectly ordinary men.« – Jerry Weinberg ISAAC NEWTON AND MODELS 7 17.12.20 //// Seite 8 WPS – Workplace Solutions WIE KÖNNEN WIR DIE DOMÄNE VERSTEHEN/IN SOFTWARE GIEßEN? ? § Klassischer Ansatz: § Ein Stück Software, das die Domäne im Ganzen modelliert und möglichst detailgenau abbildet § Hoffnung: § Probleme werden einmal und für alle Zeiten gelöst § Keine Duplikation 8
  31. STRATEGISCHES DESIGN MIT BOUNDED CONTEXTS »Wer ein unternehmensweites Domänenmodell einsetzt,

    hat die Kontrolle über sein Leben verloren« 9 17.12.20 //// Seite 10 WPS – Workplace Solutions § Mehrere vermischte mentale Modelle § Unbeherrschbare Komplexität § Whack-a-Mole issues § Abhängigkeiten unter den Teams KLASSISCHES DOMÄNENMODELL – REALITÄT Foto: CMS Higgs-even/Wikipedia/CC-BY-SA-3.0 10
  32. STRATEGISCHES DESIGN MIT BOUNDED CONTEXTS 17.12.20 //// Seite 11 WPS

    – Workplace Solutions § Auch Domäne zu komplex für Verständnis im Ganzen § => auch hier mehrere Modelle § D.h. mehrere Stücke Software WIE KÖNNEN WIR DIE DOMÄNE VERSTEHEN/IN SOFTWARE GIEßEN? ? 11 LEGT NAUTIKER KAPITÄN FRAGT NACH 7 SCHIFFS- SILHOUETTE AUF PEILDIENST PEILSCHIFF TIEFE PEILT 1 SENDET 2 AN BERECHNET 3 ERZ EUGT 4 SENDET 5 PEILPLAN AN VERSCHIEBT & DREHT 8 SCHIFFS- SILHOUETTE UND FINDET 9 MELDET AN 6 ROUTE ROUTE PEILPLAN PEILPLAN TIEFEN- ZAHLEN ROUTE TIEFENLINIEN TIEFEN- MESSUNG MANÖVER- PLANUNG MANÖVER- PLANUNG TIEFEN- MESSUNG 12
  33. STRATEGISCHES DESIGN MIT BOUNDED CONTEXTS 17.12.20 //// Seite 13 WPS

    – Workplace Solutions TIDE- VORHER- SAGE TIEFEN- MESSUNG MANÖVER- PLANUNG MODELLE IM HAFEN 13 17.12.20 //// Seite 14 WPS – Workplace Solutions BOUNDED CONTEXTS § Jedes Modell hat einen Kontext § Kontext = Grundsätzliche Voraussetzungen, damit Begriffe eine bestimmte Bedeutung erhalten § Wird ein Modell aufgespalten, so ist für jedes Teilmodell eine Kontextdefinition erforderlich § Setze explizite Grenzen in § Code § Modulen § Datenbank-Schemata § Teamorganisation § (Quellcodeverwaltung) § (Deployment-Einheiten) Foto: Bundesarchiv, Bild 173-1282/Helmut J. Wolf/Wikipedia/CC-BY-SA 3.0 14
  34. STRATEGISCHES DESIGN MIT BOUNDED CONTEXTS 17.12.20 //// Seite 15 WPS

    – Workplace Solutions BOUNDED CONTEXTS IM HAFEN TIDE- VORHER- SAGE MANÖVER- PLANUNG TIEFEN- MESSUNG 15 DOMÄNENSCHNITT MIT EVENT STORMING 16
  35. STRATEGISCHES DESIGN MIT BOUNDED CONTEXTS 17.12.20 //// Seite 17 WPS

    – Workplace Solutions FINDE DIE POINTS OF NO RETURN 17 17.12.20 //// Seite 18 WPS – Workplace Solutions @JoernKoch POINTS OF NO RETURN Welche Ereignisse schließen Teilprozesse dauerhaft ab? 18
  36. STRATEGISCHES DESIGN MIT BOUNDED CONTEXTS 17.12.20 //// Seite 19 WPS

    – Workplace Solutions FINDE DIE POINTS OF NO RETURN! PEIL- POSITION ERREICHT TIEFE »10M« GEPEILT TIEFENZAHL EINGE- ZEICHNET TIEFE AN PEILDIENST GEMELDET TIEFENZAHL »ROT« GEFÄRBT TIEFEN- LINIE GEZOGEN PEILPLAN GEZEICHNET ZOOM- STUFEN BERECHNET UMLAUF- BAHN DES MONDES BERECHNET TIDEKURVE ERSTELLT SILHOUETTE DER LÄNGE 100M AUSGE- SCHNITTEN SILHOUETTE AUF ÖSTLICHE RICHTUNG GEDREHT SILHOUETTE 300M VER- SCHOBEN MANÖVER SIMULIERT 19 17.12.20 //// Seite 20 WPS – Workplace Solutions FINDE DIE POINTS OF NO RETURN! PEIL- POSITION ERREICHT TIEFE »10M« GEPEILT TIEFENZAHL EINGE- ZEICHNET TIEFE AN PEILDIENST GEMELDET TIEFENZAHL »ROT« GEFÄRBT TIEFEN- LINIE GEZOGEN PEILPLAN GEZEICHNET ZOOM- STUFEN BERECHNET UMLAUF- BAHN DES MONDES BERECHNET TIDEKURVE ERSTELLT SILHOUETTE DER LÄNGE 100M AUSGE- SCHNITTEN SILHOUETTE AUF ÖSTLICHE RICHTUNG GEDREHT SILHOUETTE 300M VER- SCHOBEN MANÖVER SIMULIERT 20
  37. STRATEGISCHES DESIGN MIT BOUNDED CONTEXTS 17.12.20 //// Seite 21 WPS

    – Workplace Solutions FINDE DIE POINTS OF NO RETURN! PEIL- POSITION ERREICHT TIEFE »10M« GEPEILT TIEFENZAHL EINGE- ZEICHNET TIEFE AN PEILDIENST GEMELDET TIEFENZAHL »ROT« GEFÄRBT TIEFEN- LINIE GEZOGEN PEILPLAN GEZEICHNET ZOOM- STUFEN BERECHNET UMLAUF- BAHN DES MONDES BERECHNET TIDEKURVE ERSTELLT SILHOUETTE DER LÄNGE 100M AUSGE- SCHNITTEN SILHOUETTE AUF ÖSTLICHE RICHTUNG GEDREHT SILHOUETTE 300M VER- SCHOBEN MANÖVER SIMULIERT 21 17.12.20 //// Seite 22 WPS – Workplace Solutions FINDE DIE POINTS OF NO RETURN! PEIL- POSITION ERREICHT TIEFE »10M« GEPEILT TIEFENZAHL EINGE- ZEICHNET TIEFE AN PEILDIENST GEMELDET TIEFENZAHL »ROT« GEFÄRBT TIEFEN- LINIE GEZOGEN PEILPLAN GEZEICHNET ZOOM- STUFEN BERECHNET UMLAUF- BAHN DES MONDES BERECHNET TIDEKURVE ERSTELLT SILHOUETTE DER LÄNGE 100M AUSGE- SCHNITTEN SILHOUETTE AUF ÖSTLICHE RICHTUNG GEDREHT SILHOUETTE 300M VER- SCHOBEN MANÖVER SIMULIERT 22
  38. STRATEGISCHES DESIGN MIT BOUNDED CONTEXTS 17.12.20 //// Seite 23 WPS

    – Workplace Solutions IDENTIFIZIERE DIE SUBDOMÄNEN - POSITION ERREICHT TIEFE »10M« GEPEILT TIEFENZAHL EINGE- ZEICHNET TIEFE AN PEILDIENST GEMELDET TIEFENZAHL »ROT« GEFÄRBT TIEFEN- LINIE GEZOGEN PEILPLAN GEZEICHNET ZOOM- STUFEN BERECHNET UMLAUF- BAHN DES MONDES BERECHNET TIDEKURVE ERSTELLT SILHOUETTE DER LÄNGE 100M AUSGE- SCHNITTEN SILHOUETTE AUF ÖSTLICHE RICHTUNG GEDREHT SILHOUETTE 300M VER- SCHOBEN MANÖVER SIMULIERT 23 17.12.20 //// Seite 24 WPS – Workplace Solutions IDENTIFIZIERE DIE SUBDOMÄNEN - POSITION ERREICHT TIEFE »10M« GEPEILT TIEFENZAHL EINGE- ZEICHNET TIEFE AN PEILDIENST GEMELDET TIEFENZAHL »ROT« GEFÄRBT TIEFEN- LINIE GEZOGEN PEILPLAN GEZEICHNET ZOOM- STUFEN BERECHNET UMLAUF- BAHN DES MONDES BERECHNET TIDEKURVE ERSTELLT SILHOUETTE DER LÄNGE 100M AUSGE- SCHNITTEN SILHOUETTE AUF ÖSTLICHE RICHTUNG GEDREHT SILHOUETTE 300M VER- SCHOBEN MANÖVER SIMULIERT 24
  39. STRATEGISCHES DESIGN MIT BOUNDED CONTEXTS 17.12.20 //// Seite 25 WPS

    – Workplace Solutions IDENTIFIZIERE DIE SUBDOMÄNEN - POSITION ERREICHT TIEFE »10M« GEPEILT TIEFENZAHL EINGE- ZEICHNET TIEFE AN PEILDIENST GEMELDET TIEFENZAHL »ROT« GEFÄRBT TIEFEN- LINIE GEZOGEN PEILPLAN GEZEICHNET ZOOM- STUFEN BERECHNET UMLAUF- BAHN DES MONDES BERECHNET TIDEKURVE ERSTELLT SILHOUETTE DER LÄNGE 100M AUSGE- SCHNITTEN SILHOUETTE AUF ÖSTLICHE RICHTUNG GEDREHT SILHOUETTE 300M VER- SCHOBEN MANÖVER SIMULIERT BOUNDARY 25 17.12.20 //// Seite 26 WPS – Workplace Solutions IDENTIFIZIERE DIE SUBDOMÄNEN - POSITION ERREICHT TIEFE »10M« GEPEILT TIEFENZAHL EINGE- ZEICHNET TIEFE AN PEILDIENST GEMELDET TIEFENZAHL »ROT« GEFÄRBT TIEFEN- LINIE GEZOGEN PEILPLAN GEZEICHNET ZOOM- STUFEN BERECHNET UMLAUF- BAHN DES MONDES BERECHNET TIDEKURVE ERSTELLT SILHOUETTE DER LÄNGE 100M AUSGE- SCHNITTEN SILHOUETTE AUF ÖSTLICHE RICHTUNG GEDREHT SILHOUETTE 300M VER- SCHOBEN MANÖVER SIMULIERT PIVOTAL EVENT 26
  40. STRATEGISCHES DESIGN MIT BOUNDED CONTEXTS 17.12.20 //// Seite 27 WPS

    – Workplace Solutions IDENTIFIZIERE DIE SUBDOMÄNEN - POSITION ERREICHT TIEFE »10M« GEPEILT TIEFENZAHL EINGE- ZEICHNET TIEFE AN PEILDIENST GEMELDET TIEFENZAHL »ROT« GEFÄRBT TIEFEN- LINIE GEZOGEN PEILPLAN GEZEICHNET ZOOM- STUFEN BERECHNET UMLAUF- BAHN DES MONDES BERECHNET TIDEKURVE ERSTELLT SILHOUETTE DER LÄNGE 100M AUSGE- SCHNITTEN SILHOUETTE AUF ÖSTLICHE RICHTUNG GEDREHT SILHOUETTE 300M VER- SCHOBEN MANÖVER SIMULIERT BOUNDARY EVENT @JoernKoch 27 17.12.20 //// Seite 28 WPS – Workplace Solutions IDENTIFIZIERE DIE SUBDOMÄNEN - POSITION ERREICHT TIEFE »10M« GEPEILT TIEFENZAHL EINGE- ZEICHNET TIEFE AN PEILDIENST GEMELDET TIEFENZAHL »ROT« GEFÄRBT TIEFEN- LINIE GEZOGEN PEILPLAN GEZEICHNET ZOOM- STUFEN BERECHNET UMLAUF- BAHN DES MONDES BERECHNET TIDEKURVE ERSTELLT SILHOUETTE DER LÄNGE 100M AUSGE- SCHNITTEN SILHOUETTE AUF ÖSTLICHE RICHTUNG GEDREHT SILHOUETTE 300M VER- SCHOBEN MANÖVER SIMULIERT VORBEREITUNG MANÖVER- PLANUNG 28
  41. STRATEGISCHES DESIGN MIT BOUNDED CONTEXTS 17.12.20 //// Seite 29 WPS

    – Workplace Solutions @JoernKoch Nach einem POINT OF NO RETURN geht es »irgendwie ganz anders« weiter. VORBEREITUNG MANÖVER- PLANUNG 29 GIBT ES NOCH MEHR SUBDOMÄNEN? 30
  42. STRATEGISCHES DESIGN MIT BOUNDED CONTEXTS 17.12.20 //// Seite 31 WPS

    – Workplace Solutions IDENTIFIZIERE DIE SUBDOMÄNEN - POSITION ERREICHT TIEFE »10M« GEPEILT TIEFENZAHL EINGE- ZEICHNET TIEFE AN PEILDIENST GEMELDET TIEFENZAHL »ROT« GEFÄRBT TIEFEN- LINIE GEZOGEN PEILPLAN GEZEICHNET ZOOM- STUFEN BERECHNET UMLAUF- BAHN DES MONDES BERECHNET TIDEKURVE ERSTELLT SILHOUETTE DER LÄNGE 100M AUSGE- SCHNITTEN SILHOUETTE AUF ÖSTLICHE RICHTUNG GEDREHT SILHOUETTE 300M VER- SCHOBEN MANÖVER SIMULIERT VORBEREITUNG MANÖVER- PLANUNG 31 17.12.20 //// Seite 32 WPS – Workplace Solutions IDENTIFIZIERE DIE SUBDOMÄNEN TIEFE »10M« GEPEILT TIEFENZAHL EINGE- ZEICHNET TIEFE AN PEILDIENST GEMELDET TIEFENZAHL »ROT« GEFÄRBT TIEFEN- LINIE GEZOGEN PEILPLAN GEZEICHNET ZOOM- STUFEN BERECHNET UMLAUF- BAHN DES MONDES BERECHNET TIDEKURVE ERSTELLT SILHOUETTE DER LÄNGE 100M AUSGE- SCHNITTEN SILHOUETTE AUF ÖSTLICHE RICHTUNG GEDREHT SILHOUETTE 300M VER- SCHOBEN MANÖVER SIMULIERT VORBEREITUNG MANÖVER- PLANUNG 32
  43. STRATEGISCHES DESIGN MIT BOUNDED CONTEXTS 17.12.20 //// Seite 33 WPS

    – Workplace Solutions IDENTIFIZIERE DIE SUBDOMÄNEN TIEFE »10M« GEPEILT TIEFENZAHL EINGE- ZEICHNET TIEFE AN PEILDIENST GEMELDET TIEFENZAHL »ROT« GEFÄRBT TIEFEN- LINIE GEZOGEN PEILPLAN GEZEICHNET ZOOM- STUFEN BERECHNET UMLAUF- BAHN DES MONDES BERECHNET TIDEKURVE ERSTELLT SILHOUETTE DER LÄNGE 100M AUSGE- SCHNITTEN SILHOUETTE AUF ÖSTLICHE RICHTUNG GEDREHT SILHOUETTE 300M VER- SCHOBEN MANÖVER SIMULIERT PEILPLAN- ERSTELLUNG MANÖVER- PLANUNG 33 17.12.20 //// Seite 34 WPS – Workplace Solutions IDENTIFIZIERE DIE SUBDOMÄNEN TIEFE »10M« GEPEILT TIEFENZAHL EINGE- ZEICHNET TIEFE AN PEILDIENST GEMELDET TIEFENZAHL »ROT« GEFÄRBT TIEFEN- LINIE GEZOGEN PEILPLAN GEZEICHNET ZOOM- STUFEN BERECHNET UMLAUF- BAHN DES MONDES BERECHNET TIDEKURVE ERSTELLT SILHOUETTE DER LÄNGE 100M AUSGE- SCHNITTEN SILHOUETTE AUF ÖSTLICHE RICHTUNG GEDREHT SILHOUETTE 300M VER- SCHOBEN MANÖVER SIMULIERT PEILPLAN- ERSTELLUNG MANÖVER- PLANUNG TIEFEN- MESSUNG ZOOMSTUFEN- BERECHNUNG TIDE- VORHERSAGE 34
  44. STRATEGISCHES DESIGN MIT BOUNDED CONTEXTS 17.12.20 //// Seite 35 WPS

    – Workplace Solutions ERGEBNIS SICHERN! PEILPLAN GEZEICHNET ZOOM- STUFEN BERECHNET UMLAUF- BAHN DES MONDES BERECHNET TIDEKURVE ERSTELLT SILHOUETTE DER LÄNGE 100M AUSGE- SCHNITTEN MANÖVER- PLANUNG ZOOMSTUFEN- BERECHNUNG TIDE- VORHERSAGE 35 17.12.20 //// Seite 36 WPS – Workplace Solutions ÜBUNG: Findet Points-of-no-Return und identifiziert die Subdomänen des Kinos. 36
  45. STRATEGISCHES DESIGN MIT BOUNDED CONTEXTS 17.12.20 //// Seite 37 WPS

    – Workplace Solutions EIN WEITERES BEISPIEL 37 17.12.20 //// Seite 38 WPS – Workplace Solutions KUNDE WÜNSCHT SICH 1 VERKÄUFER UNTERSCHREIBT VON HÄNDIGT AUS FÜR VERTRAG 3 RISIKOMANAGER VERTRAG GIBT WEITER AN 4 VERTRAG VOTIERT PRÜFT BERECHNET 5 6 7 KALKU- LIERT AN 8 2 AUTO BONITÄT LEASING- RATE AUTO WIEDERVER- KAUFSWERT VERTRAG 38
  46. STRATEGISCHES DESIGN MIT BOUNDED CONTEXTS 17.12.20 //// Seite 39 WPS

    – Workplace Solutions KUNDE UNTERSCHREIBT VERTRAG 3 RISIKOMANAGER VERTRAG VOTIERT 7 <<En$ty>> Vertrag unterschreibe() vo$ere() 39 17.12.20 //// Seite 40 WPS – Workplace Solutions <<En$ty>> Vertrag unterschreibe() vo$ere() 40
  47. STRATEGISCHES DESIGN MIT BOUNDED CONTEXTS 17.12.20 //// Seite 41 WPS

    – Workplace Solutions <<En$ty>> Vertrag unterschreibe() vo$ere() verlaengere() beende() verkaufe_an_refinanzierer() … 41 42
  48. STRATEGISCHES DESIGN MIT BOUNDED CONTEXTS 17.12.20 //// Seite 43 WPS

    – Workplace Solutions KUNDE WÜNSCHT SICH 1 VERKÄUFER UNTERSCHREIBT VON HÄNDIGT AUS FÜR VERTRAG 3 RISIKOMANAGER VERTRAG GIBT WEITER AN 4 VERTRAG VOTIERT PRÜFT BERECHNET 5 6 7 KALKU- LIERT AN 8 2 AUTO BONITÄT LEASING- RATE AUTO WIEDERVER- KAUFSWERT VERTRAG VERTRIEB RISIKO-MANAGMENT VERTRIEB RISIKO-MANAGMENT 43 17.12.20 //// Seite 44 WPS – Workplace Solutions <<En$ty>> Vertrag unterschreibe() vo$ere() ✘ 44
  49. STRATEGISCHES DESIGN MIT BOUNDED CONTEXTS 17.12.20 //// Seite 45 WPS

    – Workplace Solutions <<En$ty>> Vertrag unterschreibe() <<En$ty>> Vertrag vo$ere() SALES RISK- MANAGE- MENT 45 17.12.20 //// Seite 46 WPS – Workplace Solutions Indikatoren: § Grenzen im Prozess § Statusänderungen, die das »Wesen« eines Arbeitsgegenstandes verändern (z.B.: § »Vertrag rechtskräftig«, § »Warenkorb bestellt«) § Abteilungen in der Organisation § Kontextuelle Sprache § Unterschiedlicher Umgang mit den Arbeitsgegenständen § NICHT: Nach Arbeitsgegenständen selbst! WIE SCHNEIDE ICH MEINE DOMÄNE? Foto: Wikipedia/PD-ScottForesman 46
  50. STRATEGISCHES DESIGN MIT BOUNDED CONTEXTS 17.12.20 //// Seite 47 WPS

    – Workplace Solutions NAMING BOUNDED CONTEXTS § Ausdrücken, was geschieht § Substantivierte Verben § Häufig: -ung-Formen PEILPLAN- ERSTELLUNG MANÖVER- PLANUNG TIEFEN- MESSUNG ZOOMSTUFEN- BERECHNUNG TIDE- VORHERSAGE 47 DOMÄNENSCHNITT MIT DOMAIN STORIES 48
  51. STRATEGISCHES DESIGN MIT BOUNDED CONTEXTS 17.12.20 //// Seite 49 WPS

    – Workplace Solutions FINDING SUBDOMAIN – IN DOMAIN STORIES § Stay coarse/medium grained § Form groups of steps § Draw boundaries around activities and work objects § Leave actors outside § The layout of the stories will change when boundaries are introduced § Indicators § Use “pure” domain stories § Focus on the paper process § Introduce virtual actors 49 LEGT NAUTIKER KAPITÄN FRAGT NACH 7 SCHIFFS- SILHOUETTE AUF PEILDIENST PEILSCHIFF TIEFE PEILT 1 SENDET 2 AN BERECHNET 3 ERZ EUGT 4 SENDET 5 PEILPLAN AN VERSCHIEBT & DREHT 8 SCHIFFS- SILHOUETTE UND FINDET 9 MELDET AN 6 ROUTE ROUTE PEILPLAN PEILPLAN TIEFEN- ZAHLEN ROUTE TIEFENLINIEN TIEFEN- MESSUNG Gruppiere die Schritte • Grenze um Activities und Work Objects • Akteure bleiben außerhalb Benenne die Gruppen 50
  52. STRATEGISCHES DESIGN MIT BOUNDED CONTEXTS 17.12.20 //// Seite 51 WPS

    – Workplace Solutions ÜBUNG: Zieht Grenzen in Domain Stories der Fallstudie 51 17.12.20 //// Seite 52 WPS – Workplace Solutions ZUSAMMENFASSUNG § Große Projekte werden auf mehrere Teams aufgeteilt § Ein Domänenmodell muss konsistent sein § Definiere einen Bounded Context für jedes Modell § Klare Grenzen § Das allumfassende Modell kann oft nicht gebaut werden § Bounded Contexts kommunizieren oft über Domain Events 52
  53. STRATEGISCHES DESIGN MIT BOUNDED CONTEXTS 17.12.20 //// Seite 53 WPS

    – Workplace Solutions ÜBUNG: Extrahiert die Subdomänen in eine Map. Über welche Events sind sie verbunden? 53
  54. STRATEGISCHES DESIGN MIT SUBDOMAINS WPS – Workplace Solutions #dddkonkret www.wps.de

    STRATEGISCHES DESIGN – MIT SUBDOMAINS Domain-Driven Design konkret 1 17.12.20 //// Seite 2 WPS – Workplace Solutions INHALT DOMÄNE DOMÄNE 2
  55. STRATEGISCHES DESIGN MIT SUBDOMAINS 17.12.20 //// Seite 3 WPS –

    Workplace Solutions ÜBERSICHT § Subdomains § Problem- versus Lösungsraum § Was ist Kern? § Verhältnis Subdomain/Bounded Context § Brownfield Strategic Design 3 17.12.20 //// Seite 5 WPS – Workplace Solutions PROBLEMRAUM VERSUS LÖSUNGSRAUM (PROBLEM SPACE VS. SOLUTIONS SPACE) § Problemraum: § Ermöglicht uns, über die geschäftlichen Herausforderungen nachzudenken § Hier befinden wir uns nur in der Fachlichkeit § Lösungsraum: § Konzentriert darauf, wie wir die Software implementieren, die das Problem löst § Hier gibt es auch Technik § (1-n) Bounded Contexts § Eine Menge von spezifischen Softwaremodellen Foto: gerat/pixabay/CC0 5
  56. STRATEGISCHES DESIGN MIT SUBDOMAINS 17.12.20 //// Seite 6 WPS –

    Workplace Solutions SUBDOMAINS § Teil der Domäne § Fachliche Einteilung § Schon da § Problemraum Foto: Wikipedia/CC BY-SA 2.5 6 17.12.20 //// Seite 7 WPS – Workplace Solutions VERHÄLTNIS BOUNDED CONTEXT/SUBDOMAIN § In einem Projekt das auf der grünen Wiese mit Strategischem Design gebaut wurde haben wir eine 1:1-Abbildung von BC und Subdomain § In der echten Welt ist oft ein Mismatch vorhanden § Legacy-Systeme sind oft »Unbounded Contexts« Zwei Seiten einer Medaille Foto: Dreibund Medaille/Wikipedia/CC BY-SA 3.0 7
  57. STRATEGISCHES DESIGN MIT SUBDOMAINS 17.12.20 //// Seite 8 WPS –

    Workplace Solutions TIDE- VORHER- SAGE TIEFEN- MESSUNG MANÖVER- PLANUNG IM HAFEN: SUBDOMAINS = BOUNDED CONTEXTS TIDE- VORHER- SAGE MANÖVER- PLANUNG TIEFEN- MESSUNG Subdomain Bounded Context 8 17.12.20 //// Seite 10 WPS – Workplace Solutions HAUPTBUCH- FÜHRUNG SUBDOMAINS/ABTEILUNGEN VS. BOUNDED CONTEXTS LOHNBUCH- HALTUNG PERSONAL -WESEN SAP BANKSYSTEM § Ziel: Eins-zu-eins-Abbildung § In brownfield-Situation oft nicht möglich. § Manchmal auch im Greenfield nicht möglich. Z.B. weil: § Standardsoftware eingesetzt wird § Technische Gründe Subdomain Context VERTRIEB Vertrieb 10
  58. STRATEGISCHES DESIGN MIT SUBDOMAINS 17.12.20 //// Seite 11 WPS –

    Workplace Solutions MISMATCH: KONTEXTE vs SUBDOMAINS CORE MASTER BI VERKAU F FAKTU RA VERSAND ARTIKEL TEAM BESTAND TEAM BI TEAM SALE TEA M LO G ISTIK BIG BALL OF PAIN 11 17.12.20 //// Seite 12 WPS – Workplace Solutions KONTEXTE – fachlich, organisatorisch, technisch technisch (SYSTEME/SYSTEMMODULE) fachlich (SUBDOMÄNEN) organisatorisch (TEAMS) 12
  59. STRATEGISCHES DESIGN MIT SUBDOMAINS 17.12.20 //// Seite 13 WPS –

    Workplace Solutions KONTEXTE – BEISPIEL: technisch CORE MASTER BI (Das Beispiel entspricht grob der tatsächlichen Situation bei einem Kunden) 13 17.12.20 //// Seite 14 WPS – Workplace Solutions KONTEXTE – NEGATIV-BEISPIEL: fachlich vs. technisch CORE MASTER BI V ERKA U F FA KTU RA VERSAND ARTIKEL- AUSWAHL 14
  60. STRATEGISCHES DESIGN MIT SUBDOMAINS 17.12.20 //// Seite 15 WPS –

    Workplace Solutions KONTEXTE – NEGATIV-BEISPIEL: fachlich vs. technisch vs. organisatorisch CORE MASTER BI VERKAU F FAKTU RA VERSAND ARTIKEL- AUSWAHL TEAM BESTAND TEAM BI TEAM SALE TEA M LO G ISTIK 15 17.12.20 //// Seite 16 WPS – Workplace Solutions KONTEXTE – NEGATIV-BEISPIEL: fachlich vs. technisch vs. organisatorisch CORE MASTER BI VERKAU F FAKTU RA VERSAND ARTIKEL- AUSWAHL TEAM BESTAND TEAM BI TEAM SALE TEA M LO G ISTIK AN DEN SCHNITTSTELLEN ENTSTEHEN „SCHMERZEN“! • fachlich • technisch • organisatorisch BIG BALL OF PAIN 16
  61. STRATEGISCHES DESIGN MIT SUBDOMAINS 17.12.20 //// Seite 17 WPS –

    Workplace Solutions KONTEXTE – POSITIV-BEISPIEL: fachlich V ERKA U F FA KTU RA ARTIKEL- AUSWAHL VERSAND 17 17.12.20 //// Seite 18 WPS – Workplace Solutions KONTEXTE – POSITIV-BEISPIEL: fachlich vs. technisch V ERKA U F FA KTU RA VERSAND ARTIKEL- AUSWAHL 18
  62. STRATEGISCHES DESIGN MIT SUBDOMAINS 17.12.20 //// Seite 19 WPS –

    Workplace Solutions KONTEXTE – POSITIV-BEISPIEL: fachlich vs. technisch vs. organisatorisch TEA M V ERKA U F TEA M FA KTU RA TEAM VERSAND TEAM ARTIKEL- AUSWAHL BOUNDED CONTEXTE! Es bleibt zusammen, was zusammen gehört! • fachlich • technisch • organisatorisch 19 17.12.20 //// Seite 20 WPS – Workplace Solutions KONTEXTE – NEGATIV-BEISPIEL: fachlich vs. technisch vs. organisatorisch CORE MASTER BI VERKAU F FAKTU RA VERSAND ARTIKEL- AUSWAHL TEAM BESTAND TEAM BI TEAM SALE TEA M LO G ISTIK TEA M V ERKA U F TEA M FA KTU RA TEAM VERSAND TEAM ARTIKEL- AUSWAHL 20
  63. STRATEGISCHES DESIGN MIT SUBDOMAINS 17.12.20 //// Seite 21 WPS –

    Workplace Solutions JEDER BOUNDED CONTEXT KANN EIN EIGENES TEAM HABEN § Entwicklung findet parallel statt § Jedes Team korrespondiert mit einem Teil des Modells 21 17.12.20 //// Seite 22 WPS – Workplace Solutions HORIZONTALE vs. VERTIKALE SCHICHTUNG VERTIKAL: fachlich HORIZONTAL: technisch ARTIKEL- AUSWAHL VERKAUF FAKTURA VERSAND UI APPLICATION INFRASTRUCTURE DATABASE 22
  64. STRATEGISCHES DESIGN MIT SUBDOMAINS 17.12.20 //// Seite 23 WPS –

    Workplace Solutions TEAM-ZUORDNUNG – BEISPIEL 1 VERTIKAL: fachlich HORIZONTAL: technisch ARTIKEL- AUSWAHL VERKAUF FAKTURA VERSAND UI APPLICATION INFRASTRUCTURE DATABASE TEAM ARTIKEL- AUSWAHL TEAM VERKAUF TEAM VERSAND TEAM FAKTURA 23 17.12.20 //// Seite 24 WPS – Workplace Solutions TEAM-ZUORDNUNG – BEISPIEL 2 – UI als BOUNDED CONTEXT? VERTIKAL: fachlich HORIZONTAL: technisch ARTIKEL- AUSWAHL VERKAUF FAKTURA VERSAND UI APPLICATION INFRASTRUCTURE DATABASE TEAM ARTIKEL- AUSWAHL TEAM VERKAUF TEAM VERSAND TEAM FAKTURA TEAM WEBSHOP ? 24
  65. STRATEGISCHES DESIGN MIT SUBDOMAINS 17.12.20 //// Seite 25 WPS –

    Workplace Solutions TEAM-ZUORDNUNG – BEISPIEL 3 VERTIKAL: fachlich HORIZONTAL: technisch ARTIKEL- AUSWAHL VERKAUF FAKTURA VERSAND UI APPLICATION INFRASTRUCTURE DATABASE TEAM ARTIKEL- AUSWAHL TEAM VERKAUF TEAM VERSAND TEAM WEBSHOP ? 25 17.12.20 //// Seite 26 WPS – Workplace Solutions SOCIOTECHNICAL § Conways Law++ 26
  66. STRATEGISCHES DESIGN MIT SUBDOMAINS 17.12.20 //// Seite 27 WPS –

    Workplace Solutions ÜBUNG: Subdomains zusammenführen: welche Subdomains werden Bounded Contexts? 27 28
  67. STRATEGISCHES DESIGN MIT SUBDOMAINS 17.12.20 //// Seite 29 WPS –

    Workplace Solutions CORE DOMAIN § Teil der Geschäftsdomäne § Von entscheidender Wichtigkeit für den Unternehmenserfolg èHier muss die Firma sich hervorherben èDieses Projekt sollte die höchste Priorität bekommen èDas Softwaresystem, das die Kerndomäne repräsentiert, ist ein Wettbewerbsvorteil, kein notwendiges Übel èUSP Grafik: Core by Virginie Angéloz from the Noun Project 29 17.12.20 //// Seite 30 WPS – Workplace Solutions SUPPORTING UND GENERIC SUBDOMAIN § Supporting Subdomain § Modelliert einen Aspekt, der entscheidend ist, aber nicht Teil des Kerns § Teilweise spezialisiert für das Geschäft § Generic Subdomain § Nicht spezialisiert § Notwendig für die Gesamtlösung èNicht unwichtig! èKein Bedarf hier exzellent zu sein Foto:Customer support/Sharique.m3em/Wikipedia/CC-BY-SA-4.0 30
  68. STRATEGISCHES DESIGN MIT SUBDOMAINS 17.12.20 //// Seite 32 WPS –

    Workplace Solutions SUBDOMAINS IM HAFEN TIDE- VORHER- SAGE MANÖVER- PLANUNG TIEFEN- MESSUNG 32 17.12.20 //// Seite 33 WPS – Workplace Solutions KANO-MODELL Kundenzufriedenheit Grad der Umsetzung Basis-Features Leistungs-Features Begeisterungs-Features In Core oder Supporting/Generic Domains? Noriaki Kano 33
  69. STRATEGISCHES DESIGN MIT SUBDOMAINS 17.12.20 //// Seite 34 WPS –

    Workplace Solutions PARETO-PRINZIP (80-20-REGEL) Wie akzeptabel wäre es, das Prinzip auf eine Core / supporting / generic Subdomain anzuwenden? Vilfredo Pareto 20 % 80 % Die letzten 20 % Die teuren 80 % Umfang Aufwand/ Zeit Basis Perfektion 34 17.12.20 //// Seite 35 WPS – Workplace Solutions BROWNFIELD STRATEGIC DESIGN § Ausgangspunkt: ein verworrener Monolith/Big Ball of Mud § Wahrscheinlich haben wir mehrere miteinander vermengte logische Domänenmodelle § Vorgehen: § Die vermengten Modelle als einzelne Subdomänen denken § D.h. logische Grenzen ziehen èSo können wir mit Komplexität umgehen § Mehrere Ubiquitous Languages: § Für jede gedachte Subdomain denken wir uns eine eigene UL èermöglicht Integration mit dem Altsystem Foto: cpmacdonald/pixabay/CCO 35
  70. STRATEGISCHES DESIGN MIT SUBDOMAINS 17.12.20 //// Seite 37 WPS –

    Workplace Solutions HOW TO SPLIT THE MONOLITH 1. How should it be? 1. Collaborative Modeling 2. “ideal” context map 2. How is it? 1. Architecture Analysis 2. As-is context map 3. How to move the “is” to the “ideal”? 1. Extract a supporting domain to learn 2. Then extract core(s) RISK MANAGE -MENT SALES 37 17.12.20 //// Seite 38 WPS – Workplace Solutions <<En$ty>> LeasingContract sign() vote() SALES RISK MANAGEMENT <<En$ty>> LeasingContract sign() vote() BIG BALL OF MUD <<En$ty>> LeasingContract sign() vote() 38
  71. STRATEGISCHES DESIGN MIT SUBDOMAINS 17.12.20 //// Seite 39 WPS –

    Workplace Solutions BOUNDED CONTEXT UND DEPLOYMENT Distributed Big Ball Of Mud „Modulith“ Microservices (Bounded Contexte) Monolithic Big Ball Of Mud 39 17.12.20 //// Seite 40 WPS – Workplace Solutions FAKE TWINS SOA Bounded Context Architecture 40
  72. STRATEGISCHES DESIGN MIT SUBDOMAINS 17.12.20 //// Seite 41 WPS –

    Workplace Solutions @JoernKoch Brotschneidekaffeemühle nsalzstreukocherspülmas chinenofenwassermaschi nenbrotmesserespresso BIG BALL OF MUD 41 17.12.20 //// Seite 42 WPS – Workplace Solutions @JoernKoch Brotschneidekaffeemühle nsalzstreukocherspülmas chinenofenwassermaschi nenbrotmesserespresso BIG BALL OF MUD 42
  73. STRATEGISCHES DESIGN MIT SUBDOMAINS 17.12.20 //// Seite 43 WPS –

    Workplace Solutions @JoernKoch Brot Kocher Spül Maschine Espresso Schneide Kaffee Messer Ofen Wasser Salz Mühle Streuer SOA 43 17.12.20 //// Seite 44 WPS – Workplace Solutions @JoernKoch Brot Kocher Spül Maschine Espresso Schneide Kaffee Messer Ofen Wasser Salz Mühle Streuer SOA BROT GESCHNIT- TEN ? 44
  74. STRATEGISCHES DESIGN MIT SUBDOMAINS 17.12.20 //// Seite 45 WPS –

    Workplace Solutions @JoernKoch Brot Maschine Schneide SOA BROT GESCHNIT- TEN ? 45 17.12.20 //// Seite 46 WPS – Workplace Solutions @JoernKoch Brot Spül Maschine Schneide Messer SOA BROT GESCHNIT- TEN ? 46
  75. STRATEGISCHES DESIGN MIT SUBDOMAINS 17.12.20 //// Seite 47 WPS –

    Workplace Solutions @JoernKoch Brotschneidemaschine Spülmaschine Wasserkocher Kaffeemühle Salzstreuer Brotmesser Ofen Espressokocher Bounded Context Architektur 47 17.12.20 //// Seite 48 WPS – Workplace Solutions @JoernKoch Brotschneidemaschine Spülmaschine Wasserkocher Kaffeemühle Salzstreuer Brotmesser Ofen Espressokocher Bounded Context Architektur BROT GESCHNIT- TEN 48
  76. STRATEGISCHES DESIGN MIT SUBDOMAINS 17.12.20 //// Seite 49 WPS –

    Workplace Solutions @JoernKoch Brotschneidemaschine Bounded Context Architektur BROT GESCHNIT- TEN 49 17.12.20 //// Seite 50 WPS – Workplace Solutions @JoernKoch Brotschneidemaschine Bounded Context Architektur Spülmaschine BROT GESCHNIT- TEN GESCHIRR GESPÜLT 50
  77. STRATEGISCHES DESIGN MIT SUBDOMAINS 17.12.20 //// Seite 51 WPS –

    Workplace Solutions @JoernKoch Brotschneidemaschine Bounded Context Architektur Spülmaschine Team A Team B 51 SOA Bounded Context Architektur 0:1 ? 52
  78. STRATEGISCHES DESIGN MIT SUBDOMAINS 17.12.20 //// Seite 53 WPS –

    Workplace Solutions @JoernKoch Bounded Context Architektur SOA SOA SOA 53 17.12.20 //// Seite 54 WPS – Workplace Solutions TECHNISCHE DOMÄNEN § WELCHES TEAM KÜMMERT SICH UM § das OPERATING? § die MESSAGING-Infrastruktur? § die Entwicklung einer UI-WIDGET-LIBRARY? § … § Neben den FACHLICHEN Problemfeldern gibt es auch immer TECHNISCHE Problemfelder. § ANSÄTZE: § Jedes Team kümmert sich selbst um alle technischen Aspekte § evtl. ergänzt um „Communities of Practice“ oder „Tribes“ § Zusätzliche Teams für „technische Domänen“ 54
  79. STRATEGISCHES DESIGN MIT SUBDOMAINS 17.12.20 //// Seite 55 WPS –

    Workplace Solutions ZUSAMMENFASSUNG § Die Domäne § hat einen Lösungs- und einen Problemraum § Zerfällt in Subdomains § Subdomains sind unterschiedlich wichtig § Die Core Domain ist am wichtigsten § Auch im Brownfield ist strategisches Design möglich 55 17.12.20 //// Seite 56 WPS – Workplace Solutions ÜBUNG: Was ist CORE-Domain? Was Supporting / Generic? (Annotiert “C” / “S” / “G”) 56
  80. CONTEXT MAPPING WPS – Workplace Solutions #dddkonkret www.wps.de CONTEXT MAPPING

    Domain-Driven Design konkret 1 17.12.20 //// Seite 2 WPS – Workplace Solutions INHALT DOMÄNE DOMÄNE 2
  81. CONTEXT MAPPING 17.12.20 //// Seite 3 WPS – Workplace Solutions

    ÜBERSICHT § Context Map § Arten von Mapping § Beziehungen zwischen Bounded Contexts § Beziehungen zwischen Teams § Integration von Bounded Contexts 3 17.12.20 //// Seite 4 WPS – Workplace Solutions CONTEXT MAP § Landkarte der Kontexte § Jedes Team kennt seinen Kontextgrenzen. Wie steht es um die anderen? § Eine Kontextübersicht skizziert § Die verschiedenen Bounded Contexts § ihre wechselseitigen Beziehungen § Bounded Contexts sollten benannt sein. 4
  82. CONTEXT MAPPING 17.12.20 //// Seite 5 WPS – Workplace Solutions

    CONTEXT-MAPPING IM HAFEN-BEISPIEL TIDE- VORHER- SAGE MANÖVER- PLANUNG TIEFEN- MESSUNG 5 17.12.20 //// Seite 6 WPS – Workplace Solutions CONTEXT MAPPING § Kollaboration § Partnership § Separate Ways § Upstream-Downstream § Customer-Supplier § Conformist § Technische Umsetzung § Privatschnittstelle § Open-Host-Service § Shared Kernel § Modelle § Published Language § Anti-Corruption Layer 6
  83. CONTEXT MAPPING 17.12.20 //// Seite 7 WPS – Workplace Solutions

    PARTNERSHIP § Die Teams einigen sich gemeinsam auf die Schnittstelle § Gemeinsames Ziel/Von einander abhängige Ziele § Teams können nur gemeinsam Erfolg haben § Regelmäßige Treffen § Continuous Integration § Generell hoher Synchronisationsaufwand Foto: Wikipedia/flickr/CC-BY Ryan C 7 17.12.20 //// Seite 8 WPS – Workplace Solutions UPSTREAM/DOWNSTREAM-BEZIEHUNGEN § Ein Team liefert für ein anderes § Upstream-Team § Setzt eine Fachlichkeit um § Downstream-Team § Setzt darauf auf § Datenfluss vs. Modellvorgabe Foto: benralexander/pixabay/CC0 8
  84. CONTEXT MAPPING 17.12.20 //// Seite 9 WPS – Workplace Solutions

    CONTEXT-MAPPING IM HAFEN-BEISPIEL TIDE- VORHER- SAGE MANÖVER- PLANUNG TIEFEN- MESSUNG US DS US DS 9 17.12.20 //// Seite 10 WPS – Workplace Solutions CUSTOMER/SUPPLIER § Supplier-Team (upstream) § Customer-Team (downstream) § Das Supplier-Team lässt sich vom Customer-Team beeinflussen § Vorteil: § Customer gibt benötigte Anforderungen an Supplier weiter § Supplier setzt Anforderungen mit gleicher Priorisierung um, wie Customer die Anforderungen vom eigentlichen Endanwender Foto: Clker-Free-Vector-Images/pixabay/CC0 10
  85. CONTEXT MAPPING 17.12.20 //// Seite 11 WPS – Workplace Solutions

    CONTEXT-MAPPING IM HAFEN-BEISPIEL TIDE- VORHER- SAGE MANÖVER- PLANUNG TIEFEN- MESSUNG SUPP CUST 11 17.12.20 //// Seite 12 WPS – Workplace Solutions CONFORMIST § Das Upstream-Team setzt keine Anforderungen des Downstream-Teams um § Das Downstream-Team übernimmt das Modell des Upstream-Team Foto: Staff Sgt. D. Myles Cullen/Wikipedia/PD US Air Force 12
  86. CONTEXT MAPPING 17.12.20 //// Seite 13 WPS – Workplace Solutions

    CONTEXT-MAPPING IM HAFEN-BEISPIEL TIDE- VORHER- SAGE MANÖVER- PLANUNG TIEFEN- MESSUNG CONFORMIST 13 17.12.20 //// Seite 14 WPS – Workplace Solutions ANTI-CORRUPTION LAYER § Der Anticorruption-Layer… § ist eine Architekturschicht, welche zwischen Domain-Modell und dem Modell eines angrenzenden Systems vermittelt. § schützt das eigene Domain-Modell davor, durch das Modell des angrenzenden Systems ungewollt beeinflusst zu werden. Domain Model Anticorruption Layer Angrenzendes System 14
  87. CONTEXT MAPPING 17.12.20 //// Seite 15 WPS – Workplace Solutions

    CONTEXT-MAPPING IM HAFEN-BEISPIEL TIDE- VORHER- SAGE MANÖVER- PLANUNG ACL TIEFEN- MESSUNG 15 17.12.20 //// Seite 16 WPS – Workplace Solutions OPEN-HOST-SERVICE § Definiert ein Protokoll/Interface zu einem Bounded Context § Als eine Menge von Services § Offen, weil jeder das Protokoll verwenden kann § Die entstehende API ist wohldefiniert und –dokumentiert § Vereinfachtes Modell Foto: edwardpye/pixabay/CC0 16
  88. CONTEXT MAPPING 17.12.20 //// Seite 17 WPS – Workplace Solutions

    CONTEXT-MAPPING IM HAFEN-BEISPIEL TIDE- VORHER- SAGE MANÖVER- PLANUNG TIEFEN- MESSUNG OHS 17 17.12.20 //// Seite 18 WPS – Workplace Solutions PUBLISHED LANGUAGE § Eine gut dokumentierte Sprache zum Informationsaustausch § Kann definiert werden in § XML Schema § JSON Schema § Protobuf § Usw. § Oft »spricht« ein Open-Host-Service eine PL § Beispiele: § SEPA-XML für Überweisungen und Mandate § BIPRO für Versicherungen § HL7 für Gesundheitswesen § WMS für Kartendaten Foto: Merker Berlin/Wikipedia/PD-self 18
  89. CONTEXT MAPPING 17.12.20 //// Seite 19 WPS – Workplace Solutions

    CONTEXT-MAPPING IM HAFEN-BEISPIEL TIEFEN- MESSUNG KARTO- GRAPHIE PL 19 17.12.20 //// Seite 20 WPS – Workplace Solutions SHARED KERNEL § Teams verwenden mitunter ähnliche Modelle. § Um Duplizierung zu vermeiden, einigen sich diese Teams auf ein gemeinsam genutztes Teilmodell, den Shared Kernel. § Wird dieser Shared Kernel weiterentwickelt, werden alle beteiligten Teams mit einbezogen. § Die Kontexte der Teams bleiben weiterhin voneinander abgegrenzt. Foto: Sander van der Wel/Wikipedia/CC BY-SA 2.0 20
  90. CONTEXT MAPPING 17.12.20 //// Seite 21 WPS – Workplace Solutions

    BIG BALL OF MUD § Context-Mapping Anti-Pattern Foto: Benutzer:Summi/Wikipedia/CC-BY-SA-3.0-migrated 21 17.12.20 //// Seite 22 WPS – Workplace Solutions SEPARATE WAYS § Wenn die Integration zweier Bounded Contexts nicht genug Nutzen verspricht, dann lass jedes Team seinen eigenen Weg gehen § Jeweils eigene spezialisierte Lösungen Foto: Doris Antony/Wikipedia/CC-BY-SA-4.0,3.0,2.5,2.0,1.0 22
  91. CONTEXT MAPPING 17.12.20 //// Seite 23 WPS – Workplace Solutions

    Übersicht Notwendige Kommunikation Separate Ways Conformist Anti Corruption Layer Customer Supplier Open Host Service Shared Kernel Single Bounded Context PL? DS DS/US US DS/US Partner Partner 23 17.12.20 //// Seite 24 WPS – Workplace Solutions INTEGRATION VON BOUNDED CONTEXTS § Im Monolithen: § Methodenaufruf § Façade § Observer § Mit Microservices: § RPC § SOAP § REST § Messaging Foto: unclelkt/pixabay/CC0 24
  92. CONTEXT MAPPING 17.12.20 //// Seite 25 WPS – Workplace Solutions

    INTEGRATION IM HAFEN-BEISPIEL TIDE- VORHER- SAGE MANÖVER- PLANUNG CSV- IMPORT TIEFEN- MESSUNG REST 25 17.12.20 //// Seite 26 WPS – Workplace Solutions CONTEXT-MAPPING IM HAFEN-BEISPIEL TIDE- VORHER- SAGE MANÖVER- PLANUNG ACL TIEFEN- MESSUNG OHS SUPP. CUST. US CONFORM IST DS REST CSV- IMPORT 26
  93. CONTEXT MAPPING 17.12.20 //// Seite 27 WPS – Workplace Solutions

    ZUSAMMENFASSUNG § Eine Kontextkarte zeigt alle Kontexte und ihre Beziehungen § Es gibt unterschiedliche Arten von Context Mapping § Auf Team-Ebene § Auf Bounded-Context-Ebene 27 17.12.20 //// Seite 28 WPS – Workplace Solutions ÜBUNG: Annotiere die Subdomänen / Bounded Context Map mit den Context-Mapping Patterns. (OPTIONAL) 28
  94. UBIQUITOUS LANGUAGE WPS – Workplace Solutions #dddkonkret www.wps.de UBIQUITOUS LANGUAGE

    Domain-Driven Design konkret 1 17.12.20 //// Seite 2 WPS – Workplace Solutions ÜBERSICHT § Technische Sprache vs. Domänen-Sprache § Warum eine Ubiquitous Language? § Sprachen sind lebendig DOMÄNE DOMÄNE 2
  95. UBIQUITOUS LANGUAGE “There are only two hard things in Computer

    Science: cache invalidation and naming things.” Phil Karlton 3 17.12.20 //// Seite 4 WPS – Workplace Solutions TECHNISCHE SPRACHE Auf den Feature Branch pushen? Den Container hochfahren Ich baue dafür ein Interface Foto: Boboss74/deviantart Foto: Cronoxyd/Wikipedia/CC BY-SA 3.0 Foto: Microsoft/Wikipedia/PD ineligible 4
  96. UBIQUITOUS LANGUAGE 17.12.20 //// Seite 5 WPS – Workplace Solutions

    DOMÄNEN-SPRACHE – BEISPIEL MANÖVERPLANUNG Tiefenzahl Maßstab Silhouette Peilplan Markierung Länge ü.a. Breite Baggertoleranz 5 17.12.20 //// Seite 6 WPS – Workplace Solutions DOMÄNEN-SPRACHE – BEISPIEL SCHACH Brett König Figuren Spieler Schachuhr Foto: Fotograf Frank Hoppe/ Garry Kasparov/Wikipedia/PD-self Foto: Wikipedia/PD shape Foto: Thomas Depenbusch (Depi)/flickr/CC BY 2.0 Foto: Wikipedia/CC BY-SA 3.0 Foto: Wikipedia/CC BY-SA 3.0 6
  97. UBIQUITOUS LANGUAGE 17.12.20 //// Seite 7 WPS – Workplace Solutions

    DOMÄNEN-SPRACHE – BEISPIEL SCHACH II Remis Zugzwang Schachmatt Partie Zug Rochade 7 17.12.20 //// Seite 8 WPS – Workplace Solutions DOMÄNEN-SPRACHE – BEISPIEL SCHACH III – VERBEN Aufgeben Ziehen Schlagen Schachuhr drücken Rochieren 8
  98. UBIQUITOUS LANGUAGE 17.12.20 //// Seite 9 WPS – Workplace Solutions

    KATEGORISIERUNG ANHAND EINES BEISPIELS A B C D E F G • Gruppiere • Begründe die Gruppierung 9 17.12.20 //// Seite 10 WPS – Workplace Solutions WARUM BRAUCHEN WIR EINE UBIQUITOUS LANGUAGE? Fach- sprache Techno Babble ? Domain Expert Developer 10
  99. UBIQUITOUS LANGUAGE 17.12.20 //// Seite 11 WPS – Workplace Solutions

    Fach- sprache Techno Babble Fach- sprache WARUM BRAUCHEN WIR EINE UBIQUITOUS LANGUAGE? 11 17.12.20 //// Seite 12 WPS – Workplace Solutions Fach- sprache Techno Babble WARUM BRAUCHEN WIR EINE UBIQUITOUS LANGUAGE? 12
  100. UBIQUITOUS LANGUAGE 17.12.20 //// Seite 13 WPS – Workplace Solutions

    Techno Babble Fach- sprache WARUM BRAUCHEN WIR EINE UBIQUITOUS LANGUAGE? 13 17.12.20 //// Seite 14 WPS – Workplace Solutions Fach- sprache Techno Babble UBIQUITOUS LANGUAGE 14
  101. UBIQUITOUS LANGUAGE 17.12.20 //// Seite 15 WPS – Workplace Solutions

    Fach- sprache { Techno Babble } ? UBIQUITOUS LANGUAGE 15 17.12.20 //// Seite 16 WPS – Workplace Solutions Fach- sprache { Fach- sprache } UBIQUITOUS LANGUAGE public class Peilplan { public void zieheTiefenlinien() { /* ... */ } public void faerbeTiefenzahlen() { /* ... */ } /* ... */ } 16
  102. UBIQUITOUS LANGUAGE 17.12.20 //// Seite 17 WPS – Workplace Solutions

    UBIQUITOUS LANGUAGE § Fachexperten verstehen keine Begriffe zu technischen Umsetzungen § Fachexperten sprechen den Jargon ihrer Domäne, der für Außenstehende wiederum schwer verständlich sein kann è Eine gemeinsame Sprache ist notwendig! § Welche soll es sein? § Die der Entwickler? § Die der Fachexperten? § Etwas dazwischen? èPrinzip von DDD: »Verwende eine Sprache die auf dem Domänenmodell basiert« Foto: The Tower of Babel/Pieter Brueghel the Elder/Wikipedia/CC-PD-Mark 17 17.12.20 //// Seite 18 WPS – Workplace Solutions UBIQUITOUS LANGUAGE § Verwende die gemeinsame Sprache in.. § der Kommunikation § mündlich § schriftlich § grafisch § im Code § Im Grunde genommen überall è Deswegen nennt sich die Sprache ubiquitous oder allgegenwärtig. 18
  103. UBIQUITOUS LANGUAGE 17.12.20 //// Seite 19 WPS – Workplace Solutions

    Fach- sprache Techno Babble Fach- sprache WIE ENTWICKELN WIR EINE UBIQUITOUS LANGUAGE? 19 17.12.20 //// Seite 20 WPS – Workplace Solutions WIE ENTWICKELN WIR EINE UBIQUITOUS LANGUAGE? § Event Storming § Domain Storytelling § Interviews § Szenarien § Glossar 20
  104. UBIQUITOUS LANGUAGE 17.12.20 //// Seite 21 WPS – Workplace Solutions

    DOMAIN STORYTELLING § Ausprobieren § Erklären § Beispiele § Bounded Contexts mit Domain Storytelling 21 17.12.20 //// Seite 22 WPS – Workplace Solutions KONKRETE GESCHICHTEN VS. ABSTRAKTE ABLÄUFE 22
  105. UBIQUITOUS LANGUAGE LEGT NAUTIKER KAPITÄN FRAGT NACH 7 SCHIFFS- SILHOUETTE

    AUF PEILDIENST PEILSCHIFF TIEFE PEILT 1 SENDET 2 AN BERECHNET 3 ERZEUGT 4 SENDET 5 PEILPLAN AN VERSCHIEBT & DREHT 8 SCHIFFS- SILHOUETTE UND FINDET 9 MELDET AN 6 ROUTE ROUTE PEILPLAN PEILPLAN TIEFEN- ZAHLEN ROUTE TIEFENLINIEN 23 17.12.20 //// Seite 24 WPS – Workplace Solutions ÜBUNG: DOMAIN STORYTELLING IM PLENUM § Popcorn und Getränke kaufen Foto: Derks24/pixabay/CC0 24
  106. UBIQUITOUS LANGUAGE 17.12.20 //// Seite 25 WPS – Workplace Solutions

    EINZELNER SATZ… »Der Peildienst schickt den Peilplan an den Nautiker.« PEILDIENST NAUTIKER SCHICKT PEIL- PLAN AN 25 17.12.20 //// Seite 26 WPS – Workplace Solutions Actor Work Object Activity Note BILDWORTSCHATZ THE QUICK BROWN FOX… 26
  107. UBIQUITOUS LANGUAGE 17.12.20 //// Seite 28 WPS – Workplace Solutions

    Person Gruppe IT-System BILDWORTSCHATZ – FÜR UNTERSCHIEDLICHE ACTORS 28 17.12.20 //// Seite 29 WPS – Workplace Solutions BILDWORTSCHATZ – FÜR UNTERSCHIEDLICHE WORK OBJECTS PEILT ZEICHNET PEILPLAN TIEFE 29
  108. UBIQUITOUS LANGUAGE 17.12.20 //// Seite 30 WPS – Workplace Solutions

    BILDWORTSCHATZ – FÜR UNTERSCHIEDLICHE MEDIEN ROUTE PEILPLAN FRAGT NACH SCHICKT 30 17.12.20 //// Seite 31 WPS – Workplace Solutions Actor Work Object Activity Note BILDWORTSCHATZ – KEIN IF/SWITCH/OR/… 31
  109. UBIQUITOUS LANGUAGE 17.12.20 //// Seite 32 WPS – Workplace Solutions

    AKTEURE EINFACH/WORK ITEMS MEHRFACH ERSTELLT 4 SCHICKT 3 PEILPLAN PEILPLAN PEILDIENST 32 ßDraw here Leave some empty space there à Annotations, variations, and purpose Preconditions, assumptions, and triggers Name of the Domain Story 33
  110. UBIQUITOUS LANGUAGE 17.12.20 //// Seite 34 WPS – Workplace Solutions

    »Denn manchmal sind drei gute Beispiele besser für das Verständnis der Anforderungen als eine schlechte Abstraktion.« Peter Hruschka in Busines Analysis und Requirements Engineering, S.102, Hanser, 2014 34 17.12.20 //// Seite 35 WPS – Workplace Solutions MODERATOR- VS CO-OP-MODUS 35
  111. UBIQUITOUS LANGUAGE 17.12.20 //// Seite 36 WPS – Workplace Solutions

    WERKZEUGE – ANALOG 36 17.12.20 //// Seite 37 WPS – Workplace Solutions WERKZEUGE – DIGITAL PowerPoint 37
  112. UBIQUITOUS LANGUAGE 17.12.20 //// Seite 38 WPS – Workplace Solutions

    EGON.IO – THE DOMAIN STORY MODELER https://www.wps.de/modeler/ • www.egon.io/ • github.com/WPS/domain-story-modeler 38 17.12.20 //// Seite 39 WPS – Workplace Solutions § Coarse Grained § Find Context Boundaries § (Medium Grained) § Fine Grained § Implement Domain Model § As-is § Paper process § To-be § Optimized § With System § Finding Shadow IT § Process Optimization FLAVORS 39
  113. UBIQUITOUS LANGUAGE 17.12.20 //// Seite 40 WPS – Workplace Solutions

    http://domainstorytelling.org Twitter: @hofstef 40 15$ online: leanpub.com/domainstorytelling Gratis Einführung mit allem was man wissen muss Kurzer Überblick 41
  114. UBIQUITOUS LANGUAGE 15$ online: leanpub.com/domainstorytelling Gratis Einführung mit allem was

    man wissen muss Kurzer Überblick Rabatt! https://leanpub.com/domainstorytelling/c/dddkonkret 42 17.12.20 //// Seite 43 WPS – Workplace Solutions Wir empfehlen: § Reden, reden, reden § Collaborative Modeling: § Event Storming § Domain Storytelling § Interviews & Szenarien § Glossare § … DIE UBIQUITOUS LANGUAGE ENTWICKELN Fach- sprache Fach- sprache 43
  115. UBIQUITOUS LANGUAGE 17.12.20 //// Seite 45 WPS – Workplace Solutions

    UML, BPMN & Co sind mit Vorsicht zu genießen: § Von Software-Entwicklern für Software- Entwickler § Für Workshops bedingt geeignet à Gefahr, dem Kunden ungewollte eine abstrakte IT-Sicht aufzudrängen § Schwerpunkt auf Dokumentation statt auf Kommunikation DIE UBIQUITOUS LANGUAGE ENTWICKELN Fach- sprache Techno Babble ? 45 17.12.20 //// Seite 46 WPS – Workplace Solutions ÜBUNG: DOMAIN STORYTELLING SELBERMACHEN § Domain Story für »Einlass und Filmvorführung« Foto: Derks24/pixabay/CC0 46
  116. UBIQUITOUS LANGUAGE 17.12.20 //// Seite 47 WPS – Workplace Solutions

    GLOSSAR § Für Kernkonzepte (weil viel Arbeit) § bereits existierende Begriffe § rekonstruierte Begriffe § neue Begriffsbildungen § Wichtiger am Anfang des Projektes und für neue Mitarbeiter § Oft Wegwerfprodukt (nicht mehr gepflegt) § Ein Wörterbuch ersetzt keinen Sprachkurs! Woher kommen die Wörter fürs Glossar? Foto: George Eastman Museum/Wikipedia 47 17.12.20 //// Seite 48 WPS – Workplace Solutions GLOSSAR – BEISPIELDOMÄNE SCHACH SPIELER EINE VON ZWEI PERSONEN, DIE FIGUREN AUF DEM BRETT BEWEGT. SPRINGER (PFERD) EINE FIGUR, VON DER JEDER SPIELER ZWEI BESITZT. WIRD ZWEI FELDER VOR UND EINES ZUR SEITE BEWEGT. SPRINGT BEIM VORZIEHEN ÜBER FIGUREN HINWEG, OHNE SIE ZU SCHLAGEN. Beschreibung Begriff Oberbegriff Unterscheidungs -merkmale Verweis auf anderen Begriff Synonym 48
  117. UBIQUITOUS LANGUAGE 17.12.20 //// Seite 49 WPS – Workplace Solutions

    § Ein Team spricht eine eigene Sprache è Familiensprache, Dialekt § Gleiche Begriffe können (leicht) unterschiedliche Bedeutung haben § Sprache und Modell sind eng gekoppelt JEDER BOUNDED CONTEXT HAT SEINE EIGENE UBIQUITOUS LANGUAGE MARKIER- UNG PEIL- PLAN TIEFEN- ZAHL MANÖVERPLANUNG TIEFEN- MESSUNG PEIL- SCHIFF TIEFEN- ZAHL 49 17.12.20 //// Seite 50 WPS – Workplace Solutions JEDER BOUNDED CONTEXT HAT SEIN EIGENES GLOSSAR TIEFENZAHL PER ECHOLOT GEMESSENE TIEFE BEI NORMALNULL TIEFENMESSUNG TIEFENZAHL TIEFE AN EINEM BESTIMMTEN ORT UNTER BERÜCKSICHTIGUNG VON EBBE UND FLUT MANÖVER- PLANUNG GEMESSENE TIEFENZAHL Integer-Wert in Zentimetern bezogen auf N.N. Ein »traditionelles« Data- Dictionary ist als »Glossar« für die Published-Language sinnvoll 50
  118. UBIQUITOUS LANGUAGE 17.12.20 //// Seite 51 WPS – Workplace Solutions

    SPRACHE TAUCHT NICHT EINFACH AUF § Es braucht Wochen bis Monate... § harter Arbeit § und scharfem Fokus § … um die Schlüsselkonzepte offenzulegen. § Die ersten Wörter einer allgegenwärtigen Sprache kommen üblicherweise direkt aus der Domäne § Im Laufe der Entwicklung werden neue Begriffe definiert und hinzugefügt 51 17.12.20 //// Seite 52 WPS – Workplace Solutions DOMÄNEN-SPRACHE Brett König Figuren Spieler Schachuhr Foto: Fotograf Frank Hoppe/ Garry Kasparov/Wikipedia/PD-self Foto: Wikipedia/CC BY-SA 3.0 Foto: Wikipedia/PD shape Foto: Wikipedia/CC BY-SA 3.0 Foto: Thomas Depenbusch (Depi)/flickr/CC BY 2.0 52
  119. UBIQUITOUS LANGUAGE 17.12.20 //// Seite 53 WPS – Workplace Solutions

    UBIQUITOUS LANGUAGE Brett Figuren Spieler Foto: Fotograf Frank Hoppe/ Garry Kasparov/Wikipedia/PD-self Foto: Wikipedia/PD shape Foto: Wikipedia/CC BY-SA 3.0 53 17.12.20 //// Seite 54 WPS – Workplace Solutions UBIQUITOUS LANGUAGE – ITERATION 2 Figuren Spieler Nichtmenschlicher Spieler Brett Foto: Fotograf Frank Hoppe/ Garry Kasparov/Wikipedia/PD-self Foto: Wikipedia/PD shape Foto: Wikipedia/CC BY-SA 3.0 Foto: Jim Gardner/Wikipedia/CC BY 2.0 54
  120. UBIQUITOUS LANGUAGE 17.12.20 //// Seite 55 WPS – Workplace Solutions

    SPRACHEN SIND LEBENDIG § Experimentiere mit alternativen Ausdrucksformen § Das Modell und die Sprache entwickeln sich weiter § Überarbeite dann den Code § Benenne Klassen, Methoden, Module § Entspreche dem neuen Modell § Eine Sprache will gesprochen werden: § Beseitige Unklarheiten durch Konversation Foto: Tkgd2007/Wikipedia/CC BY-SA 3.0 55 17.12.20 //// Seite 56 WPS – Workplace Solutions PROBLEME IN FACHSPRACHE DISKUTIEREN UND LÖSEN Wenn Entwickler vor technischen Problemen stehen… … können die Entwickler versuchen, sie auf eigene Faust technisch zu lösen, … oder mit den Domain Experts VIELLEICHT einen guten fachlichen Workaround finden. Dazu beschreiben wir das technische Problem aus fachlicher Sicht in unserer Ubiquitous Language. Bild: pinterest.com 56
  121. UBIQUITOUS LANGUAGE 17.12.20 //// Seite 57 WPS – Workplace Solutions

    BEISPIEL: PROBLEME IN FACHSPRACHE DISKUTIEREN UND LÖSEN Entwickler unter sich: »Wie bauen wir das Housekeeping der Schiffssilhouetten-Tabelle in der Oracle-DB?« »Keine Ahnung, lass uns den Nautiker fragen.« Entwickler zum Nautiker: »Wie lange müssen Schiffssilhouetten aufbewahrt werden?« Nautiker: »Gar nicht mehr. Früher war das hilfreich, als wir sie noch aus Pappe basteln mussten. Jetzt mit der Software ist es so einfach, mal eben eine neue Silhouette anzulegen… das reicht völlig.« Entwickler am Rechner: »DROP TABLE Schiffsilhouetten;« 57 17.12.20 //// Seite 58 WPS – Workplace Solutions ZUSAMMENFASSUNG § Softwareentwickler und Fachexperten sprechen verschiedene Sprachen § Wir brauchen eine gemeinsame Sprache -> die Ubiquitous Language § Jeder Bounded Context hat seine eigene Ubiquitous Language § Jeder muss die Ubiquitous Language verwenden § Die Ubiquitous Language entwickelt sich im Projektverlauf weiter 58
  122. UBIQUITOUS LANGUAGE 17.12.20 //// Seite 59 WPS – Workplace Solutions

    ÜBUNG: UBIQUITOUS LANGUAGE(S) EXTRAHIEREN § Schreibe Glossareinträge für einen Begriff, der in mind. 2 Subdomänen verwendet wird. § Eine Karte/Sticky pro Begriff/Subdomäne § Kurze Beschreibung in 1-2 Sätzen Foto: Derks24/pixabay/CC0 Subdomäne: PEILDIENST Begriff: Tiefenzahl Beschreibung: … Subdomäne: MANÖVER-PLANUNG Begriff: Tiefenzahl Beschreibung: … 59
  123. DOMÄNENMODELL WPS – Workplace Solutions #dddkonkret www.wps.de DAS DOMÄNENMODELL ENTWICKELN

    Domain-Driven Design konkret 1 17.12.20 //// Seite 2 WPS – Workplace Solutions INHALT DOMÄNE DOMÄNE 2
  124. DOMÄNENMODELL 17.12.20 //// Seite 3 WPS – Workplace Solutions ARCHITEKTUR

    MIT BOUNDED CONTEXTS TIDE- VORHER- SAGE MANÖVER- PLANUNG TIEFENMESSUNG 3 17.12.20 //// Seite 4 WPS – Workplace Solutions ARCHITEKTUR INNERHALB EINES BOUNDED CONTEXT MANÖVER- PLANUNG User Interface Domain Infrastructure Application 4
  125. DOMÄNENMODELL 17.12.20 //// Seite 5 WPS – Workplace Solutions DOMAIN-DRIVEN

    DESIGN – SCHICHTENARCHITEKTUR § User-Interface-Schicht § Nimmt Eingaben und Benutzerkommandos entgegen und stellt Informationen dar. § Application-Schicht (bei Fowler: Service Layer) § Beschreibt und koordiniert Geschäftsprozesse. § Domain-Schicht § Repräsentiert die Fachdomäne. § Infrastruktur-Schicht § Bietet technische Dienste, wie beispielsweise Persistenz oder die Kommunikation mit anderen Systemen. User Interface Domain Infrastructure Application 5 17.12.20 //// Seite 6 WPS – Workplace Solutions ARCHITEKTUR DER DOMAIN-SCHICHT? User Interface Domain Infrastructure Application MANÖVER- PLANUNG 6
  126. DOMÄNENMODELL 17.12.20 //// Seite 7 WPS – Workplace Solutions FOWLER:

    DOMAIN LOGIC PATTERNS § Transaction Script § Table Module § Domain Model § (Anemic Domain Model) § (Polluted Domain Model) Foto: Autor Webysther Nunes/Martin Fowler/Wikipedia/CC-BY-SA-4.0 7 17.12.20 //// Seite 8 WPS – Workplace Solutions TRANSACTION SCRIPT § Organisiert die Geschäftslogik in einzelne Prozeduren § Jede Prozedur deckt eine Anfrage vom Presentation Layer ab § Transaktionsklammern korrespondieren direkt mit Prozeduren § Kommunikation direkt oder nur über schlanken Adapter mit DB § Für einfache Probleme TiefenRechner berechneZoomstufe(peilplanNummer: long, zoom: byte): byte[][] Button UI- + Fachlogik persistente Fachdaten 8
  127. DOMÄNENMODELL 17.12.20 //// Seite 9 WPS – Workplace Solutions TABLE

    MODULE § Fachlogik in einer Klasse pro Datenbanktabelle implementiert § Algorithmen arbeiten direkt auf den ResultSets Peilplaene berechneZoomstufe(PeilplanNummer, zoom): byte[][] readPeilplan(PeilplanID) : ResultSet Fachlogik persistente Fachdaten 9 17.12.20 //// Seite 10 WPS – Workplace Solutions DOMAIN MODEL § Typische OO-Modellierung § POJOs/POCOs/POPOs § Design unabhängig von Datenbank § OR-Mapping ist nötig § Verwendung von Konzepten wie Kapselung Peilplan berechneZoomstufe(zoom: Massstab): Zoomstufe Zoomstufe Fachlogik + -daten Persistenz Massstab 10
  128. DOMÄNENMODELL 17.12.20 //// Seite 11 WPS – Workplace Solutions §

    Fachlich benannte Entities § Ohne fachliches Verhalten § Nur Getter und Setter § => Java Beans § „Verkrüppelte“ Entities (= nur die Fachdaten) § Fachlogik nur in Services ANEMIC DOMAIN MODEL Foto: Vampire/Wikipedia/FAL PeilplanService berechneZoomstufe() Peilplan getTiefenzahlen() setTiefenzahlen() 11 17.12.20 //// Seite 12 WPS – Workplace Solutions § Domain Model § Verschmutzt durch Technik § Z.B. JPA-Annotations POLLUTED DOMAIN MODEL 12
  129. DOMÄNENMODELL 17.12.20 //// Seite 13 WPS – Workplace Solutions FACHLOGIK

    UND FACHDATEN: »ES WÄCHST ZUSAMMEN, WAS ZUSAMMEN GEHÖRT« FRONTEND BACKEND DB Transaction Script Table Module Domain Model FRONTEND BACKEND DB FRONTEND BACKEND DB Fachlogik + -daten Persistenz UI- + Fachlogik persistente Fachdaten persistente Fachdaten Fachlogik UI-Logik UI-Logik UI- + Fachlogik UI- + Fachlogik 13 17.12.20 //// Seite 14 WPS – Workplace Solutions MARTIN FOWLER ON DDD “Eric Evans is currently writing a book on building Domain Models. As I write this I’ve seen only an early manuscript, but it looks very promising.” Foto: Autor Webysther Nunes/Martin Fowler/Wikipedia/CC-BY-SA-4.0 14
  130. DOMÄNENMODELL 17.12.20 //// Seite 15 WPS – Workplace Solutions FOWLER:

    WANN MODELLIERT MAN EINE FACHDOMÄNE? Erweiterungs- aufwand Komplexität der Geschäftslogik Domain Model Table Module Transaction Skript Anemic DM Polluted DM 15 17.12.20 //// Seite 16 WPS – Workplace Solutions JEDER BOUNDED CONTEXT HAT SEINE EIGENE ARCHITEKTUR MANÖVER- PLANUNG TIEFENMESSUNG Transaction Script Domain Model 16
  131. DOMÄNENMODELL 17.12.20 //// Seite 17 WPS – Workplace Solutions SCHICHTENARCHITEKTUR

    – KRITIK User Interface Domain Infrastructure Application MANÖVER- PLANUNG Domain-Schicht ist an Datenbank-Schicht gebunden èFachlichkeit „tropft“ in Technik èTrennung Fachlichkeit/Technik nicht mehr sauber Alistair Cockburn Foto: Fotograf Dennis Hamilton/Alistair Cockburn/flickr/CC BY 2.0 17 17.12.20 //// Seite 18 WPS – Workplace Solutions VON SCHICHTEN ZU HEXAGONEN § UI-Schicht und Infrastrukturschicht sind beides Dinge mit denen die Fachlogik (Domäne) mit der Außenwelt kommuniziert § Die Hexagonale Architektur betrachtet UI und Infrastruktur (aus Fachlogiksicht) deshalb gleich § außen/innen statt oben/unten § Ein Hexagon bietet Ports (die Kanten) http://alistair.cockburn.us/Hexagonal+architecture DOMAIN Port Port Port Port Port Port Adapter Adapter Adapter Adapter Adapter Adapter § Auf die Ports werden Adapter gesetzt 18
  132. DOMÄNENMODELL 17.12.20 //// Seite 19 WPS – Workplace Solutions CLEAN

    ARCHITECTURE Robert C. Martin ”Uncle Bob“ 19 17.12.20 //// Seite 21 WPS – Workplace Solutions DIP a. „High-level modules should not depend on low-level modules. Both should depend on abstractions (e.g. interfaces). b. Abstractions should not depend on details. Details (concrete implementations) should depend on abstractions.“ Robert C. Martin ”Uncle Bob“ 21
  133. DOMÄNENMODELL 17.12.20 //// Seite 32 WPS – Workplace Solutions DER

    FACHLICHE KERN § DDD-IDEE: TECHNISCHE UND FACHLICHE ARCHITEKTUR TRENNEN! § Das lässt sich besser mit Hexagonen ausdrücken: Der fachliche Kern befindet sich ganz INNEN! § Der fachliche Kern lässt sich als eigenständiges „fachliches Framework“ betrachten, in dem die Fachlichkeit vollständig abgebildet wird. Fachlogik / Fachbegriffe Port Port Port Port Port Port Adapter Adapter Adapter Adapter Adapter Adapter FACHLICHER KERN 32 17.12.20 //// Seite 33 WPS – Workplace Solutions BOUNDED CONTEXT DER FACHLICHE KERN IM BOUNDED CONTEXT Fachlogik / Fachbegriffe Port Port Port Port Port Port Adapter Adapter Adapter Adapter Adapter Adapter DB UI 33
  134. DOMÄNENMODELL 17.12.20 //// Seite 34 WPS – Workplace Solutions DER

    FACHLICHE KERN – DIE FACHLICHE „DNA“ Bild: https://philschatz.com/anatomy-book/resources/0312_Animal_Cell_and_Components.jpg 34 35
  135. DOMÄNENMODELL 17.12.20 //// Seite 36 WPS – Workplace Solutions DIE

    OBJEKTORIENTIERTE GRUNDIDEE: FACHLICHE GEGENSTÄNDE ALS AUSGANGSPUNKT 36 17.12.20 //// Seite 37 WPS – Workplace Solutions VOM SZENARIO ZUM DOMÄNEN-MODELL Ein Szenario zeigt uns, wie wir mit Fachobjekten umgehen 37
  136. DOMÄNENMODELL Building a Domain Model – From Domain Stories 40

    17.12.20 //// Seite 41 WPS – Workplace Solutions VON DER DOMAIN STORY ZUM DOMÄNENMODELL Silhouette VERSCHIEBT SILHOUETTE NAUTIKER LÄNGE Laenge verschiebeUm(:Laenge) UM 41
  137. DOMÄNENMODELL ÜBUNG: DOMÄNENMODELL AUS DOMAIN STORIES IN FALLSTUDIE ABLEITEN 42

    17.12.20 //// Seite 88 WPS – Workplace Solutions WAS MACHEN WIR JETZT DAMIT? 88
  138. DOMÄNENMODELL 17.12.20 //// Seite 89 WPS – Workplace Solutions DIE

    OBJEKTORIENTIERTE GRUNDIDEE: FACHLICHE GEGENSTÄNDE ALS AUSGANGSPUNKT 89 17.12.20 //// Seite 90 WPS – Workplace Solutions LÄNGE ... werden in ihrem Verhalten fachlich modelliert ... ... und softwaretechnisch in fachlichen Klassen beschrieben. Laenge Position public class Silhouette { void verschiebeUm(Laenge len) { assert len!=null; … position.add(len)); } } Fachliche Gegenstände… VERSCHIEBT LÄNGE SILHOUETTE SILHOUETTE VERSCHOBEN VERSCHIEBE UM SILHOUETTE NAUTIKER 90
  139. DOMÄNENMODELL 17.12.20 //// Seite 91 WPS – Workplace Solutions ARTEN

    VON FACHLICHEN UMGANGSFORMEN AN SCHNITTSTELLEN Umgangsformen: die Art und Weise, wie mit Gegenständen im Rahmen der verschiedenen Aufgaben gearbeitet wird. Wir untersuchen: § Welche Informationen werden an den Gegenständen "abgelesen"? § Welche Veränderungen werden an den Gegenständen vorgenommen und welche Aktionen werden ausgelöst, ohne dass sie zerstört oder in andersartige Gegenstände transformiert werden? àCQS-Prinzip von Bertrand Meyer Schiff-Silhouette • Verschiebe • Drehe • Position? • Länge ü.a.? • Breite? ... 91 17.12.20 //// Seite 92 WPS – Workplace Solutions § Eine Methode soll entweder § Zustand ändern è Command § Zustand auslesen è Query § Aber nicht beides! COMMAND-QUERY-SEPARATION 92
  140. DOMÄNENMODELL 17.12.20 //// Seite 93 WPS – Workplace Solutions §Das

    Auslesen eines Zustands sollte keine Seiteneffekte haben! §Sonst drohen Risiken und Nebenwirkungen. COMMAND-QUERY-SEPARATION Foto: Urheber Fuchsias/Bertrand Meyer/Wikipedia/CC BY-SA 4.0 93 17.12.20 //// Seite 95 WPS – Workplace Solutions SCHNITTSTELLEN DER FACHLICHEN KLASSEN Das Konzept der Modellierung von fachlichen Klassen: • Wähle anwendungsfachliche Begriffe (à als Substantiv) • Beschreibe Umgangsformen (à als Verb) und die dabei benötigten weiteren Gegenstände. Keine Daten modellieren. Schiff-Silhouette Verschiebe Drehe Position? Länge ü.a.? Breite? ... 95
  141. DOMÄNENMODELL 17.12.20 //// Seite 98 WPS – Workplace Solutions UBIQUITOUS

    LANGUAGE UND DOMAIN MODEL Peilplan berechneZoomstufe Markierung Tiefenzahl Zoomstufe MARKIER- UNG PEIL- PLAN TIEFEN- ZAHL MANÖVER-PLANUNG ZOOM- STUFE WIR BEFINDEN UNS MITTEN IN EINEM AGILEN PROZESS DER SPRACH- UND MODELL-ENTWICKLUNG 98
  142. TAKTISCHES DESIGN WPS – Workplace Solutions #dddkonkret www.wps.de TAKTISCHES DESIGN

    Domain-Driven Design konkret 1 17.12.20 //// Seite 2 WPS – Workplace Solutions INHALT DOMÄNE DOMÄNE 2
  143. TAKTISCHES DESIGN 17.12.20 //// Seite 3 WPS – Workplace Solutions

    INHALT DOMÄNE DOMÄNE 3 17.12.20 //// Seite 4 WPS – Workplace Solutions Entities Value Objects Aggregates Services Factories Repositories 4
  144. TAKTISCHES DESIGN 17.12.20 //// Seite 5 WPS – Workplace Solutions

    FACHLICHE BEGRIFFE – WAS FÄLLT AUF? Versicherungspolice Urlaubsantrag Baumaßnahme Kaufvertrag Fahrauftrag Postleitzahl GPS-Koordinate IBAN Containernummer IATA-Code 5 17.12.20 //// Seite 6 WPS – Workplace Solutions ENTITIES § Objekte einer Fachdomäne, die der Anwender bearbeitet. § An ihnen schlagen sich die Arbeitsergebnisse nieder! § Können aus anderen Entities zusammengesetzt sein § Besitzen unveränderliche Identität. § Haben klar definierten Lebenszyklus. § Besitzen einen (meist veränderlichen) Zustand. § Beschreiben ihren Zustand mit Value Objects. § Synonyme: Business Object / Domain Object / Material § NICHT ZU VERWECHSELN mit dem Begriff "ENTITY" aus dem Entity-Relationship-Modell! Foto: Bundesrepublik Deutschland/Wikipedia/PD Germany Foto: Kaz/pixabay/CC0 Foto: Thomas G./Wikipedia/CC BY-SA 3.0 Foto: OpenClipart-Vectors/pixabay/CC0 6
  145. TAKTISCHES DESIGN 7 17.12.20 //// Seite 8 WPS – Workplace

    Solutions ENTITIES <<Entity>> Peilplan peilplanNummer markiere() 8
  146. TAKTISCHES DESIGN 17.12.20 //// Seite 9 WPS – Workplace Solutions

    VALUE OBJECTS § Value Objects sind Symbole für Werte eines bestimmten Typs in der Fachdomäne. § Identitätslos § Symbolisieren bei Gleichheit denselben Wert. § Sie werden vom Anwender nicht bearbeitet und sind unveränderlich. § Können ggf. (aus anderen Value Objects) berechnet werden. § Können aus anderen Value Objects bestehen, aber nie aus Entities! ValueObject 2,5 ValueObject ValueObject ValueObject ValueObject zwei- einhalb 9 Tiefenzahl Durchmesser Position 10
  147. TAKTISCHES DESIGN 17.12.20 //// Seite 11 WPS – Workplace Solutions

    VALUE OBJECTS <<Value Object>> Tiefenzahl tiefe : int equals() 11 17.12.20 //// Seite 12 WPS – Workplace Solutions VALUE OBJECTS - WEITERES § Whole Value § Methoden dürfen Zustand nicht verändern, aber »neue« Value Objects zurückgeben § In Java viel Boilerplate-Code nötig § è Project Lombok § Operator Overloading § Der gleiche Begriff kann im einem BC Entity sein und im anderen VO 12
  148. TAKTISCHES DESIGN 17.12.20 //// Seite 13 WPS – Workplace Solutions

    ÜBUNG: ÜBERARBEITEN DES DOMÄNENMODELLS ZU DDD-BAUSTEINEN – TEIL 1 § Einteilen der Klassen nach Bausteinen § Was sind Entities, was Value Objects? § Welche brauchen wir noch? 13 17.12.20 //// Seite 14 WPS – Workplace Solutions AGGREGATES § Aggregates sind Entities, die für sich genommen relevant sind (und nicht nur als Teil einer anderen Entity). § Schützen Konsistenz und Integrität ihrer inneren Entities. § Besitzen grundsätzlich eine ausgezeichnete Entität als Einstiegspunkt (Wurzel). § Werden üblicherweise persistiert. § Als Ganzes! § Nicht notwendigerweise relational! Wurzel-Entity VO VO VO Aggregate 14
  149. TAKTISCHES DESIGN 17.12.20 //// Seite 15 WPS – Workplace Solutions

    AGGREGATES § Eigentlich sind die Value Objects außerhalb, weil sie unveränderlich sind und auch von anderswo referenziert werden dürfen. Wurzel-Entity VO VO VO Aggregate Irgendein anderes Objekt 15 17.12.20 //// Seite 16 WPS – Workplace Solutions AGGREGATES § Ein Aggregate kann auch aus mehreren Entities bestehen Wurzel-Entity Entity Entity Entity Entity VO VO VO VO VO VO VO VO VO VO VO Aggregate 16
  150. TAKTISCHES DESIGN 17 17.12.20 //// Seite 18 WPS – Workplace

    Solutions Aggregate <<Aggregate Root>> Peilplan <<Entity>> Markierung <<Value Object>> Tiefenzahl 18
  151. TAKTISCHES DESIGN 17.12.20 //// Seite 19 WPS – Workplace Solutions

    REPOSITORIES § Sind die Zugriffspunkte auf die Aggregates! § Kapseln die technischen Details der technischen Infrastrukturschicht… § … und bilden deren Daten auf fachliche Entities und Value Objects ab. § Persistieren Entities z.B. in Datenbanken. Repository Aggregate Aggregate Aggregate Aggregate Aggregate 19 17.12.20 //// Seite 20 WPS – Workplace Solutions REPOSITORY IM HAFEN: DER KARTENSCHRANK 20
  152. TAKTISCHES DESIGN 17.12.20 //// Seite 21 WPS – Workplace Solutions

    REPOSITORY: ZWEIGETEILTE IMPLEMENTIERUNG <<Repository Interface>> Kartenschrank holePeilplan(:Gebiet, Massstab) : Peilplan legeZurück(:Peilplan) <<Repository Implementation>> MySQLKartenschrank 21 17.12.20 //// Seite 22 WPS – Workplace Solutions ÜBUNG: ÜBERARBEITEN DES DOMÄNENMODELLS ZU DDD-BAUSTEINEN – TEIL 2 § Welche Entities sind sinnvolle Aggregates? § Welche Repositories haben wir? 22
  153. TAKTISCHES DESIGN 17.12.20 //// Seite 23 WPS – Workplace Solutions

    Service (DOMAIN) SERVICES § (Domain) Services stellen Abläufe oder Prozesse der Fachdomäne dar. § Und zwar solche, die nicht von Entitäten ausgeführt werden können. § Sie sind zustandslos! § Parameter und Ergebnisse ihrer Operationen sind Entities und Value Objects. Aggregate Entity Value Object Aggregate Value Object Entity Aggregate Value Object Entity Value Object 23 17.12.20 //// Seite 24 WPS – Workplace Solutions ZoomService MinimaleTiefe Peilplan Gebiet 24
  154. TAKTISCHES DESIGN 17.12.20 //// Seite 25 WPS – Workplace Solutions

    Domain Event DOMAIN EVENTS § Signalisieren Ereignisse, die aus fachlicher Sicht relevant sind. § Signalisieren Ereignisse die geschehen sind. § NICHT solche, die passieren sollen! § Einige Bounded Contexts reagieren auf diese fachlichen Ereignisse, andere nicht. § Werden zur Kommunikation zwischen Bounded Contexts verwendet und… § … fördern so deren Entkoppelung, § … erleichtern asynchrone Prozesse. § Werden oft mithilfe von Messaging ausgetauscht. 25 17.12.20 //// Seite 26 WPS – Workplace Solutions MANÖVER- PLANUNG TIEFEN- MESSUNG PEILPLAN ERSTELLT DOMAIN EVENTS IM HAFEN 26
  155. TAKTISCHES DESIGN 17.12.20 //// Seite 27 WPS – Workplace Solutions

    DOMAIN EVENTS – BEISPIELE RechnungAusgestellt ÜberweisungErfolgt BuchVerkauft KontoEröffnet 27 17.12.20 //// Seite 28 WPS – Workplace Solutions EVENT SOURCING § Klassische Speicherung von Aggregaten: § Der Zustand als Ganzes wird gespeichert § => Commands ändern Felder § Event Store § Die Zustandsänderungen (Ereignisse) werden gespeichert § => Commands appenden Events § Nur die Unterschiede § Append-only § Es gibt kein Löschen § Aber Stornierende Events § History-Funktion 28
  156. TAKTISCHES DESIGN 17.12.20 //// Seite 29 WPS – Workplace Solutions

    EVENT SOURCING IM HAFEN § Klassische Implementierung: § Ändern der aktuellen Position § Event Sourced: § Merken der Verschiebungen und Drehungen Silhouette verschiebeUm(:Laenge) dreheUm(:Winkel) position Silhouette verschiebeUm(:Laenge) dreheUm(:Winkel) bewegungen() bewegungen <<DomainEvent>> SilhouetteGedreht winkel() <<DomainEvent>> SilhouetteVerschoben laenge() 29 17.12.20 //// Seite 30 WPS – Workplace Solutions FACTORIES § Factories erzeugen Aggregates (und ggf. auch ValueObjects). § Aggregates und Value Objects müssen jedoch nicht über Factories erzeugt werden. § new Peilplan() ist ok! Factory Aggregate Aggregate ValueObject Aggregate ValueObject 30
  157. TAKTISCHES DESIGN 17.12.20 //// Seite 32 WPS – Workplace Solutions

    § Orchestrieren Anwendungsfälle. § dienen dem technischen Zugriff auf den Domain Layer. § Nutzen Fachlogik aus dem Domain-Layer, implementieren selbst aber keine Fachlogik! § Liegen im Application-Layer (OBERHALB des Domain-Layers)! § Bieten ein API / bilden eine Fassade. § Eher Technik-getrieben § Transaktionen § Security § Backend for Frontend APPLICATION SERVICE Foto: Fotograf Andreas Praefcke/Wikipedia/PD-self 32 17.12.20 //// Seite 33 WPS – Workplace Solutions Domain ELEMENTE DES DOMAIN-KERNELS User Interface Infrastructure Application Domain Service Factory Aggregate Value Object Repository Root Entity Entity Domain Event Application Service (Adapter) (Adapter) (Adapter) (Adapter) 33
  158. TAKTISCHES DESIGN 17.12.20 //// Seite 34 WPS – Workplace Solutions

    Domain ELEMENTE DES DOMAIN-KERNELS User Interface Infrastructure Application Domain Service Factory Aggregate Value Object Root Entity Entity Domain Event Application Service (Adapter) Repository Implementation (Adapter) (Adapter) Repository Interface 34 17.12.20 //// Seite 35 WPS – Workplace Solutions Domain Kernel RepoInMemory Repo RepoTest • Repo: Interface des Repositorys à „Syntax“ • RepoTest: Akzeptanz-Tests / Unit-Test für das Repository à „Semantik“ • RepoInMemory: Referenz-Implementierung des Repositorys • Ohne Persistenz. • Nutzbar als (umfassend getesteter) „Mock“ in fachlichen Tests. • Schnell im Mob zu realisierende Implemetierung. Aggregate NOCHMAL GENAUER 35
  159. TAKTISCHES DESIGN 17.12.20 //// Seite 36 WPS – Workplace Solutions

    Adapter 3 Adapter 2 Adapter 1 Domain Kernel OracleDB xxx .csv RepoInMemory RepoCsv RepoRelational RepoRest Repo RepoTest 3rd party (REST-API) TRENNUNG TECHNISCHE & FACHLICHE ARCH. 36 17.12.20 //// Seite 38 WPS – Workplace Solutions Der Domänen-Kern setzt ALLE fachlichen Features unseres Bounded Contexts um! Domänen Kern Ich kann alles! 38
  160. TAKTISCHES DESIGN 17.12.20 //// Seite 39 WPS – Workplace Solutions

    DIE »KERNELEMENTE« Services Value Objects Entities zustandslos veränderlicher Zustand unveränderlicher Zustand »Mikro-Schichtung« (nicht strikt!) 39 17.12.20 //// Seite 40 WPS – Workplace Solutions ELEMENTE DER DOMAIN-SCHICHT Services Factories Aggregates Repositories »Mikro-Schichtung« (nicht strikt!) Fachobjekte Unterstützen den Lebenszyklus der Fachobjekte Entities Value Objects 40
  161. TAKTISCHES DESIGN 17.12.20 //// Seite 41 WPS – Workplace Solutions

    ÜBUNG: ÜBERARBEITEN DES DOMÄNENMODELLS ZU DDD- BAUSTEINEN – TEIL 3 § Welche Domain Services/Factories/Application Services braucht man noch? § Welche Domain Events? 41