Slide 1

Slide 1 text

Brought to you by Dorota and Stefan (@hofstef) who work for WPS – Workplace Solutions GmbH in Hamburg and Berlin.

Slide 2

Slide 2 text

@hofstef @wps_de business gibberish { nerd; speek; } Domain Expert Software Expert

Slide 3

Slide 3 text

@hofstef @wps_de Fach- sprache Domain Expert Software Expert

Slide 4

Slide 4 text

@hofstef @wps_de Thanks to DDD Europe for this awesome picture of Henning!

Slide 5

Slide 5 text

Why Domain Storytelling? Today: • Understanding a domain • Reasoning about sub-domains and bounded contexts There is more: • Deriving domain model • Deriving requirements • Designing new processes • Facilitate change • …

Slide 6

Slide 6 text

@hofstef @wps_de Schedule 1. Understanding a domain demo – explanation – exercise – break 2. Domain-Driven Design & finding boundaries demo – explanation – exercise – break 3. Practice 4. Your domain or a real world example

Slide 7

Slide 7 text

@hofstef @wps_de Demo: Leasing a Car

Slide 8

Slide 8 text

@hofstef @wps_de

Slide 9

Slide 9 text

@hofstef @wps_de @hofstef @hschwentner Pictographic Language

Slide 10

Slide 10 text

@hofstef @wps_de actor work object activity annotation

Slide 11

Slide 11 text

@hofstef @wps_de Risk manager contract votes

Slide 12

Slide 12 text

@hofstef @wps_de person people system

Slide 13

Slide 13 text

@hofstef @wps_de …sends the contract to... ...passes on the contract to... sends contract passes on to to contract

Slide 14

Slide 14 text

@hofstef @wps_de The sales person passes on the contract to the risk manager. passes on contract Risk manager Sales person to

Slide 15

Slide 15 text

@hofstef @wps_de 1 1 1

Slide 16

Slide 16 text

@hofstef @wps_de tells whish for Sales person Customer 1 monthly installment contract car to in 2

Slide 17

Slide 17 text

@hofstef @wps_de tells whish for Sales person Customer 1 monthly installment contract car to in 2 contract 3

Slide 18

Slide 18 text

@hofstef @wps_de CONCRETE STORIES VS. ABSTRACT PROCESSES

Slide 19

Slide 19 text

@hofstef @wps_de 3 good examples are better than 1 bad abstraction

Slide 20

Slide 20 text

@hofstef @wps_de Draw here Leave some empty space there → Annotations, variations, and purpose Preconditions, assumptions, and triggers

Slide 21

Slide 21 text

@hofstef @wps_de Workshops

Slide 22

Slide 22 text

@hofstef @wps_de

Slide 23

Slide 23 text

@hofstef @wps_de

Slide 24

Slide 24 text

@hofstef @wps_de

Slide 25

Slide 25 text

@hofstef @wps_de

Slide 26

Slide 26 text

@hofstef @wps_de Whiteboard Kit Picture: W. Kinkeldei @wkinkeldei

Slide 27

Slide 27 text

@hofstef @wps_de

Slide 28

Slide 28 text

@hofstef @wps_de PowerPoint, yEd, Viso, gliphy… asks for Reservation (movie, time, seats) cashier customer 1 Screen plan finds available seats in CineSoft 2 seats recommends 3

Slide 29

Slide 29 text

@hofstef @wps_de github.com/WPS/domain-story-modeler

Slide 30

Slide 30 text

@hofstef @wps_de

Slide 31

Slide 31 text

@hofstef @wps_de eBook and free sample available at: https://leanpub.com/domainstorytelling Get a discount using the link: http://leanpub.com/domainstorytelling/c/saconf

Slide 32

Slide 32 text

@hofstef @wps_de If you speak German: Take a free bruchure! And grab a sticker:

Slide 33

Slide 33 text

@hofstef @wps_de Twitter: @hofstef @hschwentner #DomainStorytelling Slides: https://speakerdeck.com/hofstef Book: https://leanpub.com/domainstorytelling Slack: ddd-cqrs-es.slack.com Invite yourself: http://j.mp/ddd-es-cqrs Slack Channel: #domain-storytelling http://domainstorytelling.org The pictures used in this talk are public domain, unless noted otherwise. Screenshots and examples © WPS - Workplace Solutions GmbH

Slide 34

Slide 34 text

@hofstef @wps_de A Quick Introduction to Domain-Driven Design

Slide 35

Slide 35 text

@hofstef @wps_de

Slide 36

Slide 36 text

@hofstef @wps_de

Slide 37

Slide 37 text

@hofstef @wps_de Domain Knowledge

Slide 38

Slide 38 text

@hofstef @wps_de Blue Book Red Book 2015 ’16 ’17 ’14 ’13 ’12 2010 ’11 ’09 ’08 ’07 ’06 2005 ’04 ’03 ’02 2000 01 ’99 ’98

Slide 39

Slide 39 text

Strategic Design Ubiquitous Language Tactical Design Eric Evans, 2003 Picture: Martin Schimak @martinschimak Paul Rayner, DDD Explore 2018 + Ubiquitous Language as an overarching principle DDD 2003 vs. DDD 2018

Slide 40

Slide 40 text

@hofstef @wps_de Demo: Leasing a Car

Slide 41

Slide 41 text

@hofstef @wps_de

Slide 42

Slide 42 text

One Domain – Multiple Models 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

Slide 43

Slide 43 text

@hofstef @wps_de Bounded Context: A coherent model with an unambiguous language.

Slide 44

Slide 44 text

@hofstef @wps_de general ledger accounting Sales Payroll accounting HR Subdomain Bounded Context

Slide 45

Slide 45 text

Sub-domain vs. Bounded Context • Ideally, there is a 1:1 relation between sub-domain and bounded context (at least for your core sub-domains). • In real life, there is a trade-off between • Business process/domain • Organizational structure • Business value • Technical constraints • User experience • … • Legacy systems are often unbounded Foto: Dreibund Medaille/Wikipedia/CC BY-SA 3.0

Slide 46

Slide 46 text

@hofstef @wps_de Heuristic: Look for activities that - from an actor’s perspective - belong together.

Slide 47

Slide 47 text

@hofstef @wps_de Activities that belong together:

Slide 48

Slide 48 text

@hofstef @wps_de Indicator: only one actor involved xyz context

Slide 49

Slide 49 text

@hofstef @wps_de Indicator: one-way information flow abc context xyz context

Slide 50

Slide 50 text

@hofstef @wps_de Indicator: different triggers abc context xyz context

Slide 51

Slide 51 text

@hofstef @wps_de Navigating Officer Captain route puts 1 2 ship shilhouette depth map on Cartographer MANEUVER PLANNING (BIG PICTURE)

Slide 52

Slide 52 text

@hofstef @wps_de Navigating Officer Captain route puts 1 2 ship shilhouette depth map on Cartographer MANEUVER PLANNING (BIG PICTURE)

Slide 53

Slide 53 text

@hofstef @wps_de Navigating Officer Captain route puts ship shilhouette depth map on Cartographer Sounding Ship depth measures 1 depth (raw) sends 2 to contours, minimum depths 3 depth map 4 sends 5 depth map MANEUVER PLANNING (BIG PICTURE) (1-5) daily

Slide 54

Slide 54 text

@hofstef @wps_de puts Navigating Officer Captain route 7 ship shilhouette depth map on Cartographer Sounding Ship depth measures 1 depth (raw) sends 2 to contours, minimum depths 3 depth map 4 sends 5 depth map 8 ship shilhouette to find route route 9 discusses with 6 MANEUVER PLANNING (BIG PICTURE) (1-5) daily (7) fitting shilhoutte available

Slide 55

Slide 55 text

@hofstef @wps_de puts Navigating Officer Captain route 7 ship shilhouette depth map on Cartographer Sounding Ship depth measures 1 depth (raw) sends 2 to contours, minimum depths 3 depth map 4 sends 5 depth map 8 ship shilhouette to find route route 9 discusses with 6 MANEUVER PLANNING (BIG PICTURE) (1-5) daily (7) fitting shilhoutte available maneuver planning (sub-domain)

Slide 56

Slide 56 text

@hofstef @wps_de puts Navigating Officer Captain route 7 ship shilhouette depth map on Cartographer Sounding Ship depth measures 1 depth (raw) sends 2 to contours, minimum depths 3 depth map 4 sends 5 depth map 8 ship shilhouette to find route route 9 discusses with 6 MANEUVER PLANNING (BIG PICTURE) (1-5) daily (7) fitting shilhoutte available ?