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

Hands-on: Introduction to Domain Storytelling

B7a8524f73d760a4e2e403e43c6f0c70?s=47 Stefan Hofer
November 05, 2019

Hands-on: Introduction to Domain Storytelling

Hands-on presented at O'Reilly Software Architecture Conference Berlin

B7a8524f73d760a4e2e403e43c6f0c70?s=128

Stefan Hofer

November 05, 2019
Tweet

Transcript

  1. Brought to you by Dorota and Stefan (@hofstef) who work

    for WPS – Workplace Solutions GmbH in Hamburg and Berlin.
  2. @hofstef @wps_de business gibberish { nerd; speek; } Domain Expert

    Software Expert
  3. @hofstef @wps_de Fach- sprache Domain Expert Software Expert

  4. @hofstef @wps_de Thanks to DDD Europe for this awesome picture

    of Henning!
  5. 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 • …
  6. @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
  7. @hofstef @wps_de Demo: Leasing a Car

  8. @hofstef @wps_de

  9. @hofstef @wps_de @hofstef @hschwentner Pictographic Language

  10. @hofstef @wps_de actor work object activity annotation

  11. @hofstef @wps_de Risk manager contract votes

  12. @hofstef @wps_de person people system

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

    to... sends contract passes on to to contract
  14. @hofstef @wps_de The sales person passes on the contract to

    the risk manager. passes on contract Risk manager Sales person to
  15. @hofstef @wps_de 1 1 1

  16. @hofstef @wps_de tells whish for Sales person Customer 1 monthly

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

    installment contract car to in 2 contract 3
  18. @hofstef @wps_de CONCRETE STORIES VS. ABSTRACT PROCESSES

  19. @hofstef @wps_de 3 good examples are better than 1 bad

    abstraction
  20. @hofstef @wps_de Draw here Leave some empty space there →

    Annotations, variations, and purpose Preconditions, assumptions, and triggers
  21. @hofstef @wps_de Workshops

  22. @hofstef @wps_de

  23. @hofstef @wps_de

  24. @hofstef @wps_de

  25. @hofstef @wps_de

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

  27. @hofstef @wps_de

  28. @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
  29. @hofstef @wps_de github.com/WPS/domain-story-modeler

  30. @hofstef @wps_de

  31. @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
  32. @hofstef @wps_de If you speak German: Take a free bruchure!

    And grab a sticker:
  33. @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
  34. @hofstef @wps_de A Quick Introduction to Domain-Driven Design

  35. @hofstef @wps_de

  36. @hofstef @wps_de

  37. @hofstef @wps_de Domain Knowledge

  38. @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
  39. 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
  40. @hofstef @wps_de Demo: Leasing a Car

  41. @hofstef @wps_de

  42. 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
  43. @hofstef @wps_de Bounded Context: A coherent model with an unambiguous

    language.
  44. @hofstef @wps_de general ledger accounting Sales Payroll accounting HR Subdomain

    Bounded Context
  45. 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
  46. @hofstef @wps_de Heuristic: Look for activities that - from an

    actor’s perspective - belong together.
  47. @hofstef @wps_de Activities that belong together:

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

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

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

  51. @hofstef @wps_de Navigating Officer Captain route puts 1 2 ship

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

    shilhouette depth map on Cartographer MANEUVER PLANNING (BIG PICTURE)
  53. @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
  54. @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
  55. @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)
  56. @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 ?