Event Storming 101: Accelerating Your Software Development in Domain-Driven Design
Lucid Content
Reading time: about 7 min
Topics:
In the past, learning about your business systems meant mapping your processes through technical modeling approaches or using expensive trial and error to write the code as you go. As useful as those models are, their technical nature means many domain experts are left out of the conversation.
Enter event storming.
Event storming drives greater understanding and productivity by simplifying the approach and including multiple levels of stakeholders in the business. With the help of sticky notes and a willing group, you can reveal your business processes more efficiently and enjoyably.
Learn how to run your own event storming workshop with the help of Lucidchart.
What is event storming?
Event storming is a rapid group modeling approach to domain-driven design. Originally created by Alberto Brandolini in 2012 as a quick alternative to precise UML diagramming, event storming is a workshop-style technique that brings project stakeholders together (both developers and non-technical users) to explore complex business domains.
Keep in mind, event storming is not a substitute for a UML diagram, design document, deployment plan, or other implementation models. Rather it is intended to support and accelerate the development process by bringing together relevant stakeholders to quickly model the broader business domain and its processes.
Advantages of event storming
Event storming is designed to be both efficient and fun. By bringing key practitioners into the same room (literally or virtually), event storming has the advantage of being:
-
Fast: The event storming approach reduces the time it takes to create a comprehensive business domain model. What used to take weeks can be accomplished in hours during a single workshop.
-
Straightforward: Rather than using complex UML, event storming breaks the process down into simple terms that both technical and non-technical stakeholders can understand.
-
Engaging: One of the goals of event storming is to make modeling fun. It is a hands-on approach to domain modeling that invites each person to participate and interact. Besides being more enjoyable, event storming also results in more valuable insights as participants more readily engage in the process and offer their suggestions and expertise.
-
Effective: Event storming is not data modeling. Instead, it results in a fully behavioral model that can be quickly implemented and validated. For the best outcomes, teams should combine event storming with implementation oriented toward domain-driven design.
Perhaps the greatest value of event storming is in the conversations it generates. You can use the knowledge gained in the workshop to inform your future modeling processes and build software from them, or you can simply use event storming to better understand your business processes and make better decisions going forward.
Steps of event storming
Event storming has evolved over time, and there are various iterations and approaches you could take. The following steps make up the original basic outline of an event storming workshop. However, you can easily adapt the process to your own needs and goals.
1. Invite the right people
Unlike traditional modeling processes that often rely on a small group or an individual developer to map out data, behavior, and objects, event storming depends on a larger group (at least six to eight people) to workshop the domain model together.
For event storming to be successful, you need the right people to participate.
Who are the right people?
According to Brandolini, they are the people who know the right questions to ask and the ones who have the answers. This group will likely be a mixture of stakeholders representing user experience, business, architecture, development, and IT.
2. Provide unlimited modeling space
The beauty of the workshop approach is its simplicity. The goal is to get on paper (usually color-coded sticky notes) each significant event and process in one big map. To do this, you will need a large modeling space that allows your team to continue building on the process as questions and ideas arise without being limited in scope by the physical workspace.
Traditionally, this approach has been applied with sticky notes on a wall. However, programs like Lucidchart eliminate the concern for adequate space (and the need to have stakeholders all in the same room) by taking the process virtual. Lucidchart has an unlimited canvas workspace that allows real-time collaboration from multiple team members, even those who work remotely or in separate locations.
By focusing on the task at hand, stakeholders can work out the processes in an agile way without getting bogged down in complicated language and complex mapping structures.
3. Explore the business domain
Now for the meat-and-potatoes part of the workshop. Together the group explores the business domain to unveil a comprehensive process. There are three main components of the event storming model: domain events, commands, and aggregates.
Identify domain events
The first step is to begin identifying events. Events are “things that happen” in a process or system. Important events trigger reactions, so understanding the causal event can help you understand how the system operates and why. Keep in mind that events are always noted in the past tense.
To mark an event on your timeline, use an orange sticky note (or whatever color code you’ve agreed on). In Lucidchart, you can apply the same traditional color coding and shapes to customize the process flow.
As your team adds events to the canvas, start organizing them in sequential order over time.
Connect domain events to commands
With your events outlined, you can begin to evaluate each event for its causes and consequences. In other words, ask yourself what triggered this event (e.g., users, other events, or external systems).
The trigger or cause of the event is noted as a command. Commands are traditionally documented on blue sticky notes in the present tense and often represent user interactions with the system (e.g., “Submit a purchase order”). However, your team may want to document commands as both user and system actions.
Connect events to reactions
The other side of the event process is what happens as a result of the event. These are called reactions.
Reactions are the necessary actions or results following an event and are noted in the present tense. For example, an event-reaction process flow might state, “When a new account is created, we will send a confirmation email.”
Together, commands, reactions, and events will successfully map out the complete cause-and-effect processes of the system.
4. Combine with domain-driven design
For high-level event storming, the process can end once your team has added domain events, commands, and reactions. However, event storming can be combined with the technique of domain-driven design to define the structure of your system and send your team on the way to implementation.
To put it simply, you can start grouping together modules with an element called bounded contexts. Draw a box or circle around the related modules—or in Lucidchart, you can use containers—and label them.
Then you can use arrows to begin context mapping—in other words, to show how the modules within a bounded context interact with other contexts. For example, you might have grouped together commands, reactions, and events that deal with payment. The payment context is linked to the shipping context, because once a payment is processed, the system needs to fire a command to ship the product that has been ordered.
How to use Lucidchart to nail your event storming workshop
Traditionally, event storming has been a physical diagramming process with paper, pen, and ample wall space. While this method can work well for fully local teams, it can leave out remote team members. Additionally, the process of documenting all that knowledge is tedious. With a huge whiteboard of sticky notes, someone has the thankless task of going through each piece of paper and making sure it is recorded.
Lucidchart simplifies the event storming process and makes it easy to document and share knowledge between individuals, teams, and departments.
Lucidchart saves time and improves outcomes by providing:
- Unlimited canvas space
- Real-time collaboration
- Remote accessibility
- Customizable shapes, lines, colors, etc.
- Data linking options
Use Lucidchart to document your event storming workshops and processes with ease. Real-time collaboration and instant updates ensure everyone stays on the same page and has a chance to contribute—no matter where they are.
Plus, once you’ve completed your domain process model, other stakeholders like developers and designers can easily access the diagram later to reference during the implementation phase so no information is lost.
Get started in Lucidchart.
About Lucidchart
Lucidchart, a cloud-based intelligent diagramming application, is a core component of Lucid Software's Visual Collaboration Suite. This intuitive, cloud-based solution empowers teams to collaborate in real-time to build flowcharts, mockups, UML diagrams, customer journey maps, and more. Lucidchart propels teams forward to build the future faster. Lucid is proud to serve top businesses around the world, including customers such as Google, GE, and NBC Universal, and 99% of the Fortune 500. Lucid partners with industry leaders, including Google, Atlassian, and Microsoft. Since its founding, Lucid has received numerous awards for its products, business, and workplace culture. For more information, visit lucidchart.com.