Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
EventStorming
Jeppe Cramon
© Copyright 2015 TigerTeam ApS
© Copyright Jeppe Cramon - TigerTeam ApS 2015
1
Why should you be
interested?
© Copyright Jeppe Cramon - TigerTeam ApS 2015
2
No technology, framework or
pattern can fix having bad or
wrong requirements
© Copyright Jeppe Cramon - TigerTeam ApS 2015...
How to gather requirements
from many different
departments/specialists?
© Copyright Jeppe Cramon - TigerTeam ApS 2015
4
De...
Sequential data gathering?
© Copyright Jeppe Cramon - TigerTeam ApS 2015
5
Time
Or design by committee?
© Copyright Jeppe Cramon - TigerTeam ApS 2015
6
Software development is
journey
Involving collective learning
© Copyright Jeppe Cramon - TigerTeam ApS 2015
7
So let’s find a fun and better
way to do it
© Copyright Jeppe Cramon - TigerTeam ApS 2015
8
Event Storming
• Event Storming is a fun way of bringing
developers and business experts together
and drive your analysis ...
Event Storming
• Event Storming (or Model storming) is a way of
starting your analysis from the outside and
quickly explor...
Much requirements gathering
still follow in the steps of
structural or classic OO design
We write use cases/stories and
af...
Usually we start with a simple model
© Copyright Jeppe Cramon - TigerTeam ApS 2014
12
And as time goes by…
© Copyright Jeppe Cramon - TigerTeam ApS 2014
13
It gets more and more complicated
© Copyright Jeppe Cramon - TigerTeam ApS 2014
14
And finally we drown
© Copyright Jeppe Cramon - TigerTeam ApS 2014
15
We end up with
One Domain Model to Rule them All
© Copyright Jeppe Cramon - TigerTeam ApS 2014
16
Can’t we avoid ceremonial
modeling?
Something easier, faster and better?
Event Storming
• Invite the right people
– people with questions and people with answers.
They provide the perfect mix of ...
Event Storming is
• Powerful
– come up with a comprehensive model of a complete business flow in
hours instead of weeks.
•...
How to run a Event Storming
Workshop
• Explore the domain starting from
Domain/Business Events
© Copyright Jeppe Cramon - ...
Why Events
• Simple semantic and notation
– Represent the state transitions
– Gives us precision
• Easy to grasp by everyb...
Events
An Event message is non-prescriptive of what should happen in other
services. It leaves this open to the recipients...
How to run a Event Storming
Workshop
• What causes Domain Events?
– User Action model it as a Command
– External system
– ...
Events are often the side effect of
Commands
A Command message is prescriptive of what should happen. This is a
stronger f...
Commands & Events
Commands mutate Business Object state which
results in one or more Events being published
© Copyright Je...
Commands & Events
© Copyright Jeppe Cramon - TigerTeam ApS 2015
26
Receives a
Command
Asynchronously
Publishes
multiple Ev...
Using Business Events to drive
Business Processes
© Copyright Jeppe Cramon - TigerTeam ApS 2015
27
Sales Service
Shipping
...
Have you heard of flash mobs?
© Copyright Jeppe Cramon - TigerTeam ApS 2015
28
Choreographed Processes
© Copyright Jeppe Cramon - TigerTeam ApS 2015
29
Sales Service
Order
Accepted
Billing Service
Orde...
Documents can also drive
processes
© Copyright Jeppe Cramon - TigerTeam ApS 2015
30
Before computers
© Copyright Jeppe Cramon - TigerTeam ApS 2015
31
Sales department
Shipping department Billing Department
Document?
© Copyright Jeppe Cramon - TigerTeam ApS 2015
32
Example of a document driven
business process
© Copyright Jeppe Cramon - TigerTeam ApS 2015
33
iueiuei iueiuei
1271871
iue...
Most developers and business
people are already familiar with
this way of thinking
© Copyright Jeppe Cramon - TigerTeam Ap...
How to run a Event Storming
Workshop
• Explore Aggregates Outside In
– An Aggregate receives Commands and decides to
execu...
Aggregates
Invoice
InvoiceLine
*
Account *
What:
• Cluster coherent Entities and Value Objects, with
complex associations ...
How to run a Event Storming
Workshop
• Explore Sub domains
– Different areas of responsibility map pretty well to
differen...
How to run a Event Storming
Workshop
• Explore Bounded Contexts
– During the discussion, some conflict areas with
regards ...
Bounded Context
Domain Driven Design (DDD)
The setting in which a word or a statement
appears that determines its meaning
...
How to run a Event Storming
Workshop
• Other Targets:
– Sketching User Personas
• Sometimes the person issuing the command...
Event Storming
• Legend:
– User Action modeled as a Command
– External system
– Time
– Domain Events
– Documents
– IT Oper...
Thank you 
Jeppe Cramon – jeppe@tigerteam.dk
www.tigerteam.dk
Twitter: @tigerteamdk and @jeppec
Want to learn more?
Conta...
Upcoming SlideShare
Loading in …5
×

of

Event storming Slide 1 Event storming Slide 2 Event storming Slide 3 Event storming Slide 4 Event storming Slide 5 Event storming Slide 6 Event storming Slide 7 Event storming Slide 8 Event storming Slide 9 Event storming Slide 10 Event storming Slide 11 Event storming Slide 12 Event storming Slide 13 Event storming Slide 14 Event storming Slide 15 Event storming Slide 16 Event storming Slide 17 Event storming Slide 18 Event storming Slide 19 Event storming Slide 20 Event storming Slide 21 Event storming Slide 22 Event storming Slide 23 Event storming Slide 24 Event storming Slide 25 Event storming Slide 26 Event storming Slide 27 Event storming Slide 28 Event storming Slide 29 Event storming Slide 30 Event storming Slide 31 Event storming Slide 32 Event storming Slide 33 Event storming Slide 34 Event storming Slide 35 Event storming Slide 36 Event storming Slide 37 Event storming Slide 38 Event storming Slide 39 Event storming Slide 40 Event storming Slide 41 Event storming Slide 42
Upcoming SlideShare
Agile, Architecture, DDD and CQRS
Next
Download to read offline and view in fullscreen.

28 Likes

Share

Download to read offline

Event storming

Download to read offline

Short appetiser and introduction to Event Storming

Related Books

Free with a 30 day trial from Scribd

See all

Event storming

  1. 1. EventStorming Jeppe Cramon © Copyright 2015 TigerTeam ApS © Copyright Jeppe Cramon - TigerTeam ApS 2015 1
  2. 2. Why should you be interested? © Copyright Jeppe Cramon - TigerTeam ApS 2015 2
  3. 3. No technology, framework or pattern can fix having bad or wrong requirements © Copyright Jeppe Cramon - TigerTeam ApS 2015 3
  4. 4. How to gather requirements from many different departments/specialists? © Copyright Jeppe Cramon - TigerTeam ApS 2015 4 Department C Department E Department A Department D Department B
  5. 5. Sequential data gathering? © Copyright Jeppe Cramon - TigerTeam ApS 2015 5 Time
  6. 6. Or design by committee? © Copyright Jeppe Cramon - TigerTeam ApS 2015 6
  7. 7. Software development is journey Involving collective learning © Copyright Jeppe Cramon - TigerTeam ApS 2015 7
  8. 8. So let’s find a fun and better way to do it © Copyright Jeppe Cramon - TigerTeam ApS 2015 8
  9. 9. Event Storming • Event Storming is a fun way of bringing developers and business experts together and drive your analysis from the outside and quickly explore complex business domains in hours instead of days/weeks.
  10. 10. Event Storming • Event Storming (or Model storming) is a way of starting your analysis from the outside and quickly explore complex business domains. • Invented by Alberto Brandolini – See http://ziobrando.blogspot.dk/2013/11/introducing- event-storming.html © Copyright Jeppe Cramon - TigerTeam ApS 2015 10
  11. 11. Much requirements gathering still follow in the steps of structural or classic OO design We write use cases/stories and afterwards look for nouns and verbs © Copyright Jeppe Cramon - TigerTeam ApS 2015 11
  12. 12. Usually we start with a simple model © Copyright Jeppe Cramon - TigerTeam ApS 2014 12
  13. 13. And as time goes by… © Copyright Jeppe Cramon - TigerTeam ApS 2014 13
  14. 14. It gets more and more complicated © Copyright Jeppe Cramon - TigerTeam ApS 2014 14
  15. 15. And finally we drown © Copyright Jeppe Cramon - TigerTeam ApS 2014 15
  16. 16. We end up with One Domain Model to Rule them All © Copyright Jeppe Cramon - TigerTeam ApS 2014 16
  17. 17. Can’t we avoid ceremonial modeling? Something easier, faster and better?
  18. 18. Event Storming • Invite the right people – people with questions and people with answers. They provide the perfect mix of curiosity and wisdom. • Provide unlimited modeling space © Copyright Jeppe Cramon - TigerTeam ApS 2015 18
  19. 19. Event Storming is • Powerful – come up with a comprehensive model of a complete business flow in hours instead of weeks. • Engaging: – bring people with the questions and people who know the answer in the same room and to build a model together • Efficient – the resulting model is perfectly aligned with Event Sourcing and EDA, and allows for a quick determination of Bounded Context and Aggregate boundaries and thereby also Service boundaries • Easy – the notation is ultra-simple. No complex UML • Fun – Eventstorming workshops and fun, people are energized and deliver more than they expected. The right questions arise, and the atmosphere is the right one. © Copyright Jeppe Cramon - TigerTeam ApS 2015 19
  20. 20. How to run a Event Storming Workshop • Explore the domain starting from Domain/Business Events © Copyright Jeppe Cramon - TigerTeam ApS 2015 20 Event
  21. 21. Why Events • Simple semantic and notation – Represent the state transitions – Gives us precision • Easy to grasp by everybody in the room • Place them along a timeline to visualize the process • An event might be the predecessor or the follower of another one. © Copyright Jeppe Cramon - TigerTeam ApS 2015 21
  22. 22. Events An Event message is non-prescriptive of what should happen in other services. It leaves this open to the recipients, so that they themselves determine what to do based on occurrence of the event. Events always carry a name in its past-tense form: OrderWasAccepted, OrderHasShipped, CustomerWasReimbursed Other qualities • Immutable, i.e. content cannot be changed • Always carries the ID of the Business Object it relates to • An event can and will typically will be published to multiple consumers. – The publisher of the event does not know who the recipients are – And it doesn’t know what the recipients intend to do with the event © Copyright Jeppe Cramon - TigerTeam ApS 2015 22 “An Event describes something that HAS happened”
  23. 23. How to run a Event Storming Workshop • What causes Domain Events? – User Action model it as a Command – External system – Time – Other Domain Events – Documents © Copyright Jeppe Cramon - TigerTeam ApS 2015 23 External Time Command Role Event Event Document
  24. 24. Events are often the side effect of Commands A Command message is prescriptive of what should happen. This is a stronger form of coupling than Event and Document messages. A Command’s primary goal is to capture USER INTENT A Command supports a single usecase and targets a single Business Object Commands always carry a name in its imperative form: CreateOrder, ShipOrder, CancelOrder, ReimburseCustomer, etc. Other qualities • Immutable, i.e. content cannot be changed • Always carries the ID of the Business Object that it relates to • A command can only be handled by ONE service • The Operations that consume Commands don’t return values – but can throw exceptions © Copyright Jeppe Cramon - TigerTeam ApS 2015 24 “A command describes a Task that you want someone else to carry out for you and the recipient can reject the Command”
  25. 25. Commands & Events Commands mutate Business Object state which results in one or more Events being published © Copyright Jeppe Cramon - TigerTeam ApS 2015 25 Command Event(s) AcceptOrder OrderAccepted ShipOrder OrderShipped AddComment CommentAdded QuarantineReview ReviewQuarantined UnquarantineReview ReviewUnquarantined
  26. 26. Commands & Events © Copyright Jeppe Cramon - TigerTeam ApS 2015 26 Receives a Command Asynchronously Publishes multiple Events asynchronously
  27. 27. Using Business Events to drive Business Processes © Copyright Jeppe Cramon - TigerTeam ApS 2015 27 Sales Service Shipping Billing Sales Customers MessageChannel Online Ordering System Web Shop (Composite UI) Billing Service Shipping Service Order Accepted Event AcceptOrde r Command The sales fulfillment processing can now begin…
  28. 28. Have you heard of flash mobs? © Copyright Jeppe Cramon - TigerTeam ApS 2015 28
  29. 29. Choreographed Processes © Copyright Jeppe Cramon - TigerTeam ApS 2015 29 Sales Service Order Accepted Billing Service Orderfulfilment Service Process Manager (Saga) Shipping Service Online Ordering System Message Channel Order Accepted Order Accepted Customer Billed Customer Billed Order Authorized Order Authorized
  30. 30. Documents can also drive processes © Copyright Jeppe Cramon - TigerTeam ApS 2015 30
  31. 31. Before computers © Copyright Jeppe Cramon - TigerTeam ApS 2015 31 Sales department Shipping department Billing Department
  32. 32. Document? © Copyright Jeppe Cramon - TigerTeam ApS 2015 32
  33. 33. Example of a document driven business process © Copyright Jeppe Cramon - TigerTeam ApS 2015 33 iueiuei iueiuei 1271871 iueiuei 1271871 Customer Department Account Department Payments Department
  34. 34. Most developers and business people are already familiar with this way of thinking © Copyright Jeppe Cramon - TigerTeam ApS 2015 34 Todo In progress Done Work Board
  35. 35. How to run a Event Storming Workshop • Explore Aggregates Outside In – An Aggregate receives Commands and decides to execute them or reject them – If the Aggregate executes a Command it will produce one or more Domain Events as a result © Copyright Jeppe Cramon - TigerTeam ApS 2015 35
  36. 36. Aggregates Invoice InvoiceLine * Account * What: • Cluster coherent Entities and Value Objects, with complex associations into Aggregates with well defined boundaries. • Choose one entity to be root and control access to objects inside the boundary through the root. • External objects hold references to the root • Aggregates only refer to other aggregates by identity (their id) Motivation: Control invariants and consistency through the aggregate root. Enables: Loading schemes, coarse grained locking and… Ensuring consistency & transactional boundaries for Distributed scenarios Root
  37. 37. How to run a Event Storming Workshop • Explore Sub domains – Different areas of responsibility map pretty well to different subdomains or portions of the pork © Copyright Jeppe Cramon - TigerTeam ApS 2015 37
  38. 38. How to run a Event Storming Workshop • Explore Bounded Contexts – During the discussion, some conflict areas with regards to different interpretations of terms might emerge – Draw boundaries between the multiple consistent models that will coexist in your domain. © Copyright Jeppe Cramon - TigerTeam ApS 2015 38 Accep t Order Order Order Accepted Order Order Delivered Sales Delivery
  39. 39. Bounded Context Domain Driven Design (DDD) The setting in which a word or a statement appears that determines its meaning Ensures that our is clear and precise © Copyright Jeppe Cramon - TigerTeam ApS 2014 39
  40. 40. How to run a Event Storming Workshop • Other Targets: – Sketching User Personas • Sometimes the person issuing the command is important to capture – Sketching Key Acceptance Tests • If the discussion revolves around corner cases or ambiguous scenarios, remove ambiguity by defining a clear acceptance test – Sketching Key Read Models • For some scenarios what the users see is far more important than what the system does © Copyright Jeppe Cramon - TigerTeam ApS 2015 40
  41. 41. Event Storming • Legend: – User Action modeled as a Command – External system – Time – Domain Events – Documents – IT Operations (Gateway) – Aggregate – Read Model External Time Command Role Event Event Document IT Ops Read Model Aggregate
  42. 42. Thank you  Jeppe Cramon – jeppe@tigerteam.dk www.tigerteam.dk Twitter: @tigerteamdk and @jeppec Want to learn more? Contact me for training and mentoring
  • MartinLeandertz

    Feb. 7, 2020
  • tucq88

    May. 3, 2019
  • thisisal

    Feb. 19, 2019
  • TaeSeongKim7

    Feb. 15, 2019
  • rfred999

    Nov. 28, 2018
  • up1

    Nov. 22, 2018
  • JeanBaptisteClaramonte

    Nov. 6, 2018
  • NicolasFaret

    Oct. 25, 2018
  • csucom

    Oct. 19, 2018
  • DanielFung22

    Jun. 12, 2018
  • kenkrizzard

    Jun. 6, 2018
  • gasparnagy

    Jun. 5, 2018
  • GustavoTovar3

    May. 11, 2018
  • entwickler

    May. 2, 2018
  • liweiyang5

    Apr. 19, 2018
  • Haesik

    Mar. 31, 2018
  • geoffwellman

    Dec. 8, 2017
  • julian384

    Aug. 1, 2017
  • AndreasSchlapbach1

    Jun. 21, 2017
  • AlexandervanTrijffel

    Feb. 13, 2017

Short appetiser and introduction to Event Storming

Views

Total views

13,283

On Slideshare

0

From embeds

0

Number of embeds

574

Actions

Downloads

308

Shares

0

Comments

0

Likes

28

×