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.