What is a System?
Event Storming is a collaborative modeling technique primarily used in software development to visualize complex domains, understand business processes, and gather requirements. Here’s an overview of the main concepts related to 'System' within Event Storming:
1. Events
- Definition: Events are significant occurrences within the system that change its state. They represent things that have happened in the past.
- Characteristics: Events are usually written in the past tense (e.g., "Order Placed," "Payment Processed").
- Purpose: They help to identify important business processes and understand how the system behaves over time.
2. Commands
- Definition: Commands are instructions that trigger events. They represent the intentions of the users or other systems.
- Characteristics: Commands are often written in the imperative form (e.g., "Place Order," "Initiate Payment").
- Purpose: They describe what actions can be taken within the system and help to clarify user interactions.
3. Aggregates
- Definition: Aggregates are clusters of domain objects that can be treated as a single unit. They typically correspond to a key entity in the domain model.
- Characteristics: Each aggregate has a root entity that ensures the integrity of its associated entities.
- Purpose: Aggregates help to manage complex interactions and enforce business rules.
4. Read Models
- Definition: Read models are representations of the data in the system that are optimized for querying and reporting.
- Characteristics: They can be structured differently from the write models and may include denormalized data for efficiency.
- Purpose: Read models support the system's query needs and improve performance for data retrieval.
5. Policies
- Definition: Policies define the rules or conditions that govern the transitions between states or the triggering of commands and events.
- Characteristics: They may include business rules and validation criteria.
- Purpose: Policies help to ensure that the system behaves consistently according to business requirements.
6. Bounded Contexts
- Definition: Bounded contexts define the boundaries within which a particular model is defined and applicable.
- Characteristics: Each bounded context can have its own terminology, models, and rules.
- Purpose: They help to manage complexity by isolating different parts of the system, facilitating clearer communication among teams.
7. System
- Definition: In Event Storming, the "System" represents the entire domain being modeled, encompassing all the events, commands, and aggregates.
- Characteristics: It provides the overall context for understanding how different components interact and evolve.
- Purpose: The System serves as a focal point for discussion and helps teams align on the vision and functionality of the software being developed.
8. External Systems
- Definition: These are systems outside of the modeled system that interact with it, often through events or commands.
- Purpose: Understanding interactions with external systems is crucial for defining the complete behavior of the system.
Conclusion
Event Storming is a powerful technique for understanding and designing complex systems by focusing on events, commands, and interactions within the domain. By visualizing these elements, teams can collaborate effectively to uncover requirements, identify bottlenecks, and create a shared understanding of the system's behavior.