When developing software, we sometimes tend to play down problems to create simple solutions. In practice, things over time turn out not to be as simple as assumed. The domain is usually way more complicated than anticipated. Security constraints tend to impact on the design, etc.
Domain-driven design (DDD) is an approach to software development for complex needs by connecting the architecture and implementation to an evolving model of the problem domain. It can be applied as an agile approach to software development whilst recognising complexity.
Working from your domain using DDD patterns and practices will guide your architecture and component decisions. This will help you develop higher quality software products that will be better maintainable in the long run.
Goal
Get an overview of Domain Driven Design and learn the basic concepts and modelling patterns and practices like subdomains, bounded contexts, aggregates, context mapping, and event storming.
After this workshop, you will be able to:
- explain what DDD is and what it is not;
- use event storming to facilitate a domain modelling session;
- explain patterns like subdomains, bounded contexts and aggregates and what they are intended for;
- create a context map based on the outcome of an event storming session;
- evaluate context boundaries using heuristics.
Means
We introduce Domain Driven Design as an approach to modelling and application architecture. We will guide you through the different techniques and patterns with lively, hands-on collaborative modelling exercises.
This workshop focuses on the domain modelling aspect of DDD. Implementation and coding aspects are covered by the Implementing Domain Driven Design workshop.
Outline
- presentation: Domain Driven Design - what & why
- create a domain model collaboratively using event storming
- find subdomains
- identify bounded contexts & create a context map
- do systems design with event storming: commands, policies, read models
- find aggregates using heuristics
Audience & prerequisites
Software developers, testers, analysts, architects, product owners, agile coaches; this workshop is suitable both for more junior participants who want to grow and for more senior participants who’d like to sharpen their modelling skills.
Having at least a year of experience in a software development environment is recommended.
Practical information
- Duration: 1 or 2 days
- No laptops required