Lean and functional domain modelling

Workshop abstract

Rich domain models, inspired by imperative objective-oriented approaches, dominate our industry. But lean domain models are a compelling alternative. By separating behaviour and state, lean models offer an effective way to represent units of behaviour.

This session will explore how to represent a lean domain model using a functional programming paradigm. You'll explore how types can be used as a natural way to represent business constraints alongside smart constructors and functional validation. You will also learn how type properties can be modelled with property based testing, how behaviour can be better composed, how to keep domain behaviour isolated from application state, and much more.

Workshop level


Workshop takeaways

  • Functional programming basics
  • Elements of lean functional domain modelling
  • Introduction to property based testing
  • How to compose behaviour functionally to support domain and application services
  • Functional design patterns

Workshop slides

Marcello Duarte

Marcello Duarte


Marcello is the co-creator of PhpSpec and Inviqa's Head of Training. As an Agile coach, Marcello has coached many teams in many organisations into Agile processes and development practices like Scrum, TDD, Refactoring, Collaborative Product Ownership, and Software Quality. In 2014, he was officially recognised as the Best Agile Coach/Mentor (Technical) at the UK Agile Awards.