SlideShare uma empresa Scribd logo
1 de 18
Baixar para ler offline
« All models are wrong,
but some are useful »
George E.P. Box
Unlimited Modeling Space
Domain
Event
Command
Aggregate
key
scenario;
notes;
goal…
External
System
A domain event is anything that happens that is of interest to a domain expert. The domain expert is not interested in databases, web
sockets, or design patterns, but in the business domain of the things that have to happen. Domain events capture those facts in a way that
doesn't specify a particular implementation.
http://techbeacon.com/introduction-event-storming-easy-way-achieve-domain-driven-design
http://ziobrando.blogspot.fr/2013/11/introducing-event-storming.html
If you start with data modeling, your thinking and conversations will
quickly digress into schemas, transactions, and other things that have
nothing to do with the business domain.
If you start from behavioral modeling, you'll get distracted as you break
down behaviors into tasks and link them into processes.
Those are implementation concepts, not business-domain concepts.
While there are myriad choices for representing data and
implementing behaviors, there are no alternatives for domain events.
Because domain events represent facts about the domain, these only
change significantly when the underlying business changes. Domain
events are thus a more stable and resilient scaffolding for your model.
Domain
Event
Why should you start with domain event
Explore the domain starting from Domain Events.
Item
Added
Order
Accepted
past-tense sentence
Invoice
Sent
Order
Received
"Something that has happened
in the past that is of interest to
the business"
A domain event is anything that happens that is of interest to a domain expert. The domain expert is not interested in databases, web
sockets, or design patterns, but in the business domain of the things that have to happen. Domain events capture those facts in a way that
doesn't specify a particular implementation.
Domain
Event
Explore the domain starting from Domain Events.
Item
Added
Order
Accepted
past-tense sentence
Invoice was
Sent
Order
Received
"Something that has happened
in the past that is of interest to
the business"
UserLogged
In
UserLogged
Out
UserAdress
Changed
Invoice was
generated
I [Mathias Verraes] personally prefer sentence-style event names (“A product
was added to a basket” vs “Product added to basket”). I believe this makes the
business people feel more comfortable.
Invoice was
Paid
Invoice was
Contested
http://techbeacon.com/introduction-event-storming-easy-way-achieve-domain-driven-design
http://ziobrando.blogspot.fr/2013/11/introducing-event-storming.html
http://verraes.net/2015/03/event-storming-storytelling-visualisations/
The first few steps go something like this:
• Write down a Domain Event on a sticky (preferably
something that happens at the end, like “Bill was paid”).
• Ask what happened before that (“Bill was sent”) and
before that, until you get to the beginning.
• Ask what caused the events to happen. Those are
usually Commands (aka user intentions), other events,
or simply the passage of time.
• Ask for what reason a Command can fail, and find the
rules that impact the outcome of the Commands. This
pushes you to discover alternative scenarios, missing
events, connections between distant events…
The group starts with domain events, walking through the model forwards and backwards to ensure that everything is covered.
An event might be the predecessor of the follower of another one. Place all of them onto your modeling surface (the convention is to use
orange stickies for this purpose) according to a timeline.
Domain
Event
timeline
A domain event is anything that happens that is of interest to a domain expert. The domain expert is not interested in databases, web
sockets, or design patterns, but in the business domain of the things that have to happen. Domain events capture those facts in a way that
doesn't specify a particular implementation.
Explore the domain starting from Domain Events.
http://techbeacon.com/introduction-event-storming-easy-way-achieve-domain-driven-design
http://ziobrando.blogspot.fr/2013/11/introducing-event-storming.html
http://verraes.net/2015/03/event-storming-storytelling-visualisations/
Happy path & What can go wrong?
Then the group adds the commands, or triggers, that cause the events, and considers all sources of commands, including users, external
systems, and even time.
Domain
Event
Command
?
Explore the origin of Domain Events
Domain
Event
Some events are the direct consequence of a user action —> represent it as a Command using a blue sticky note. Others are the
consequence of something happening in external systems or of the time passing, we’ll use a purple sticky note for them. In some other
cases, we’ll have events that will be the direct consequence of some other events. We’ll simply place the two events close together.
http://techbeacon.com/introduction-event-storming-easy-way-achieve-domain-driven-design
http://ziobrando.blogspot.fr/2013/11/introducing-event-storming.html
What does trigger events?
A command from a given user or an external system
The Time (e.g. end of month, end of week, midnight…)
Another event
…
Domain
Event
Command
Trigger ?
?
Explore the origin of Domain Events
Domain
Event
Then the group adds the commands, or triggers, that cause the events, and considers all sources of commands, including users, external
systems, and even time.
Some events are the direct consequence of a user action —> represent it as a Command using a blue sticky note. Others are the
consequence of something happening in external systems or of the time passing, we’ll use a purple sticky note for them. In some other
cases, we’ll have events that will be the direct consequence of some other events. We’ll simply place the two events close together.
http://techbeacon.com/introduction-event-storming-easy-way-achieve-domain-driven-design
http://ziobrando.blogspot.fr/2013/11/introducing-event-storming.html
What does trigger events?
A command from a given user or an external system
The Time (e.g. end of month, end of week, midnight…)
Another event
…
Domain
Event
Command
Trigger
Source Of
?
user
time
external system
…
?
?
Explore the origin of Domain Events
Domain
Event
Then the group adds the commands, or triggers, that cause the events, and considers all sources of commands, including users, external
systems, and even time.
Some events are the direct consequence of a user action —> represent it as a Command using a blue sticky note. Others are the
consequence of something happening in external systems or of the time passing, we’ll use a purple sticky note for them. In some other
cases, we’ll have events that will be the direct consequence of some other events. We’ll simply place the two events close together.
http://techbeacon.com/introduction-event-storming-easy-way-achieve-domain-driven-design
http://ziobrando.blogspot.fr/2013/11/introducing-event-storming.html
What does trigger events?
A command from a given user or an external system
The Time (e.g. end of month, end of week, midnight…)
Another event
…
!
Trigger
"
#
Trigger
"
Explore the origin of Domain Events
Item
Added
Order
Accepted
Invoice
Sent
Order
Received
UserLogged
In
UserLogged
Out
UserAdress
Changed
UserLogin
UserLogout
Change
Address
AddItem
Validate
Order
Domain
Event
Command
?
Aggregate
Look for Aggregates
Domain
Event
The group identifies aggregates that accept commands and accomplish events, and begins to group aggregates together into bounded
contexts. Along the way, key test scenarios, users, and goals are identified and incorporated into the model.
Instead of defining aggregates starting from the code, we’re taking an outside-in approach: the Aggregate is the portion of the system that
receives commands and decides whether to execute them or not, thus producing a domain event.
http://techbeacon.com/introduction-event-storming-easy-way-achieve-domain-driven-design
http://ziobrando.blogspot.fr/2013/11/introducing-event-storming.html
Explore Aggregates Outside-In
An aggregate can accept or reject
commands…
… and mostly needs only the data
needed for this purpose
Order
Cart
User
http://techbeacon.com/introduction-event-storming-easy-way-achieve-domain-driven-design
http://ziobrando.blogspot.fr/2013/11/introducing-event-storming.html
Explore the origin of Domain Events
Item
Added
Order
Accepted
Invoice
Sent
Order
Received
UserLogged
In
UserLogged
Out
UserAdress
Changed
UserLogin
UserLogout
Change
Address
AddItem
Validate
Order
Domain
Event
Command
Aggregate
The group identifies aggregates that accept commands and accomplish events, and begins to group aggregates together into bounded
contexts. Along the way, key test scenarios, users, and goals are identified and incorporated into the model. Finally, the relationships
between bounded contexts are added to create a context map.
Group Aggregates into bounded context
http://techbeacon.com/introduction-event-storming-easy-way-achieve-domain-driven-design
http://ziobrando.blogspot.fr/2013/11/introducing-event-storming.html
Domain
Event
Command
Domain
Event
Command
Aggregate
Command
Domain
Event
Domain
Event
Command
Aggregate
Order
Cart
User
Explore the origin of Domain Events
Item
Added
Order
Accepted
Invoice
Sent
Order
Received
UserLogged
In
UserLogged
Out
UserAdress
Changed
UserLogin
UserLogout
Change
Address
AddItem
Validate
Order
Bonus Targets
http://techbeacon.com/introduction-event-storming-easy-way-achieve-domain-driven-design
http://ziobrando.blogspot.fr/2013/11/introducing-event-storming.html
persona
Carnet d’entretien
Réparation
Vendeur de « Carcasse »
…
Exploring Subdomains
Exploring Bounded Contexts
Sketching User Persona
Sketching Key Acceptance Tests
Sketching Key Read Model Artefacts
Critical or ambiguous use cases might require
a precise completion criteria
When discussions arise around meaning and
semantics, multiple models are probably
involved
Different stakeholders will have different areas
of expertise
Sometimes who is performing the action is
more important than other details
Facilitating
• Hang the first sticky yourself (a tip from Alberto, works really well)
• Know when to step back. Don’t do the modeling, guide the modeling
• Ask questions:
• Is there something missing here? Why is there a gap?
• How does this make money?
• How does the business evaluate that this is working? What are the targets, how will we know we’ve
reached them?
• For whom is this event of importance (end user, business, tenant,…) ?
• I can’t see this particular role, or type of user, in this model. Should they be on here somewhere?
• Change the direction, e.g. start at the end of the flow, move back in time, then later start at the beginning and
move forward.
• Interrupt long discussions. Visualise both opinions, and, very important: ask both parties if they feel their
opinion is accurately represented.
• Timebox, using pomodoro’s (25 minutes). After each pomodoro, ask what is going well and what isn’t. It’s a
good opportunity to move to the next phase (e.g. from adding events to adding causality, to drawing
aggregate boundaries). You may want to move on even if you don’t feel the model is complete.
• Constantly move stickies to create room for hotspots.
• Hang red stickies with exclamation marks, question marks, or other notes, anywhere you feel there’s
an issue.
• At the end, make a photo. Then tell them to throw the model away, and to do it over the next day. If possible
in the presence of other stakeholders.
• I personally prefer sentence-style event names (“A product was added to a basket” vs “Product added to
basket”). I believe this makes the business people feel more comfortable.
http://verraes.net/2013/08/facilitating-event-storming/
References
Steven A. Lowe - An introduction to event storming: The easy way to achieve domain-driven design (Oct. 2015)
http://techbeacon.com/introduction-event-storming-easy-way-achieve-domain-driven-design
Alberto Brandolini - Introducing Event Storming (Nov. 2013)
http://ziobrando.blogspot.fr/2013/11/introducing-event-storming.html
https://lh3.googleusercontent.com/-2x4VNk-s32g/UouhUvPHbWI/AAAAAAAAAi8/oicOlEmD7i4/w1405-h1123-no/Event+Storming
+Cards+-+all.jpg
Alberto Brandolini - Event Storming Recipes (Jun. 2014)
http://fr.slideshare.net/ziobrando/event-storming-recipes
Thomas Pierrain - Event storming: Domain distillation under steroids (Aug. 2015)
http://tpierrain.blogspot.fr/2015/08/event-storming-domain-distillation.html
Thomas Pierrain - Event Storming: my rookie mistakes (Aug. 2015)
http://tpierrain.blogspot.fr/2015/08/event-storming-my-rookie-mistakes.html
Emilien Pecoul (Ouarzy) - Event Storming (Sep. 2015)
http://ouarzy.azurewebsites.net/2015/09/23/event-storming-another-way-to-design-an-event-driven-architecture/
Mathias Verraes - Facilitating Event Storming (Aug. 2013)
http://verraes.net/2013/08/facilitating-event-storming/
Mathias Verraes - Event Storming, Storytelling, Visualisations (Mar. 2015)
http://verraes.net/2015/03/event-storming-storytelling-visualisations/

Mais conteúdo relacionado

Mais procurados

Domain Driven Design (DDD)
Domain Driven Design (DDD)Domain Driven Design (DDD)
Domain Driven Design (DDD)Tom Kocjan
 
Workshop event storming
Workshop event stormingWorkshop event storming
Workshop event stormingJef Claes
 
Microservices Architecture - Cloud Native Apps
Microservices Architecture - Cloud Native AppsMicroservices Architecture - Cloud Native Apps
Microservices Architecture - Cloud Native AppsAraf Karsh Hamid
 
CQRS and Event Sourcing
CQRS and Event Sourcing CQRS and Event Sourcing
CQRS and Event Sourcing Inho Kang
 
Refactoring for Domain Driven Design
Refactoring for Domain Driven DesignRefactoring for Domain Driven Design
Refactoring for Domain Driven DesignDavid Berliner
 
The Paved Road at Netflix
The Paved Road at NetflixThe Paved Road at Netflix
The Paved Road at NetflixDianne Marsh
 
Building rich domain models with ddd and tdd ivan paulovich - betsson
Building rich domain models with ddd and tdd   ivan paulovich - betssonBuilding rich domain models with ddd and tdd   ivan paulovich - betsson
Building rich domain models with ddd and tdd ivan paulovich - betssonIvan Paulovich
 
Domain Driven Design (Ultra) Distilled
Domain Driven Design (Ultra) DistilledDomain Driven Design (Ultra) Distilled
Domain Driven Design (Ultra) DistilledNicola Costantino
 
AGILE@DELOITTE AGILE LANDSCAPE v02
AGILE@DELOITTE AGILE LANDSCAPE v02AGILE@DELOITTE AGILE LANDSCAPE v02
AGILE@DELOITTE AGILE LANDSCAPE v02Chris Webb
 
An Integral Agile Transformation Approach - Miljan Bajic
An Integral Agile Transformation Approach - Miljan BajicAn Integral Agile Transformation Approach - Miljan Bajic
An Integral Agile Transformation Approach - Miljan Bajicagilemaine
 
Clean architecture with asp.net core
Clean architecture with asp.net coreClean architecture with asp.net core
Clean architecture with asp.net coreSam Nasr, MCSA, MVP
 
Building a Center of Excellence for your Salesforce crm team
Building a Center of Excellence for your Salesforce crm teamBuilding a Center of Excellence for your Salesforce crm team
Building a Center of Excellence for your Salesforce crm teamBuyan Thyagarajan
 
Microservices Architecture & Testing Strategies
Microservices Architecture & Testing StrategiesMicroservices Architecture & Testing Strategies
Microservices Architecture & Testing StrategiesAraf Karsh Hamid
 
Business readiness slides
Business readiness slidesBusiness readiness slides
Business readiness slidesColin Baker
 

Mais procurados (20)

Domain Driven Design (DDD)
Domain Driven Design (DDD)Domain Driven Design (DDD)
Domain Driven Design (DDD)
 
Workshop event storming
Workshop event stormingWorkshop event storming
Workshop event storming
 
Transactions redefined
Transactions redefinedTransactions redefined
Transactions redefined
 
Microservices Architecture - Cloud Native Apps
Microservices Architecture - Cloud Native AppsMicroservices Architecture - Cloud Native Apps
Microservices Architecture - Cloud Native Apps
 
CQRS and Event Sourcing
CQRS and Event Sourcing CQRS and Event Sourcing
CQRS and Event Sourcing
 
Refactoring for Domain Driven Design
Refactoring for Domain Driven DesignRefactoring for Domain Driven Design
Refactoring for Domain Driven Design
 
The Paved Road at Netflix
The Paved Road at NetflixThe Paved Road at Netflix
The Paved Road at Netflix
 
Building rich domain models with ddd and tdd ivan paulovich - betsson
Building rich domain models with ddd and tdd   ivan paulovich - betssonBuilding rich domain models with ddd and tdd   ivan paulovich - betsson
Building rich domain models with ddd and tdd ivan paulovich - betsson
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven Design
 
Domain Driven Design (Ultra) Distilled
Domain Driven Design (Ultra) DistilledDomain Driven Design (Ultra) Distilled
Domain Driven Design (Ultra) Distilled
 
AGILE@DELOITTE AGILE LANDSCAPE v02
AGILE@DELOITTE AGILE LANDSCAPE v02AGILE@DELOITTE AGILE LANDSCAPE v02
AGILE@DELOITTE AGILE LANDSCAPE v02
 
Introduction to DDD
Introduction to DDDIntroduction to DDD
Introduction to DDD
 
Event Storming and Saga
Event Storming and SagaEvent Storming and Saga
Event Storming and Saga
 
An Integral Agile Transformation Approach - Miljan Bajic
An Integral Agile Transformation Approach - Miljan BajicAn Integral Agile Transformation Approach - Miljan Bajic
An Integral Agile Transformation Approach - Miljan Bajic
 
Domain Driven Design
Domain Driven Design Domain Driven Design
Domain Driven Design
 
Domain driven design
Domain driven designDomain driven design
Domain driven design
 
Clean architecture with asp.net core
Clean architecture with asp.net coreClean architecture with asp.net core
Clean architecture with asp.net core
 
Building a Center of Excellence for your Salesforce crm team
Building a Center of Excellence for your Salesforce crm teamBuilding a Center of Excellence for your Salesforce crm team
Building a Center of Excellence for your Salesforce crm team
 
Microservices Architecture & Testing Strategies
Microservices Architecture & Testing StrategiesMicroservices Architecture & Testing Strategies
Microservices Architecture & Testing Strategies
 
Business readiness slides
Business readiness slidesBusiness readiness slides
Business readiness slides
 

Destaque

TIME-DOMAIN MODELING OF ELECTROMAGNETIC WAVE PROPAGATION IN COMPLEX MATERIALS...
TIME-DOMAIN MODELING OF ELECTROMAGNETIC WAVE PROPAGATION IN COMPLEX MATERIALS...TIME-DOMAIN MODELING OF ELECTROMAGNETIC WAVE PROPAGATION IN COMPLEX MATERIALS...
TIME-DOMAIN MODELING OF ELECTROMAGNETIC WAVE PROPAGATION IN COMPLEX MATERIALS...John Paul
 
Concurrency-aware eXecutable Domain-Specific Modeling Languages as Models of ...
Concurrency-aware eXecutable Domain-Specific Modeling Languages as Models of ...Concurrency-aware eXecutable Domain-Specific Modeling Languages as Models of ...
Concurrency-aware eXecutable Domain-Specific Modeling Languages as Models of ...Marc Pantel
 
OpenB concepts - Modeling Engine
OpenB concepts - Modeling EngineOpenB concepts - Modeling Engine
OpenB concepts - Modeling EngineWilko van der Veen
 
Ch.02 modeling in frequency domain
Ch.02 modeling in frequency domainCh.02 modeling in frequency domain
Ch.02 modeling in frequency domainNguyen_Tan_Tien
 
Domain-specific Modeling and Code Generation for Cross-platform Mobile and Io...
Domain-specific Modeling and Code Generation for Cross-platform Mobile and Io...Domain-specific Modeling and Code Generation for Cross-platform Mobile and Io...
Domain-specific Modeling and Code Generation for Cross-platform Mobile and Io...Università degli Studi dell'Aquila
 
An Algebraic Approach to Functional Domain Modeling
An Algebraic Approach to Functional Domain ModelingAn Algebraic Approach to Functional Domain Modeling
An Algebraic Approach to Functional Domain ModelingDebasish Ghosh
 
Atelier Event Storming - Piece of Make - Nantes
Atelier Event Storming - Piece of Make - NantesAtelier Event Storming - Piece of Make - Nantes
Atelier Event Storming - Piece of Make - NantesMaxime Sanglan-Charlier
 
The final words about software estimation
The final words about software estimationThe final words about software estimation
The final words about software estimationAlberto Brandolini
 

Destaque (10)

Event storming
Event stormingEvent storming
Event storming
 
TIME-DOMAIN MODELING OF ELECTROMAGNETIC WAVE PROPAGATION IN COMPLEX MATERIALS...
TIME-DOMAIN MODELING OF ELECTROMAGNETIC WAVE PROPAGATION IN COMPLEX MATERIALS...TIME-DOMAIN MODELING OF ELECTROMAGNETIC WAVE PROPAGATION IN COMPLEX MATERIALS...
TIME-DOMAIN MODELING OF ELECTROMAGNETIC WAVE PROPAGATION IN COMPLEX MATERIALS...
 
Concurrency-aware eXecutable Domain-Specific Modeling Languages as Models of ...
Concurrency-aware eXecutable Domain-Specific Modeling Languages as Models of ...Concurrency-aware eXecutable Domain-Specific Modeling Languages as Models of ...
Concurrency-aware eXecutable Domain-Specific Modeling Languages as Models of ...
 
KAOS
KAOSKAOS
KAOS
 
OpenB concepts - Modeling Engine
OpenB concepts - Modeling EngineOpenB concepts - Modeling Engine
OpenB concepts - Modeling Engine
 
Ch.02 modeling in frequency domain
Ch.02 modeling in frequency domainCh.02 modeling in frequency domain
Ch.02 modeling in frequency domain
 
Domain-specific Modeling and Code Generation for Cross-platform Mobile and Io...
Domain-specific Modeling and Code Generation for Cross-platform Mobile and Io...Domain-specific Modeling and Code Generation for Cross-platform Mobile and Io...
Domain-specific Modeling and Code Generation for Cross-platform Mobile and Io...
 
An Algebraic Approach to Functional Domain Modeling
An Algebraic Approach to Functional Domain ModelingAn Algebraic Approach to Functional Domain Modeling
An Algebraic Approach to Functional Domain Modeling
 
Atelier Event Storming - Piece of Make - Nantes
Atelier Event Storming - Piece of Make - NantesAtelier Event Storming - Piece of Make - Nantes
Atelier Event Storming - Piece of Make - Nantes
 
The final words about software estimation
The final words about software estimationThe final words about software estimation
The final words about software estimation
 

Semelhante a Event storming Notes

Complex event flows in distributed systems
Complex event flows in distributed systemsComplex event flows in distributed systems
Complex event flows in distributed systemsBernd Ruecker
 
Decoupling with Domain Events
Decoupling with Domain EventsDecoupling with Domain Events
Decoupling with Domain EventsSteven Smith
 
The Significant role of event driven apps in software development
The Significant role of event driven apps in software development					The Significant role of event driven apps in software development
The Significant role of event driven apps in software development Shelly Megan
 
Building Multi-Tenant and SaaS products in PHP - CloudConf 2015
Building Multi-Tenant and SaaS products in PHP - CloudConf 2015Building Multi-Tenant and SaaS products in PHP - CloudConf 2015
Building Multi-Tenant and SaaS products in PHP - CloudConf 2015Innomatic Platform
 
DotNetNuke Client API -DragDropAdminModules.pdf
DotNetNuke Client API -DragDropAdminModules.pdfDotNetNuke Client API -DragDropAdminModules.pdf
DotNetNuke Client API -DragDropAdminModules.pdfarunagulla
 
Implementing Event Sourcing in .NET
Implementing Event Sourcing in .NETImplementing Event Sourcing in .NET
Implementing Event Sourcing in .NETAndrea Saltarello
 
Designing Powerful Web Applications Using AJAX and Other RIAs
Designing Powerful Web Applications Using AJAX and Other RIAsDesigning Powerful Web Applications Using AJAX and Other RIAs
Designing Powerful Web Applications Using AJAX and Other RIAsDave Malouf
 
Project Deliverable 2 Business Requirements1Project Deliverab.docx
Project Deliverable 2 Business Requirements1Project Deliverab.docxProject Deliverable 2 Business Requirements1Project Deliverab.docx
Project Deliverable 2 Business Requirements1Project Deliverab.docxwkyra78
 
Unicenter Autosys Job Management
Unicenter Autosys Job ManagementUnicenter Autosys Job Management
Unicenter Autosys Job ManagementVenkata Duvvuri
 
Complex Event Processing
Complex Event ProcessingComplex Event Processing
Complex Event ProcessingJohn Plummer
 
Hacking Web Aplications using Cookie Poisoning
Hacking Web Aplications using Cookie PoisoningHacking Web Aplications using Cookie Poisoning
Hacking Web Aplications using Cookie PoisoningSumutiu Marius
 
Managing Content Chaos
Managing Content ChaosManaging Content Chaos
Managing Content ChaosChris Campbell
 
O'Reilly SA NYC 2018: Complex event flows in distributed systems
O'Reilly SA NYC 2018: Complex event flows in distributed systemsO'Reilly SA NYC 2018: Complex event flows in distributed systems
O'Reilly SA NYC 2018: Complex event flows in distributed systemsBernd Ruecker
 
CHAPTER 3 BASIC DYNAMIC ANALYSIS.ppt
CHAPTER 3 BASIC DYNAMIC ANALYSIS.pptCHAPTER 3 BASIC DYNAMIC ANALYSIS.ppt
CHAPTER 3 BASIC DYNAMIC ANALYSIS.pptManjuAppukuttan2
 
Mergers & Acquisitions security - (ISC)2 Secure Summit DACH
Mergers & Acquisitions security - (ISC)2 Secure Summit DACHMergers & Acquisitions security - (ISC)2 Secure Summit DACH
Mergers & Acquisitions security - (ISC)2 Secure Summit DACHEQS Group
 
Complete Guide to the Citrix Logon Process
Complete Guide to the Citrix Logon ProcessComplete Guide to the Citrix Logon Process
Complete Guide to the Citrix Logon ProcessJohn Grant
 
JavaScript and DOM Pattern Implementation
JavaScript and DOM Pattern ImplementationJavaScript and DOM Pattern Implementation
JavaScript and DOM Pattern Implementationdavejohnson
 

Semelhante a Event storming Notes (20)

Complex event flows in distributed systems
Complex event flows in distributed systemsComplex event flows in distributed systems
Complex event flows in distributed systems
 
Decoupling with Domain Events
Decoupling with Domain EventsDecoupling with Domain Events
Decoupling with Domain Events
 
The Significant role of event driven apps in software development
The Significant role of event driven apps in software development					The Significant role of event driven apps in software development
The Significant role of event driven apps in software development
 
Building Multi-Tenant and SaaS products in PHP - CloudConf 2015
Building Multi-Tenant and SaaS products in PHP - CloudConf 2015Building Multi-Tenant and SaaS products in PHP - CloudConf 2015
Building Multi-Tenant and SaaS products in PHP - CloudConf 2015
 
Event Processing For Dummies
Event Processing For DummiesEvent Processing For Dummies
Event Processing For Dummies
 
DotNetNuke Client API -DragDropAdminModules.pdf
DotNetNuke Client API -DragDropAdminModules.pdfDotNetNuke Client API -DragDropAdminModules.pdf
DotNetNuke Client API -DragDropAdminModules.pdf
 
Implementing Event Sourcing in .NET
Implementing Event Sourcing in .NETImplementing Event Sourcing in .NET
Implementing Event Sourcing in .NET
 
Designing Powerful Web Applications Using AJAX and Other RIAs
Designing Powerful Web Applications Using AJAX and Other RIAsDesigning Powerful Web Applications Using AJAX and Other RIAs
Designing Powerful Web Applications Using AJAX and Other RIAs
 
Project Deliverable 2 Business Requirements1Project Deliverab.docx
Project Deliverable 2 Business Requirements1Project Deliverab.docxProject Deliverable 2 Business Requirements1Project Deliverab.docx
Project Deliverable 2 Business Requirements1Project Deliverab.docx
 
Netcool Impact docs
Netcool Impact docsNetcool Impact docs
Netcool Impact docs
 
Web programming
Web programmingWeb programming
Web programming
 
Unicenter Autosys Job Management
Unicenter Autosys Job ManagementUnicenter Autosys Job Management
Unicenter Autosys Job Management
 
Complex Event Processing
Complex Event ProcessingComplex Event Processing
Complex Event Processing
 
Hacking Web Aplications using Cookie Poisoning
Hacking Web Aplications using Cookie PoisoningHacking Web Aplications using Cookie Poisoning
Hacking Web Aplications using Cookie Poisoning
 
Managing Content Chaos
Managing Content ChaosManaging Content Chaos
Managing Content Chaos
 
O'Reilly SA NYC 2018: Complex event flows in distributed systems
O'Reilly SA NYC 2018: Complex event flows in distributed systemsO'Reilly SA NYC 2018: Complex event flows in distributed systems
O'Reilly SA NYC 2018: Complex event flows in distributed systems
 
CHAPTER 3 BASIC DYNAMIC ANALYSIS.ppt
CHAPTER 3 BASIC DYNAMIC ANALYSIS.pptCHAPTER 3 BASIC DYNAMIC ANALYSIS.ppt
CHAPTER 3 BASIC DYNAMIC ANALYSIS.ppt
 
Mergers & Acquisitions security - (ISC)2 Secure Summit DACH
Mergers & Acquisitions security - (ISC)2 Secure Summit DACHMergers & Acquisitions security - (ISC)2 Secure Summit DACH
Mergers & Acquisitions security - (ISC)2 Secure Summit DACH
 
Complete Guide to the Citrix Logon Process
Complete Guide to the Citrix Logon ProcessComplete Guide to the Citrix Logon Process
Complete Guide to the Citrix Logon Process
 
JavaScript and DOM Pattern Implementation
JavaScript and DOM Pattern ImplementationJavaScript and DOM Pattern Implementation
JavaScript and DOM Pattern Implementation
 

Mais de Arnauld Loyer

Brown Bag Lunch - BDD an introduction - 2017 feb/mar
Brown Bag Lunch - BDD an introduction - 2017 feb/marBrown Bag Lunch - BDD an introduction - 2017 feb/mar
Brown Bag Lunch - BDD an introduction - 2017 feb/marArnauld Loyer
 
Bdd training v5.2.0 - public
Bdd training   v5.2.0 - publicBdd training   v5.2.0 - public
Bdd training v5.2.0 - publicArnauld Loyer
 
BDD - Writing better scenario
BDD - Writing better scenarioBDD - Writing better scenario
BDD - Writing better scenarioArnauld Loyer
 
Nos premiers pas autour du Behavior Driven Development
Nos premiers pas autour du Behavior Driven DevelopmentNos premiers pas autour du Behavior Driven Development
Nos premiers pas autour du Behavior Driven DevelopmentArnauld Loyer
 
Behavior Driven Development // Brown Bag Lunch v1.0.0
Behavior Driven Development // Brown Bag Lunch  v1.0.0Behavior Driven Development // Brown Bag Lunch  v1.0.0
Behavior Driven Development // Brown Bag Lunch v1.0.0Arnauld Loyer
 
Dégraissons le mammouth ou Darwin a encore frappé - La théorie de l'évolution...
Dégraissons le mammouth ou Darwin a encore frappé - La théorie de l'évolution...Dégraissons le mammouth ou Darwin a encore frappé - La théorie de l'évolution...
Dégraissons le mammouth ou Darwin a encore frappé - La théorie de l'évolution...Arnauld Loyer
 
L'ABC du BDD (Behavior Driven Development)
L'ABC du BDD (Behavior Driven Development)L'ABC du BDD (Behavior Driven Development)
L'ABC du BDD (Behavior Driven Development)Arnauld Loyer
 
Confiance&bdd softshake2013
Confiance&bdd softshake2013Confiance&bdd softshake2013
Confiance&bdd softshake2013Arnauld Loyer
 

Mais de Arnauld Loyer (11)

Brown Bag Lunch - BDD an introduction - 2017 feb/mar
Brown Bag Lunch - BDD an introduction - 2017 feb/marBrown Bag Lunch - BDD an introduction - 2017 feb/mar
Brown Bag Lunch - BDD an introduction - 2017 feb/mar
 
Bdd training v5.2.0 - public
Bdd training   v5.2.0 - publicBdd training   v5.2.0 - public
Bdd training v5.2.0 - public
 
BDD training v5.0.1
BDD training  v5.0.1BDD training  v5.0.1
BDD training v5.0.1
 
BDD - Writing better scenario
BDD - Writing better scenarioBDD - Writing better scenario
BDD - Writing better scenario
 
Nos premiers pas autour du Behavior Driven Development
Nos premiers pas autour du Behavior Driven DevelopmentNos premiers pas autour du Behavior Driven Development
Nos premiers pas autour du Behavior Driven Development
 
Behavior Driven Development // Brown Bag Lunch v1.0.0
Behavior Driven Development // Brown Bag Lunch  v1.0.0Behavior Driven Development // Brown Bag Lunch  v1.0.0
Behavior Driven Development // Brown Bag Lunch v1.0.0
 
Dégraissons le mammouth ou Darwin a encore frappé - La théorie de l'évolution...
Dégraissons le mammouth ou Darwin a encore frappé - La théorie de l'évolution...Dégraissons le mammouth ou Darwin a encore frappé - La théorie de l'évolution...
Dégraissons le mammouth ou Darwin a encore frappé - La théorie de l'évolution...
 
L'ABC du BDD (Behavior Driven Development)
L'ABC du BDD (Behavior Driven Development)L'ABC du BDD (Behavior Driven Development)
L'ABC du BDD (Behavior Driven Development)
 
Confiance&bdd softshake2013
Confiance&bdd softshake2013Confiance&bdd softshake2013
Confiance&bdd softshake2013
 
Bdd training - v3
Bdd training - v3Bdd training - v3
Bdd training - v3
 
Bdd training-v1
Bdd training-v1Bdd training-v1
Bdd training-v1
 

Último

Announcing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareAnnouncing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareJim McKeeth
 
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024VictoriaMetrics
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnAmarnathKambale
 
%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in soweto%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in sowetomasabamasaba
 
8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech studentsHimanshiGarg82
 
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park masabamasaba
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park masabamasaba
 
Define the academic and professional writing..pdf
Define the academic and professional writing..pdfDefine the academic and professional writing..pdf
Define the academic and professional writing..pdfPearlKirahMaeRagusta1
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplatePresentation.STUDIO
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...Health
 
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...SelfMade bd
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsArshad QA
 
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...WSO2
 
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdfPayment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdfkalichargn70th171
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...panagenda
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is insideshinachiaurasa2
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension AidPhilip Schwarz
 
WSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With SimplicityWSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With SimplicityWSO2
 
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesVictorSzoltysek
 

Último (20)

Announcing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareAnnouncing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK Software
 
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
 
%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in soweto%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in soweto
 
8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students
 
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
 
Define the academic and professional writing..pdf
Define the academic and professional writing..pdfDefine the academic and professional writing..pdf
Define the academic and professional writing..pdf
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
 
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdfPayment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
 
WSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With SimplicityWSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
 
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
 

Event storming Notes

  • 1. « All models are wrong, but some are useful » George E.P. Box
  • 3. A domain event is anything that happens that is of interest to a domain expert. The domain expert is not interested in databases, web sockets, or design patterns, but in the business domain of the things that have to happen. Domain events capture those facts in a way that doesn't specify a particular implementation. http://techbeacon.com/introduction-event-storming-easy-way-achieve-domain-driven-design http://ziobrando.blogspot.fr/2013/11/introducing-event-storming.html If you start with data modeling, your thinking and conversations will quickly digress into schemas, transactions, and other things that have nothing to do with the business domain. If you start from behavioral modeling, you'll get distracted as you break down behaviors into tasks and link them into processes. Those are implementation concepts, not business-domain concepts. While there are myriad choices for representing data and implementing behaviors, there are no alternatives for domain events. Because domain events represent facts about the domain, these only change significantly when the underlying business changes. Domain events are thus a more stable and resilient scaffolding for your model. Domain Event Why should you start with domain event Explore the domain starting from Domain Events. Item Added Order Accepted past-tense sentence Invoice Sent Order Received "Something that has happened in the past that is of interest to the business"
  • 4. A domain event is anything that happens that is of interest to a domain expert. The domain expert is not interested in databases, web sockets, or design patterns, but in the business domain of the things that have to happen. Domain events capture those facts in a way that doesn't specify a particular implementation. Domain Event Explore the domain starting from Domain Events. Item Added Order Accepted past-tense sentence Invoice was Sent Order Received "Something that has happened in the past that is of interest to the business" UserLogged In UserLogged Out UserAdress Changed Invoice was generated I [Mathias Verraes] personally prefer sentence-style event names (“A product was added to a basket” vs “Product added to basket”). I believe this makes the business people feel more comfortable. Invoice was Paid Invoice was Contested http://techbeacon.com/introduction-event-storming-easy-way-achieve-domain-driven-design http://ziobrando.blogspot.fr/2013/11/introducing-event-storming.html http://verraes.net/2015/03/event-storming-storytelling-visualisations/
  • 5. The first few steps go something like this: • Write down a Domain Event on a sticky (preferably something that happens at the end, like “Bill was paid”). • Ask what happened before that (“Bill was sent”) and before that, until you get to the beginning. • Ask what caused the events to happen. Those are usually Commands (aka user intentions), other events, or simply the passage of time. • Ask for what reason a Command can fail, and find the rules that impact the outcome of the Commands. This pushes you to discover alternative scenarios, missing events, connections between distant events… The group starts with domain events, walking through the model forwards and backwards to ensure that everything is covered. An event might be the predecessor of the follower of another one. Place all of them onto your modeling surface (the convention is to use orange stickies for this purpose) according to a timeline. Domain Event timeline A domain event is anything that happens that is of interest to a domain expert. The domain expert is not interested in databases, web sockets, or design patterns, but in the business domain of the things that have to happen. Domain events capture those facts in a way that doesn't specify a particular implementation. Explore the domain starting from Domain Events. http://techbeacon.com/introduction-event-storming-easy-way-achieve-domain-driven-design http://ziobrando.blogspot.fr/2013/11/introducing-event-storming.html http://verraes.net/2015/03/event-storming-storytelling-visualisations/ Happy path & What can go wrong?
  • 6. Then the group adds the commands, or triggers, that cause the events, and considers all sources of commands, including users, external systems, and even time. Domain Event Command ? Explore the origin of Domain Events Domain Event Some events are the direct consequence of a user action —> represent it as a Command using a blue sticky note. Others are the consequence of something happening in external systems or of the time passing, we’ll use a purple sticky note for them. In some other cases, we’ll have events that will be the direct consequence of some other events. We’ll simply place the two events close together. http://techbeacon.com/introduction-event-storming-easy-way-achieve-domain-driven-design http://ziobrando.blogspot.fr/2013/11/introducing-event-storming.html What does trigger events? A command from a given user or an external system The Time (e.g. end of month, end of week, midnight…) Another event …
  • 7. Domain Event Command Trigger ? ? Explore the origin of Domain Events Domain Event Then the group adds the commands, or triggers, that cause the events, and considers all sources of commands, including users, external systems, and even time. Some events are the direct consequence of a user action —> represent it as a Command using a blue sticky note. Others are the consequence of something happening in external systems or of the time passing, we’ll use a purple sticky note for them. In some other cases, we’ll have events that will be the direct consequence of some other events. We’ll simply place the two events close together. http://techbeacon.com/introduction-event-storming-easy-way-achieve-domain-driven-design http://ziobrando.blogspot.fr/2013/11/introducing-event-storming.html What does trigger events? A command from a given user or an external system The Time (e.g. end of month, end of week, midnight…) Another event …
  • 8. Domain Event Command Trigger Source Of ? user time external system … ? ? Explore the origin of Domain Events Domain Event Then the group adds the commands, or triggers, that cause the events, and considers all sources of commands, including users, external systems, and even time. Some events are the direct consequence of a user action —> represent it as a Command using a blue sticky note. Others are the consequence of something happening in external systems or of the time passing, we’ll use a purple sticky note for them. In some other cases, we’ll have events that will be the direct consequence of some other events. We’ll simply place the two events close together. http://techbeacon.com/introduction-event-storming-easy-way-achieve-domain-driven-design http://ziobrando.blogspot.fr/2013/11/introducing-event-storming.html What does trigger events? A command from a given user or an external system The Time (e.g. end of month, end of week, midnight…) Another event … ! Trigger " # Trigger "
  • 9. Explore the origin of Domain Events Item Added Order Accepted Invoice Sent Order Received UserLogged In UserLogged Out UserAdress Changed UserLogin UserLogout Change Address AddItem Validate Order
  • 10. Domain Event Command ? Aggregate Look for Aggregates Domain Event The group identifies aggregates that accept commands and accomplish events, and begins to group aggregates together into bounded contexts. Along the way, key test scenarios, users, and goals are identified and incorporated into the model. Instead of defining aggregates starting from the code, we’re taking an outside-in approach: the Aggregate is the portion of the system that receives commands and decides whether to execute them or not, thus producing a domain event. http://techbeacon.com/introduction-event-storming-easy-way-achieve-domain-driven-design http://ziobrando.blogspot.fr/2013/11/introducing-event-storming.html Explore Aggregates Outside-In An aggregate can accept or reject commands… … and mostly needs only the data needed for this purpose
  • 11. Order Cart User http://techbeacon.com/introduction-event-storming-easy-way-achieve-domain-driven-design http://ziobrando.blogspot.fr/2013/11/introducing-event-storming.html Explore the origin of Domain Events Item Added Order Accepted Invoice Sent Order Received UserLogged In UserLogged Out UserAdress Changed UserLogin UserLogout Change Address AddItem Validate Order
  • 12. Domain Event Command Aggregate The group identifies aggregates that accept commands and accomplish events, and begins to group aggregates together into bounded contexts. Along the way, key test scenarios, users, and goals are identified and incorporated into the model. Finally, the relationships between bounded contexts are added to create a context map. Group Aggregates into bounded context http://techbeacon.com/introduction-event-storming-easy-way-achieve-domain-driven-design http://ziobrando.blogspot.fr/2013/11/introducing-event-storming.html Domain Event Command Domain Event Command Aggregate Command Domain Event Domain Event Command Aggregate
  • 13. Order Cart User Explore the origin of Domain Events Item Added Order Accepted Invoice Sent Order Received UserLogged In UserLogged Out UserAdress Changed UserLogin UserLogout Change Address AddItem Validate Order
  • 14. Bonus Targets http://techbeacon.com/introduction-event-storming-easy-way-achieve-domain-driven-design http://ziobrando.blogspot.fr/2013/11/introducing-event-storming.html persona Carnet d’entretien Réparation Vendeur de « Carcasse » … Exploring Subdomains Exploring Bounded Contexts Sketching User Persona Sketching Key Acceptance Tests Sketching Key Read Model Artefacts Critical or ambiguous use cases might require a precise completion criteria When discussions arise around meaning and semantics, multiple models are probably involved Different stakeholders will have different areas of expertise Sometimes who is performing the action is more important than other details
  • 15.
  • 16.
  • 17. Facilitating • Hang the first sticky yourself (a tip from Alberto, works really well) • Know when to step back. Don’t do the modeling, guide the modeling • Ask questions: • Is there something missing here? Why is there a gap? • How does this make money? • How does the business evaluate that this is working? What are the targets, how will we know we’ve reached them? • For whom is this event of importance (end user, business, tenant,…) ? • I can’t see this particular role, or type of user, in this model. Should they be on here somewhere? • Change the direction, e.g. start at the end of the flow, move back in time, then later start at the beginning and move forward. • Interrupt long discussions. Visualise both opinions, and, very important: ask both parties if they feel their opinion is accurately represented. • Timebox, using pomodoro’s (25 minutes). After each pomodoro, ask what is going well and what isn’t. It’s a good opportunity to move to the next phase (e.g. from adding events to adding causality, to drawing aggregate boundaries). You may want to move on even if you don’t feel the model is complete. • Constantly move stickies to create room for hotspots. • Hang red stickies with exclamation marks, question marks, or other notes, anywhere you feel there’s an issue. • At the end, make a photo. Then tell them to throw the model away, and to do it over the next day. If possible in the presence of other stakeholders. • I personally prefer sentence-style event names (“A product was added to a basket” vs “Product added to basket”). I believe this makes the business people feel more comfortable. http://verraes.net/2013/08/facilitating-event-storming/
  • 18. References Steven A. Lowe - An introduction to event storming: The easy way to achieve domain-driven design (Oct. 2015) http://techbeacon.com/introduction-event-storming-easy-way-achieve-domain-driven-design Alberto Brandolini - Introducing Event Storming (Nov. 2013) http://ziobrando.blogspot.fr/2013/11/introducing-event-storming.html https://lh3.googleusercontent.com/-2x4VNk-s32g/UouhUvPHbWI/AAAAAAAAAi8/oicOlEmD7i4/w1405-h1123-no/Event+Storming +Cards+-+all.jpg Alberto Brandolini - Event Storming Recipes (Jun. 2014) http://fr.slideshare.net/ziobrando/event-storming-recipes Thomas Pierrain - Event storming: Domain distillation under steroids (Aug. 2015) http://tpierrain.blogspot.fr/2015/08/event-storming-domain-distillation.html Thomas Pierrain - Event Storming: my rookie mistakes (Aug. 2015) http://tpierrain.blogspot.fr/2015/08/event-storming-my-rookie-mistakes.html Emilien Pecoul (Ouarzy) - Event Storming (Sep. 2015) http://ouarzy.azurewebsites.net/2015/09/23/event-storming-another-way-to-design-an-event-driven-architecture/ Mathias Verraes - Facilitating Event Storming (Aug. 2013) http://verraes.net/2013/08/facilitating-event-storming/ Mathias Verraes - Event Storming, Storytelling, Visualisations (Mar. 2015) http://verraes.net/2015/03/event-storming-storytelling-visualisations/