$30 off During Our Annual Pro Sale. View Details »

Storystorming DDD Paris

Storystorming DDD Paris

Martin Schimak

March 05, 2020
Tweet

More Decks by Martin Schimak

Other Decks in Programming

Transcript

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

    View Slide

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

    View Slide

  3. Why?

    View Slide

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

    View Slide

  5. … so our mental models are the first models which matter.

    View Slide

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

    View Slide

  7. View Slide

  8. Very well :-)
    what do you
    need it for?
    I need a
    checkbox. :-)
    Sandra
    Manager
    Me

    View Slide

  9. View Slide

  10. View Slide

  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

    View Slide

  12. Attention
    Annotation
    Basic building blocks of Domain Storytelling
    Actor Work Object
    Activity
    + + + Context
    @martinschimak

    View Slide

  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

    View Slide

  14. @martinschimak
    A very first sentence
    Customer asks for ticket
    reservation

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  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

    View Slide

  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

    View Slide

  20. Cool, we have our first story. Let's remember this.

    View Slide

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

    View Slide

  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

    View Slide

  23. Visualize an example story!
    Don't necessarily "model", tell
    a story about what happens.

    View Slide

  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

    View Slide

  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

    View Slide

  26. View Slide

  27. Understand the bigger picture of your domain!
    Alberto Brandolini
    EVENTSTORMiNG

    View Slide

  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

    View Slide

  29. Drafting a blockchain workflow for a steel industry startup
    Simple customer interaction
    scenario 1
    Scenario with resellers
    involved 2

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  33. Basic Building Blocks
    Human
    or Group
    Activity

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  44. View Slide

  45. Basic Building Blocks

    View Slide

  46. Basic Building Blocks
    Accepting
    the job
    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

    View Slide

  47. View Slide

  48. June 19th & 20th Soltau, Germany => https://comocamp.org/

    View Slide