Domain modelling with state machines
(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
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.