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

Domain Storytelling

Domain Storytelling

Talk on Domain Storytelling last given at BASTA 2021

575ca492bac55e895d0e1c86f7d709fe?s=128

Henning Schwentner

September 23, 2021
Tweet

Transcript

  1. Starring With Directed by as Wri1en by

  2. None
  3. @hschwentner

  4. Foto: Rameessos/Wikipedia

  5. @hschwentner Spark a fire Tell a story Paint a picture

  6. None
  7. None
  8. Painting a picture

  9. THE NAME OF THIS SPEAKER IS HENNING SCHWENTNER LIVE 45

    MIN TALK
  10. None
  11. None
  12. None
  13. None
  14. None
  15. None
  16. None
  17. None
  18. @hschwentner Do I get a car for this?

  19. None
  20. None
  21. CUSTOMER TELLS WISH FOR 1 SALESPERSON SIGNS TO GIVES FOR

    CONTRACT 3 RISK MANAGER CONTRACT PASSES ON TO 4 CONTRACT VOTES CHECKS CALCULATES 5 6 7 CALCU- LATES TO 8 2 CAR CREDIT RATING INSTALLMENT CAR RESALE VALUE CONTRACT
  22. Domain Storytelling Explained @hofstef @hschwentner

  23. Collaborative Modeling

  24. Domain Expert Developer

  25. Knowledge crunching

  26. None
  27. @hschwentner Methods

  28. User Story Mapping

  29. None
  30. http://www.domainstorytelling.org

  31. @hschwentner The right people

  32. None
  33. Storyteller Listeners 🙂 🙂

  34. None
  35. None
  36. @hschwentner “The salesperson passes on the contract to the risk

    manager” HANDS OVER RISK MANAGER SALESPERSON TO CONTRACT PASSES ON
  37. Active Listening

  38. CONCRETE STORIES VS. ABSTRACT PROCESSES

  39. CUSTOMER TELLS WISH FOR 1 SALES- PERSON TO FOR CALCU-

    LATES 2 CAR INSTALLMENT CONTRACT
  40. @hschwentner actor work object ac7vity 5 sequence number

  41. @hschwentner Risk manager contract votes

  42. @hschwentner person group IT system

  43. @hschwentner CALCULATES GIVES INSTALLMENT CAR

  44. @hschwentner CONTRACT CONTRACT PASSES ON SIGNS

  45. PICTOGRAPHIC LANGUAGE – NO IF/SWITCH/OR actor work object ac7vity 5

    sequence number
  46. Scenario-based modeling

  47. ACTORS ONCE/WORK OBJECTS SEVERAL TIMES SIGNS 4 FILLS OUT 5

    CUSTOMER CONTRACT CONTRACT
  48. Scope Factors

  49. None
  50. @hschwentner Travel by train from city A to city B

  51. @hschwentner Travel to this conference by train

  52. @hschwentner From Domain Story to User Story

  53. CUSTOMER TELLS WISH FOR 1 SALES-PERSON SIGNS TO GIVES FOR

    CONTRACT 3 RISK MANAGER CONTRACT PASSES ON TO 4 CONTRACT VOTES CHECKS CALCULATES 5 6 7 CALCU- LATES TO 8 2 CAR CREDIT RATING INSTALLMENT CAR RESALE VALUE CONTRACT TELL WISH FOR CAR CALCULATE INSTALLMENT
  54. CUSTOMER TELLS WISH FOR 1 SALES-PERSON SIGNS TO GIVES FOR

    CONTRACT 3 RISK MANAGER CONTRACT PASSES ON TO 4 CONTRACT VOTES CHECKS CALCULATES 5 6 7 CALCU- LATES TO 8 2 CAR CREDIT RATING INSTALLMENT CAR RESALE VALUE CONTRACT AS CUSTOMER I WANT TO TELL WHAT KIND OF CAR I NEED SO THAT THE CAR IS NOT TOO EXPENSIVE AS SALESPERSON I WANT TO CALCULATE THE CONTRACT SO THAT I CAN FULFILL MY CLIENT‘S WISH
  55. CUSTOMER TELLS WISH FOR 1 SALESPERSON SIGNS TO GIVES FOR

    CONTRACT 3 RISK MANAGER CONTRACT PASSES ON TO 4 CONTRACT VOTES CHECKS CALCULATES 5 6 7 CALCU- LATES TO 8 2 CAR CREDIT RATING INSTALLMENT CAR RESALE VALUE CONTRACT
  56. @hschwentner How do we design a program for that?

  57. None
  58. @hschwentner #dddesign

  59. -DRIVEN DESIGN

  60. So#ware Domain

  61. None
  62. None
  63. None
  64. @hschwentner From Domain Story to Code

  65. CUSTOMER TELLS WISH FOR 1 SALESPERSON SIGNS TO GIVES FOR

    CONTRACT 3 RISK MANAGER CONTRACT PASSES ON TO 4 CONTRACT VOTES CHECKS CALCULATES 5 6 7 CALCU- LATES TO 8 2 CAR CREDIT RATING INSTALLMENT CAR RESALE VALUE CONTRACT
  66. CUSTOMER SIGNS CONTRACT 3 RISK MANAGER CONTRACT VOTES 7 <<Entity>>

    Contract sign() vote()
  67. <<Entity>> Contract sign() vote()

  68. public class Contract { public void sign(SignDate date) //... public

    void vote(VoteResult result) //... }
  69. Object orientation

  70. @hschwentner LeasingNinja.io

  71. @hschwentner Domain Stories for Strategic Design

  72. <<Entity>> Contract sign() vote() extend() terminate() sell_to_refinance()

  73. @hschwentner The One Big Model

  74. None
  75. None
  76. @hschwentner Reality: Not one big model But several mixed models

  77. BBOM Foto: Benutzer:Summi/Wikipedia/CC-BY-SA-3.0-migrated

  78. None
  79. None
  80. None
  81. @hschwentner “Whoever uses a canonical model has lost control over

    his life.” – Karl Lagerfeld
  82. @hschwentner »Wer ein unternehmensweites Modell einsetzt, hat die Kontrolle über

    sein Leben verloren« – Karl Lagerfeld
  83. @hschwentner Why is that?

  84. None
  85. None
  86. @hschwentner Too Big to be understood as a whole

  87. None
  88. None
  89. @hschwentner Model?

  90. A tool to understand the world

  91. ?

  92. ?

  93. ?

  94. None
  95. None
  96. None
  97. None
  98. None
  99. CUSTOMER TELLS WISH FOR 1 SALES-PERSON SIGNS TO GIVES FOR

    CONTRACT 3 RISK MANAGER CONTRACT PASSES ON TO 4 CONTRACT VOTES CHECKS CALCULATES 5 6 7 CALCU- LATES TO 8 2 CAR CREDIT RATING INSTALLMENT CAR RESALE VALUE CONTRACT SALES RISK MANAGMENT
  100. <<En8ty>> Contract sign() vote() ✘

  101. <<En8ty>> Contract sign() <<En8ty>> Contract vote()

  102. <<Entity>> Contract sign() vote() ✘

  103. <<Entity>> Contract sign() <<Entity>> Contract vote()

  104. <<En/ty>> Contract sign() <<En/ty>> Contract vote() SALES RISK MANAGEMENT

  105. Bounded Context

  106. <<Entity>> Contract sign() <<En/ty>> Contract vote() SALES RISK MANAGEMENT

  107. None
  108. @hschwentner Implementing Multiple Models

  109. @hschwentner JVM: Packages Jigsaw-Modules

  110. @hschwentner .NET: DLLs

  111. @hschwentner Other: Microservices Self-Contained Systems Verticals

  112. None
  113. @hschwentner Travel to this conference by train

  114. @hschwentner Cutting the Monolith

  115. @hschwentner Brownfield

  116. @hschwentner How to split the monolith

  117. 1) How should it be? 2) How is it? 3)

    How to move the “is” to the “ideal”? RISK MANAGE- MENT SALES
  118. 1) How should it be? 1) Collaborative Modelling 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)
  119. <<Entity>> Contract sign() vote() SALES RISK MANAGEMENT <<En8ty>> Contract sign()

    vote() BIG BALL OF MUD <<En/ty>> Contract sign() vote()
  120. None
  121. @hschwentner Consulting

  122. @hschwentner More on Domain Storytelling

  123. None
  124. @hschwentner Modes

  125. Moderated

  126. None
  127. Co-op

  128. None
  129. None
  130. @hschwentner Tools

  131. PowerPoint Whiteboard Kit (www.domainstorytelling.org)

  132. PowerPoint Whiteboard Kit (www.domainstorytelling.org)

  133. Whiteboard Kit (www.domainstorytelling.org)

  134. None
  135. None
  136. None
  137. None
  138. @hschwentner https://egon.io

  139. @hschwentner Conclusion

  140. @hschwentner Further Reading

  141. @hschwentner www.domainstorytelling.org

  142. Buy it on Amazon.com: https://amzn.to/3nF34nI

  143. Kauf mich bei Amazon: https://amzn.to/3Emmfs

  144. @hschwentner LeasingNinja.io

  145. None
  146. None
  147. None
  148. None
  149. None
  150. Henning Schwentner @hschwentner hs@wps.de DDD DDD Slides: speakerdeck.com/hschwentner Book: domainstorytelling.org

  151. Stefan: sh@wps.de @hofstef speakerdeck.com/hofstef h1p://domainstorytelling.org The pictures used in this

    talk are public domain, unless noted otherwise. Screenshots and examples © WPS – Workplace Solutions GmbH Henning: hs@wps.de @hschwentner speakerdeck.com/hschwentner
  152. @hschwentner Appendix

  153. @hschwentner What about Event Storming?

  154. None
  155. None
  156. None