Production-ready Domain-Driven Design
With the Model Exploration Whirlpool
How to explore models collaboratively? How to move from collaboration tools like EventStorming and Example mapping, to designing models and implementing them, especially in an Agile or Lean setting?
The essence of Domain-Driven Design is designing shared models between all disciplines involved in creating software. We should spend most of our effort on the part of the software that handles complex business requirements. We need to focus on a language where we really crisply concisely describe the situation in the domain, a shared language created through conversations between all disciplines involved.
Eric Evans wrote about the Model Exploration Whirlpool. It describes a process for exploring models. In this workshop, you will learn to use this process to go from exploring the problem space, to probing a model in code, to deploying production-ready software.
During the first part, we’ll explore scenarios and models for a business domain with EventStorming, Example Mapping, Bounded Context Canvas, and Responsibility Driven-Design. In the second part, we will further explore the model and start our code probing with our newly designed bounded context. In several labs, we will go from outside-in Object-Oriented TDD and bug hunting, towards functional-style programming. We’ll finish by protecting our bounded context with the Ports & Adapters architecture. You will leave this session with hands-on experience to start your exploration into creating a production-ready Domain-Driven Design!
- How to model and design bounded contexts with the Model Exploration Whirlpool and create production-ready software
- Collaboratively design with visual collaboration tools like EventStorming, Example Mapping and the Bounded Context Canvas.
- Learn how to use and implement the basic tactical DDD patterns like Entity, Value Object, Aggregate, Service and Repository.
- How to work towards a functional mindset in an object-oriented language.
- Protect your bounded context by splitting technical complexity from model complexity with the ports and adapters architecture.
Is this workshop right for me?
- You are a Software Developer or a Software Architect
- You know how to do object-oriented in Java or C#
Module 1 (Scenario):
- Domain-Driven Design a brief tour
- Event Storming - essential workshop
- Example Mapping - essential workshop
Module 2 (Model):
- Bounded Context Canvas
- Responsibility Driven-Design and Model-driven design building blocks
Module 3 (Code probe):
- Coding Lab 1: Implementing a bounded context using Outside-in TDD
- Coding Lab 2: Domain-Driven design Refactoring towards a functional mindset
Module 4 (Production Ready):
- Recap on Coding Lab 2: Domain-Driven design Refactoring towards a functional mindset
- Coding Lab 3: Protecting your domain model with ports and adapters aka Hexagonal architecture
- Ask us anything on how to move on from here!