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

From EventStorming to CoDDDing @ Bucharest Software Architecture Summit 2021

From EventStorming to CoDDDing @ Bucharest Software Architecture Summit 2021

To really understand what our users need so that we can build the right thing, we want to have a first-hand experience of 'real-life stories' before we model and create our software. To quote Alberto Brandolini "it is not the domain expert's knowledge that goes into production, it is the developer's assumption of that knowledge that goes into production". EventStorming is a visual technique that minimizes assumptions by engaging in collaborative deliberate learning across different disciplines. This helps to solve complex business problems in the most effective way.

Although the learning of the domain helps us to understand the domain better, EventStorming can be quite an overwhelming experience. Developers can be left with the question of how to turn a few stickies on a wall into working code.

Join us in this talk in which we show the basic principles of EventStorming. We will cover the different forms of EventStorming and in which situation they best can be applied. And, we will show how you can leverage DDD (Domain-Driven Design) patterns in an EventStorming software modelling session that will ultimately result in coding TDD (Test Driven Development) style!

João Rosa

May 21, 2021
Tweet

More Decks by João Rosa

Other Decks in Technology

Transcript

  1. @joaoasrosa
    From EventStorming
    to CoDDDing
    Photo by Clint Adair on Unsplash

    View Slide

  2. 2
    CTO a.i
    Strategic Software Delivery
    Domain-Driven Design
    Sociotechnical system student
    Trainer, podcaster and author
    @joaoasrosa
    joaorosa.io

    View Slide

  3. @joaoasrosa Photo by Clint Adair on Unsplash

    View Slide

  4. @joaoasrosa

    View Slide

  5. @joaoasrosa
    Using models for creating software

    View Slide

  6. @joaoasrosa

    View Slide

  7. 7
    The fundamental horror of this anti-pattern
    is that it's so contrary to the basic idea
    of object-oriented designing;
    which is to combine
    data and process together.
    - Martin Fowler
    @joaoasrosa

    View Slide

  8. 8
    What's worse, many people think that
    anemic objects are real objects,
    and thus completely miss the point of what
    object-oriented design is all about.
    - Martin Fowler
    @joaoasrosa

    View Slide

  9. 9
    @joaoasrosa

    View Slide

  10. 10
    @joaoasrosa

    View Slide

  11. @joaoasrosa
    Shared language created through conversations
    between business people (specialists) and
    software people which becomes
    the ubiquitous language

    View Slide

  12. 12
    @joaoasrosa

    View Slide

  13. 13
    @joaoasrosa

    View Slide

  14. @joaoasrosa

    View Slide

  15. @joaoasrosa

    View Slide

  16. @joaoasrosa

    View Slide

  17. 17
    “That shallowness of knowledge produces software that
    does a basic job but lacks a deep connection to the
    domain expert’s way of thinking.”
    - Eric Evans
    @joaoasrosa

    View Slide

  18. @joaoasrosa
    Focus on a language where we really
    crisply concisely describe
    the situation in the domain

    View Slide

  19. @joaoasrosa

    View Slide

  20. We all know or should know that language is fluid, liquid, subject to the
    whims of the people. Language evolves, as it should. Because language
    changes to accommodate new users, the older users resist and complain.
    http://tednellen.blogspot.com/2013/04/language-is-fluid.html
    @joaoasrosa

    View Slide

  21. @joaoasrosa
    Instead of one canonical language,
    create multiple bounded languages

    View Slide

  22. 22
    @joaoasrosa

    View Slide

  23. “A loosely coupled software architecture
    and org structure to match” is a key
    predictor of:
    1. Continuous Delivery Performance
    2. Ability to scale org and increase
    performance linearly
    Credits: Nick Tune
    @joaoasrosa

    View Slide

  24. @joaoasrosa
    Focus on part of the software handling
    complex business requirements

    View Slide

  25. @joaoasrosa Photo by Product School on Unsplash

    View Slide

  26. 26
    @joaoasrosa

    View Slide

  27. 27
    It is not the domain experts knowledge
    that goes to production, it is the
    assumption of the developers
    that goes to production
    - Alberto Brandolini
    @joaoasrosa

    View Slide

  28. @joaoasrosa

    View Slide

  29. 29
    Big Picture
    Business process
    modelling
    Software
    design
    @joaoasrosa

    View Slide

  30. 30
    @joaoasrosa
    Credits: EventStorming.com

    View Slide

  31. 31
    @joaoasrosa

    View Slide

  32. 32
    @joaoasrosa

    View Slide

  33. @joaoasrosa

    View Slide

  34. @joaoasrosa

    View Slide

  35. 35
    Source: https://medium.freecodecamp.org/coding-explained-in-25-profound-comics-8847ea03819c
    @joaoasrosa

    View Slide

  36. 36
    Source: https://nl.pinterest.com/pin/550846598149452758/
    @joaoasrosa

    View Slide

  37. 37
    Source:https://www.dw.com/en/maligned-ronaldo-statue-replaced-at-madeira-airport/a-44279114
    @joaoasrosa

    View Slide

  38. 38
    @joaoasrosa

    View Slide

  39. 39
    A model is a simplified representation of a thing
    or phenomenon that intentionally emphasizes
    certain aspects while ignoring others.
    Abstraction with a specific use in mind.
    @joaoasrosa

    View Slide

  40. 40
    @joaoasrosa

    View Slide

  41. 41
    Business
    @joaoasrosa

    View Slide

  42. 42
    Business
    Architects
    @joaoasrosa

    View Slide

  43. 43
    Business
    Architects
    Developers
    @joaoasrosa

    View Slide

  44. 44
    Business
    Architects
    Developers
    @joaoasrosa

    View Slide

  45. 45
    https://domainlanguage.com
    @joaoasrosa

    View Slide

  46. @joaoasrosa

    View Slide

  47. 47
    Try at least to find three models,
    even if you think you already found
    the “right model”
    @joaoasrosa

    View Slide

  48. 48
    https://domainlanguage.com
    @joaoasrosa

    View Slide

  49. 49
    @joaoasrosa
    https://blog.ncrunch.net/post/london-tdd-vs-detroit-tdd.aspx

    View Slide

  50. @joaoasrosa

    View Slide

  51. 51
    Source: https://nl.pinterest.com/pin/550846598149452758/
    @joaoasrosa
    1. Write a coarse-grain acceptance test
    a. Outside-in testing
    2. Start with entrypoint of our model
    3. Design-by-Coding
    4. Assess if the models can easily evolve
    to support other features

    View Slide

  52. 52
    @joaoasrosa

    View Slide

  53. 53
    1. Protects business invariants
    2. Design them small
    3. Reference other by ID only
    4. Update other aggregates
    using eventual consistency
    @joaoasrosa

    View Slide

  54. @joaoasrosa

    View Slide

  55. 55
    https://domainlanguage.com
    @joaoasrosa

    View Slide

  56. 56
    Essence of Domain-Driven Design
    ➔ Using models for creating software
    ➔ Focus on part of the software handling complex business requirements
    ➔ Focus on a language where we really crisply concisely describe the
    situation in the domain
    ➔ Shared language created through conversations between business
    people (specialists) and software people which becomes the ubiquitous
    language
    ➔ Instead of one canonical language, create multiple bounded languages

    View Slide

  57. 57
    Software Development is
    a learning process, working code is a
    side effect.
    - Alberto Brandolini
    @joaoasrosa

    View Slide

  58. 58
    Serious software development is
    the practice of symmathesy.
    “Sym” = together, “mathesy” = learning.
    - Jessica Kerr
    @joaoasrosa

    View Slide

  59. @joaoasrosa
    Virtual Domain-Driven Design
    https://virtualddd.com

    View Slide

  60. @joaoasrosa
    Software Crafts Podcast
    https://www.softwarecraftspodcast.com

    View Slide

  61. #CatTax
    @joaoasrosa
    https://github.com/xebia/CoDDDing-labs

    View Slide