Business Domain Modeling

A good model is a foundation that can accommodate change in the direction and perspective of business experts.

ZenWave 360º Business Domain Modeling is sustained in three pillars:

  • Understand the Mental Model of the Business Experts.
  • Use ZDL Model Language to create and Ubiquitous Language that reflects the mental model of the Business Experts.
  • Use ZenWave SDK to convert the ZDL Model into different Software Artifacts.

Understand the mental model of the business experts

This approach emphasizes the importance of understanding the business domain in order to create effective software.

The first step is to understand the mental model of the business experts because all requirements and assumptions will come from this mental model. Embedding the perspective of domain experts into your model is by far the most important aspect to create good maintainable software.

If we don't get right the mental model of business experts, no amount of Clean Code, Clean Architecture, Hexagonal Architecture, etc... will help in creating good and maintainable software.

Event-Storming is the method we employ to grasp the mental model of business experts. Because it's technological low entry barrier, and because is a perfect fit for modeling Event-Driven Architectures.

Create and Ubiquitous Language to reflect the mental model of the Business Experts

It is not the domain experts’ knowledge that goes to production, it is the assumption of the developers. - Alberto Brandolini

The goal of Ubiquitous Language is to create a common language that reduces misunderstandings and improves communication between technical and non-technical team members.

  • Shared and Common: The language is shared by all team members, including developers, domain experts, and stakeholders. It's used in all forms of communication, from meetings and emails to code and documentation.
  • Model-Based: The language is based on the domain model. It reflects the structures and relationships in the model.
  • Explicit: The language is explicit, meaning that each term has a specific and clear definition. This reduces ambiguity and misunderstanding.
  • Used in Code: The language is used in the codebase. Class names, method names, variable names, etc., should all be based on the Ubiquitous Language.

ZenWave ZDL Modeling Language is a Domain Specific Language that allows you to create a Conceptual Model that reflects the mental model of the business experts following DDD and Event-Driven Architecture principles.

It can map the discoveries of an Event-Storming session, retaining the language of business experts. It's designed to be developer friendly, and because it can be converted into different software artifacts, it will propagate that Common Language to code, tests, api definitions...

-> As a technical expert you can use this ZDL Modeling Language to communicate within your team, and narrate the story expressed by the model back to domain experts in their own language.

Convert the Ubiquitous Language into different Software Artifacts with ZenWave SDK

The best way to validate a conceptual model is to implement it.

Working software is the best way to evaluate the validity of a conceptual model. It allows for early feedback from all members of the development team, including developers, testers, and others, which can be crucial for the iterative refinement of the model.

ZenWave SDK is a set of tools that allows you to convert the Ubiquitous Language into different software artifacts, like:

  • API Definitions: AsyncAPI v2/v3, OpenAPI...
  • Drawings and Documentation: PlantUML, Mermaid, Markdown...
  • Multiple Backend Implementations for Spring-Boot, Spring-Cloud, JPA, MongoDB...
  • API-First Code for AsyncAPI and OpenAPI
  • API-Testing...

Automatically propagating the Ubiquitous Language across code and providing the building blocks to put together a working implementation of your domain in no time.

Practical Event Storming with AsyncAPI v3 and ZenWave SDK