Storystorming DDD Paris

Storystorming DDD Paris

2999fab21d182294fad0b2cc590fd54d?s=128

Martin Schimak

March 05, 2020
Tweet

Transcript

  1. Storystorming DDD Paris, Mar 5th 2020 @martinschimak

  2. 3 Pillars Adapted from © Paul Rayner‘s „Essential DDD“ workshop

    in Denver 2018
  3. Why?

  4. Executable software is the final and ultimate model which matters

    ... Ubiquituous Language
  5. … so our mental models are the first models which

    matter.
  6. I need a checkbox. :-) Sandra Manager

  7. None
  8. Very well :-) what do you need it for? I

    need a checkbox. :-) Sandra Manager Me
  9. None
  10. None
  11. Ticketing screen plan available seats Customer Cashier confirms reservation available

    seats reservation number recommends asks for screen plan reservation finds seats in confirm seats in generates tells 1 2 3 4 5 6 7 Example of classical
  12. Attention Annotation Basic building blocks of Domain Storytelling Actor Work

    Object Activity + + + Context @martinschimak
  13. Make storytelling as simple as it really is @martinschimak "A

    story consists of sentences. A sentence consists of three basic building blocks!" Subject Predicate Object
  14. @martinschimak A very first sentence Customer asks for ticket reservation

  15. @martinschimak The sentence with a receiving partner Cashier Customer asks

    for ticket reservation
  16. @martinschimak Time Cashier Customer asks for ticket reservation Actors Story

  17. @martinschimak Time Cashier Customer asks for ticket reservation Actors finds

    seats in screen plan Ticketing System Story A B C
  18. @martinschimak Time Cashier Customer asks for ticket reservation Actors finds

    seats in screen plan Ticketing System suggests available seats Story 1 2 3 Seats are available A B C
  19. reserves rejects reservation attempt seats 14 and 15, sector A2

    Seats are not available generates reservation #THBQ, seats 14 and 15, sector A2, on June 10th suggests seats 14 and 15, sector A2 confirms seats 14 and 15, sector A2 tells reservation number #THBQ Ticketing System Stadium cashier Soccer fan calls and asks for reservation of two tickets in sector A2 on June 10th Time Actors Story A B C 1 2 3 Customer likes seats Seats in sector are available Seats are available finds seats 14, 15 in sector A2 of screen plan
  20. Cool, we have our first story. Let's remember this.

  21. Human Human Predicate Object Predicate Object System A B C

    1 2 Assumed Behavior Hands-on Time!
  22. Time! Human Human Predicate Object Predicate Object System A B

    C 1 2 Assumed Behavior You shopped a bit too much. You need a ride! So you want to use one of those shared cars which are now parked everywhere in the city. Their app allows you to find nearby cars. When you try to open a specific car's door with your mobile's NFC, your app asks you to confirm the current mile rate of this car. When you do that the driver's door opens and you may start your ride. Your app tracks the location of the car, so when you arrive at your destination, all you need to do is to close the car from the outside with your mobile's NFC. Now your ride is finished and your card will be charged. Hands-on
  23. Visualize an example story! Don't necessarily "model", tell a story

    about what happens.
  24. Time! Car sharer Predicate Object Predicate Object Car A B

    C 1 2 Assumed Behavior You shopped a bit too much. You need a ride! So you want to use one of those shared cars which are now parked everywhere in the city. Their app allows you to find nearby cars. When you try to open a specific car's door with your mobile's NFC, your app asks you to confirm the current rate per kilometer for this car. When you do that the driver's door opens and you may start your ride. Your app tracks the location of the car, so when you arrive at your destination, all you need to do is to close the car from the outside with your mobile's NFC. Now your ride is finished and your card will be charged. Hands-on Car sharing app
  25. Investigating a (quite paper-based) support process Here is the pain

    with mistakes made in requests 1 Here is the correction pain resulting from it 2
  26. None
  27. Understand the bigger picture of your domain! Alberto Brandolini EVENTSTORMiNG

  28. Some results from EventStorming Capturing two detail "stories" 1 2

    3 Getting side-tracked :-) Considering a few deliverables 4 Discussing billing improvements for a telco provider
  29. Drafting a blockchain workflow for a steel industry startup Simple

    customer interaction scenario 1 Scenario with resellers involved 2
  30. My take on some strengths of the approach - Record

    natural language (even without immediate full understanding) - Work close to some individual's human perspective, ideal for small groups - Focus on just one single example sequence of all possible activities - Improve upon single terms and prepare your ubiquitous language (DDD) - Clarify problems and exceptions – just by adding assumptions (or events) - Discuss alternatives – just by taking a picture and rearranging stickies
  31. Basic Building Blocks Human or Group Machine or Component Object

    Verb Behavior or Constraints Object Verb Object Verb super simple storytelling for domain and software experts
  32. Basic Building Blocks Human or Group Event Command Behavior or

    Constraints Machine or Component Statement or Object Question or Search Behavior or Constraints Behavior or Constraints sophisticated storytelling for experienced teams
  33. Basic Building Blocks Human or Group Activity

  34. Basic Building Blocks Kathi Filling machine with water Filling machine

    with coffee beans Brewing the coffee Taking can and filling a coffee cup Drinking the coffee Looking into the coffee pot Deciding to need more coffee
  35. Basic Building Blocks Kathi Filling machine with water Filling machine

    with coffee beans Brewing the coffee Taking can and filling a coffee cup Drinking the coffee Looking into the coffee pot Deciding to need more coffee Martin Coffee machine
  36. Looking into the coffee pot Basic Building Blocks Kathi Coffee

    machine Coffee brewed Martin "Make us some coffee" Filling machine with water Filling machine with coffee beans Brew the coffee Brewing the coffee Coffee cup filled Taking can and filling a coffee cup Deciding to need more coffee Drinking the coffee
  37. Human or Group Basic Building Blocks Event Command Behavior or

    Activity Machine or Component
  38. Command Human or Group Basic Building Blocks Event Behavior or

    Activity Machine or Component
  39. Human or Group Basic Building Blocks Event Behavior or Activity

    Event Machine or Component
  40. Human or Group Basic Building Blocks Behavior or Activity Command

    Command Machine or Component
  41. Looking into the coffee pot Basic Building Blocks Kathi Coffee

    machine Coffee brewed Martin "No, sorry, I don't." "Make us some coffee" Filling machine with water Filling machine with coffee beans Brew the coffee Brewing the coffee Coffee cup filled Taking can and filling a coffee cup Looking into the coffee pot Deciding to need more coffee Drinking the coffee Do you have some coffee ready
  42. Basic Building Blocks Human or Group Event Command Behavior or

    Constraints Machine or Component Statement or Object Question or Search Behavior or Constraints Behavior or Constraints sophisticated storytelling for experienced teams
  43. Basic Building Blocks Human or Group Machine or Component Object

    Verb Behavior or Constraints Object Verb Object Verb super simple storytelling for domain and software experts
  44. None
  45. Basic Building Blocks

  46. Basic Building Blocks Accepting the job <Machine overheated> Behavior or

    Constraints Display overheating by blinking Allow level to be judged from outside Backbone customer journey Map assumptions and (problem) events here - moving to the top Map detailed deliverables or proposals here and prioritize from top to bottom and left to right
  47. None
  48. June 19th & 20th Soltau, Germany => https://comocamp.org/