Domain Modeling

by example

FModel - Kotlin   |   FModel - TypeScript   |   FModel - Java   |   FModel - Rust

Domain modeling is the process of creating a model or representation of a specific domain or subject area. This model is typically used to represent the key concepts and relationships within the domain, and to facilitate communication and understanding among stakeholders.

One of the key benefits of domain modeling is that it helps to clarify and refine the understanding of a domain. By creating a model, stakeholders are able to identify any gaps or ambiguities in their understanding of the domain, and work to resolve them. This can be especially useful in complex domains where there may be many different stakeholders with different perspectives and priorities.

Another benefit of domain modeling is that it can help to identify opportunities for optimization or improvement within the domain. By understanding the relationships and dependencies between different concepts, stakeholders can identify areas where changes or improvements may have a significant impact.

There are a few key considerations to keep in mind when creating a domain model. First, it's important to ensure that the model accurately reflects the domain and the relationships between the concepts within it. This may require research and consultation with domain experts.

Second, it's important to ensure that the model is intuitive and easy to understand for stakeholders. This may require the use of clear and concise language, as well as the use of visual elements such as diagrams to aid comprehension.

Finally, it's important to ensure that the model is flexible and able to adapt to change. As the understanding of the domain evolves over time, the model should be updated to reflect this.

In summary, domain modeling is a powerful tool for clarifying and refining our understanding of a subject area, and for identifying opportunities for optimization and improvement. By carefully considering the needs of stakeholders and the nature of the domain, it is possible to create effective and useful models that can facilitate communication and drive progress.

Event modeling

There are numerous techniques to discover a domain. Event Storming is a particularly interesting one. It is a workshop format for quickly exploring business domains, engaging both Domain Experts and Software Developers.

Event modeling adopts Event Storming sticky notes. The final piece was the UI/UX aspects to complete what more resembles a movie story board (white board - or digital white board). While Event Storming focuses in discovering the problem space, Event Modeling creates a blueprint for a solution.


It is a scenario-based and UX-driven approach to defining requirements, and there is nothing abstract or general in this discovery process.

It is a specification by example.

The Template

On a higher level of abstraction, any information system is responsible for handling the intent (Command) and, based on the current State, produce new facts/decisions (Events). The system’s new State is then evolved out of these Events. You repeat these steps.

the template

The ‘FModel library’ is offering implementation of this template in a very general way. The template is parametrized with C, E, and S parameters. The responsibility of the business is to specialize in their case by specifying concrete Commands, Events, and State. For example, Commands=CreateOrder, AddItemToOrder; Events=OrderCreated, ItemAdded, State=Order(with list of Items).

The output of the event modeling process (a blueprint) can be simply translated into a software components/model by using FModel libraries as a template.

It started as inspiration and evolved in the software library we share with you for your benefit. The idea is straightforward, and it can be implemented in almost any modern programming language which possesses a type system:

The goal is to use productivity-oriented programming language features to accelerate development of compositional, safe and ergonomic applications.

Accelerate Development

#functional #safe #ergonomic #compositional #applications










Let's Get In Touch!

Ready to start your next project with us? That's great!

© 2023 | All Rights Reserved