top of page

What is Software Design Event Storming?

Event Storming is a collaborative technique used in software design to visualize and explore complex business processes and systems. It involves stakeholders from various domains to create a shared understanding of the system's behavior and requirements. Here are the key concepts of Event Storming:


1. Domain Events  


   - Definition: Events that signify something important that has happened within the domain. They are usually expressed in the past tense (e.g., "Order Placed").  


   - Purpose: Capture business events that trigger state changes in the system.


2. Commands  


   - Definition: Actions that a user or system can take that lead to a domain event (e.g., "Place Order").  


   - Purpose: Represent intentions that result in changes to the state of the system.


3. Aggregates  


   - Definition: A cluster of domain objects that can be treated as a single unit (e.g., an Order and its Line Items).  


   - Purpose: Manage and encapsulate the state and behavior related to a specific business concept.


4. Read Models  


   - Definition: Projections or representations of data that are optimized for reading, allowing users to retrieve information easily. 

 

   - Purpose: Support queries and reporting, typically using a different structure than the domain model.


5. Bounded Contexts  


   - Definition: The explicit boundary within which a particular model is defined and applicable. Different bounded contexts may have different models for the same concept.  


   - Purpose: Help manage complexity by organizing different areas of the system that can evolve independently.


6. Policy  


   - Definition: Rules or business logic that govern how commands and events interact, such as workflows or validations.  


   - Purpose: Enforce business rules and ensure the system behaves as expected.


7. Actors  


   - Definition: Users or systems that interact with the domain, initiating commands and responding to events.  


   - Purpose: Identify who is involved in the processes being modeled.


8. Timeline  


   - Definition: A visual representation of events as they occur over time, helping to illustrate the sequence and causality of events. 

 

   - Purpose: Provide context and facilitate understanding of how events unfold.


Process of Event Storming  


1. Gather Stakeholders: Involve business experts, developers, and other stakeholders. 

 

2. Identify Domain Events: Start with domain events and write them on sticky notes.  


3. Add Commands: Identify the commands that lead to these events.  


4. Define Aggregates: Group related domain events into aggregates.  


5. Explore Read Models: Discuss how information will be read and structured.  


6. Identify Policies and Actors: Determine the business rules and who interacts with the system.  


7. Review and Iterate: Continuously refine the model through discussions.


Benefits  


- Shared Understanding: Creates a common vocabulary and understanding among all stakeholders.  


- Early Problem Detection: Helps identify inconsistencies and issues early in the design process.

  

- Enhanced Collaboration: Encourages teamwork and communication across different domains.


By utilizing Event Storming, teams can achieve a clearer picture of system requirements and design, leading to more effective and efficient software solutions.

bottom of page