DDD Europe 2022 - Program

Domain modelling with state machines


Marco Perone

Marco Perone

(This is a hands-on lab with limited capacity)

State machines are a software abstraction to model stateful systems, which come with several practical benefits: they are conceptually simple but still they can be formally defined; they can easily be composed in several ways to build complex machines starting from simple ones; they lend themselves naturally to be described graphically.

Moreover, they fit nicely to represent components of a DDD/ES/CQRS architecture, as aggregates, projections and policies, providing us a nice tool to precisely describe our domain behaviour.

In this hands-on session we will write extremely simple Haskell to model a system's aggregates, projections and policies as state machines and we will compose them to obtain a working model for our domain.

Hands-on prerequisites

Please check the syntax so you're able to understand the code: https://github.com/marcosh/ddd-machines-dddeurope/blob/main/theHaskellYouShouldKnow.md

About Marco Perone

categorical developer at TweagTwitterLinkedInBlogCompany Website

I am a software developer, grew up as a mathematician. I love to bring in my code the same formalism and precision you can find in math. I am particularly interested in functional programming, its links with domain modelling, and how to introduce and apply its ideas in non-functional languages.