Glossary
Software Design Event Storming

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.