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

Domain Storytelling

Domain Storytelling

Talk on Domain Storytelling last given at JavaLand 2022

575ca492bac55e895d0e1c86f7d709fe?s=128

Henning Schwentner

March 16, 2022
Tweet

More Decks by Henning Schwentner

Other Decks in Programming

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. 🔥

  7. 💬

  8. Painting a picture 🖌

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

    MIN TALK
  10. None
  11. 👨💻👨🏫👨💼

  12. None
  13. None
  14. None
  15. 🙂 🙂

  16. None
  17. None
  18. @hschwentner Do I get a car for this?

  19. None
  20. None
  21. Monolease

  22. 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 calculates to 8 2 car credit rating installment car resale value contract
  23. @hschwentner Explained

  24. Collaborative Modeling

  25. Domain Expert Developer

  26. Knowledge crunching

  27. None
  28. @hschwentner Methods

  29. User Story Mapping

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

  32. @hschwentner Domain Storytelling = Pictographic Language + Workshop Format

  33. @hschwentner The Workshop Format

  34. @hschwentner The right people

  35. None
  36. Storyteller Listeners 🙂 🙂

  37. None
  38. None
  39. @hschwentner HANDS OVER RISK MANAGER SALESPERSON TO CONTRACT PASSES ON

    “The salesperson passes on the contract to the risk manager”
  40. Active Listening

  41. CONCRETE STORIES VS. ABSTRACT PROCESSES

  42. @hschwentner The Pictographic Language

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

    LATES 2 CAR INSTALLMENT CONTRACT
  44. @hschwentner actor work object ac,vity 5 sequence number

  45. @hschwentner risk manager contract votes

  46. @hschwentner CALCULATES GIVES INSTALLMENT CAR

  47. @hschwentner CONTRACT CONTRACT PASSES ON SIGNS

  48. @hschwentner person group IT system

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

    5 CUSTOMER CONTRACT CONTRACT
  50. @hschwentner ßDraw here Leave some empty space there à Annota,ons,

    varia,ons, and purpose Precondi,ons, assump,ons, and triggers Name of the Domain Story
  51. PICTOGRAPHIC LANGUAGE – NO IF/SWITCH/OR actor work object activity 5

    sequence number
  52. Scenario-based modeling

  53. Scope Factors

  54. @hschwentner Granularity Point in time: as-is vs. to-be Domain Purity:

    pure vs. digitalized
  55. @hschwentner Tools

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

  57. @hschwentner https://egon.io

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

  59. Whiteboard Kit (www.domainstorytelling.org)

  60. None
  61. None
  62. None
  63. @hschwentner

  64. @hschwentner Modes

  65. Moderated

  66. None
  67. Co-op

  68. None
  69. None
  70. None
  71. @hschwentner Travel by train from city A to city B

  72. @hschwentner Travel to this conference by train

  73. @hschwentner Purposes

  74. None
  75. @hschwentner Learning Domain Language

  76. 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 INSTALLMENT: THE MONTHLY PAYMENT OF THE CUSTOMER
  77. @hschwentner

  78. @hschwentner From Domain Story to User Story

  79. 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
  80. 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
  81. @hschwentner From Domain Story to Code

  82. 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
  83. @hschwentner How do we design a program for that?

  84. None
  85. @hschwentner #dddesign

  86. -DRIVEN DESIGN

  87. Software Domain

  88. None
  89. None
  90. None
  91. @hschwentner From Domain Story to Code

  92. 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
  93. CUSTOMER SIGNS CONTRACT 3 RISK MANAGER CONTRACT VOTES 7 <<En$ty>>

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

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

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

  97. @hschwentner LeasingNinja.io

  98. @hschwentner Domain Stories for Strategic Design

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

  100. @hschwentner The One Big Model

  101. None
  102. None
  103. @hschwentner Reality: Not one big model But several mixed models

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

  105. None
  106. None
  107. None
  108. @hschwentner “Whoever uses a canonical model has lost control over

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

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

  111. None
  112. None
  113. @hschwentner Too Big to be understood as a whole

  114. None
  115. None
  116. @hschwentner Model?

  117. A tool to understand the world

  118. ?

  119. ?

  120. ?

  121. None
  122. None
  123. None
  124. None
  125. None
  126. 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 SALES RISK ASSESSMENT
  127. <<En$ty>> Contract sign() vote() ✘

  128. <<En$ty>> Contract sign() <<En$ty>> Contract vote()

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

  130. <<Entity>> Contract sign() <<En,ty>> Contract vote()

  131. <<En,ty>> Contract sign() <<En,ty>> Contract vote() SALES RISK ASSESSMENT

  132. Bounded Context

  133. <<Entity>> Contract sign() <<Entity>> Contract vote() SALES RISK ASSESSMENT

  134. None
  135. @hschwentner Implementing Multiple Models

  136. @hschwentner JVM: Packages Jigsaw-Modules

  137. @hschwentner .NET: DLLs

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

  139. None
  140. @hschwentner Draw Boundaries

  141. @hschwentner Cutting the Monolith

  142. @hschwentner Brownfield

  143. @hschwentner How to split the monolith

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

    How to move the “is” to the “ideal”? RISK MANAGE- MENT SALES
  145. 1) How should it be? 1) Collabora,ve 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 suppor,ng domain to learn 2) Then extract core(s)
  146. Strangler Fig Application

  147. <<En,ty>> Contract sign() vote() SALES RISK ASSESSMENT <<Entity>> Contract sign()

    vote() BIG BALL OF MUD <<En,ty>> Contract sign() vote()
  148. None
  149. @hschwentner Consulting

  150. @hschwentner Conclusion

  151. @hschwentner Further Reading

  152. @hschwentner https://domainstorytelling.org

  153. Get it at: https://hschwentner.io

  154. @hschwentner LeasingNinja.io

  155. None
  156. None
  157. @hschwentner

  158. None
  159. None
  160. None
  161. Henning Schwentner ⌂ https://hschwentner.io @hschwentner ✉ hs@wps.de

  162. 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
  163. @hschwentner Appendix

  164. @hschwentner What about Event Storming?

  165. None
  166. None
  167. None
  168. Bibliography Baas-Schwegler, Kenny and João Rosa (eds.). Visual Collaboration Tools.

    Self-published, Leanpub, last updated August 7, 2020. Beck, Kent et al. Manifesto for Agile Software Development. 2001. Brandolini, Alberto. Introducing EventStorming. Self-published, Leanpub, last updated February 12, 2021. Conway, Melvin E. “How Do Committees Invent?” Datamation 14, no. 5 (April 1968): 28–31. Evans, Eric. Domain-Driven Design: Tackling Complexity in the Heart of Software. Boston: Addison-Wesley, 2004. Foote, Brian and Joseph Yoder. “Big Ball of Mud.” PLoP ’97, Monticello, IL, September 1997. Fowler, Martin. “Strangler Fig Application.” Bliki, June 29, 2004. Hofer, Stefan and Henning Schwentner. Domain Storytelling: a Collaborative, Visual, and Agile Way to Develop Domain- Driven Software. Boston: Addison-Wesley, 2022. Patton, Jeff. User Story Mapping: Discover the Whole Story, Build the Right Product. Sebastopol, CA: O’Reilly, 2014.