Collaborative Software and Business Design with Event Modeling

Rafael A. George Duval
4 min readApr 24, 2023

Storytelling enables humans to pass knowledge on to the next generations and relies on how we store memories. We can show, by example, what a system is supposed to do from start to finish, on a timeline, and with no branching. To do this, we need to draw a line with a specific timeline representing the different changes in the state across time. Why time? Time is an essential aspect of systems because every application is a distributed system in the scene. Now everything needs to work across continents. So, time is quite a necessary aspect of development.

A model that works supports the stakeholders and also the delivery team. Since event modeling describes a system’s behavior representing the model in this way is ideal. Having different models to explain the same idea creates a lot of ambiguity. Making a model that works for the whole team implies removing all ambiguity for the abstract model. The Event modeled system decouples the Business infrastructure. The event model represents the user’s intention independent of the technology used in the background.

Businesses working off event-modeled solutions enjoy the manipulation of historical data. The idea is to store the essential pieces of business information. Such data enables the ability to infer the system state at any given time.

Event Modeling describes systems using an example of how information changes across time. All the events in a timeline describe the system’s behavior. These are the events on the timeline that form the description of the system.

Suppose you concentrate on the state and have a place for each piece and where it will go. In that case, you reduce that rework to the point where you can follow the open-close principle almost to the letter. It’s a more collaborative approach and more dedicated. It’s like a small design instead of an extensive one up front, so we can do everything that UML was trying to do without all the complexity and details. We must consider which algorithms will use and how the code will behave. The green field project, the first two weeks first two months are lovely. We’re looking at what is the state of the system. We don’t care what happens when we press that button. We know that we intend to register and only store the fact that we’re registered. Whether this is running in Ruby, Typescript, or whatever programming language is immaterial. What matters is that if we shut the power off after that happened, the truth is stored in the system.

Events happen in a system — whether we store them or not, that’s a choice. Using Event Modeling, the team can focus on the core functionality, making the system more efficient and cost-effective.

Event Modeling is the idea that we make it small by focusing on the essential parts of the design only. What happens when we update information? It is deleted. Pieces of history that may be crucial in helping us troubleshoot problems are lost. The event model exposes where we have these losses. Trying to refactor a code base was done with a focus on the structure of the logic. This limited the audience to only developers. The scope of the changes can now be shown by ensuring that areas of code we want to address will not affect the state in places we don’t expect. This audit allows us to define the scope of what our refactoring will affect. Suppose we get enough example workflow data from our event model in a traditional system. In that case, we are better positioned to succeed when re-implement from the beginning. Even though we don’t store events, they are still the most effective way to describe what a system should do.

Open-Closed Systems are beneficial because they reduce rework. New features are added rather than re-think everything is done and then trying to integrate the new. Aim to keep from adding any code or logic to the event model. If we follow the evidence of how information changes over time in the system, we speak to a much larger audience.

Event Modeling enables a dedicated collaborative approach to software design. Event modeling describes the system based on the system’s transition within time. Think of event modeling as a storyboard. The team is making a movie about the procedure. The sequence of scenes is a walk-through of what the design looks like. Event Modeling enables collaboration by making everybody responsible for the whole system. Domain events represent a sequence of outcomes in a timeline. Domain events represent facts that establish the current state of the entire business process. Event modeling progresses alongside business evolution, making the solution more effective.

[¹]: Domain-Driven Design: Tackling Complexity in the Heart of Software

[²]: Event Modeling

--

--

Rafael A. George Duval

✍🏼 Indie writer, chief editor of https://snippetsoftext.substack.com/ | 💻 Software Engineer | 📊 Tech Leadership