Mathias Verraes is the founder of Aardling, a software modelling & design consultancy, with a penchant for complex environments. His focus is on design strategy and messaging-centric domain modelling. Since leaving a lead developer job in 2011 and moving to consulting in 2011, Mathias has worked with clients in Finance, Government, Supply Chain, Mobility, Energy, E-Commerce, and more.
Mathias writes about software design at verraes.net since 2011. As a speaker, he's been at major conferences such as NDC and Goto, and has been a keynote speaker DDD eXchange, ExploreDDD, KanDDDinsky, and others. Occasionally, he teaches courses on Domain-Driven Design & messaging architecture. Mathias is also the founder of the DDD Europe conference.
Mathias has a Masters in Music from the Royal Conservatory of Ghent, and is an autodidact on software. When he’s at home in Kortrijk, Belgium, he helps his two sons build crazy Lego contraptions.
NewCrafts Paris 2023
Bounded Contexts: Manage the Understandability of Your Systems
From Parnas' paper in the 1970's to microservices in the 2010's, we've always used modularisation as a way to manage complexity in software. And yet, we still end up with big balls of mud. Perhaps technical separation isn’t cutting it. We’ve also tried separating into business domains, but that’s not enough either: software wants to be deeply interconnected, spanning different domains, and doesn’t respect those boundaries.
Bounded Contexts provide an alternative. We can separate semantically, looking at the domain models that underlie our systems, the language being used, and the meanings of terms. We can draw “understandability boundaries”: separations that look at how concepts in our system are understood together (or can be understood autonomously). If we organise the teams along the same lines, they need to understand fewer concepts to be productive, they lower cognitive load, and need less coordination with other teams.
Doing this kind of work is not free. But in the 20 years since the concept was introduced in Domain-Driven Design, we’ve developed patterns and heuristics to guide us.