Deep Dive into Model-Driven Design

Deep Dive into Model-Driven Design

Refining Domain Models in Code


Have you implemented a software model but find yourself uncertain about how to refine it with new business constraints effectively? Are you grappling with an initial domain model that, amidst changing business landscapes, seems more like an impediment than a help? Do you notice a growing disconnect between your code and the intricate complexities of your domain, as well as the core domain concepts?

Embark on a journey with ‘Deep Dive into Model-Driven Design: Refining Domain Models in Code,’ an intensive workshop that immerses Java and C# developers in the transformative process of Eric Evans’s modeling whirlpool.
This workshop is not just an exploration but a deep dive into Part III of Evans’s groundbreaking work on Domain-Driven Design (DDD), specifically designed for those looking to advance beyond basic concepts like aggregates, entities, and value objects.

Target Audience

The workshop’s language will be either Java or C#, and it’s aimed at Software Developers & Engineers with at least five years of experience.

  • Tech Leads
  • Software or Solution Architects
  • Engineering Managers
  • Staff engineers.


  • Supple Design – Creating a flexible, cohesive, and easily maintainable domain model in code
  • Deep Modeling – Accurately reflect the complex realities and rules of the domain in code
  • Refactoring toward deeper insight – Continuously improving and evolving the domain model
  • Design by coding – Refining the domain model through the coding process rather than being extensively planned in advance.


Dive deep into the complexities of Model-Driven Design and discover practical strategies beyond simple solutions to refine your Domain Model in Code. This approach guides you in developing a resilient, supple design that not only captures the true intricacies of your domain but also catalyzes significant breakthroughs in product development.

Recognizing that many projects begin with simplistic models which later become limiting as complexity grows, this workshop starts with a Bounded Context derived from an EventStorming exercise.
Participants will engage in Example Mapping and CRC-cards sessions to formalize acceptance criteria, sketching a ‘naive’ domain model for our defined bounded context. This serves as a launchpad for practical, hands-on coding experiences, where acceptance criteria guide Test-Driven Development (TDD) exercises in both C# and Java.

Through iterative refinement with new, unexpected requirements, participants will demystify the concepts of supple design and deep modeling. The workshop reveals practical strategies for ‘designing by coding,’ ensuring that code remains in alignment with the changing domain model.
Attendees will not only learn to harness the full potential of Domain-Driven Design and Model-Driven Design but also develop the skills to become domain experts as developers, and be able to start unlocking critical breakthroughs in product development.


Module 1 – Software Design

  • How do we tackle software design today?
  • The true meaning of modeling, according to Eric Evans.
  • Collaboration in the Model exploration Whirlpool
  • Introduction to our problem through an EventStorming outcome
  • Refreshment of the Bounded Context pattern

Module 2 – Sketching and probing the early model

  • Lab 1 – Discovering acceptance criteria through Example Mapping
  • Lab 2 – Sketching our early model with CRC-Cards
  • Emerging tactical patterns of the model
  • Lab 3 – Code probe the naive model through Outside-in TDD

Module 3 – Supple design

  • How the code can become rigid by unexpected requirements
  • Lab 4 – Introducing new requirements we did not account for
  • Supple Design – Creating a flexible, cohesive, and easily maintainable domain model in code

Module 4 – Deep modeling

  • How the code can be left behind from the domain model
  • Lab 5 – Introducing more complex business rules in the code
  • Deep Modeling – Accurately reflect the complex realities and rules of the domain in code

Module 5 – Refactoring to deeper insights

  • Refactoring toward deeper insight – Continuously improving and evolving the domain model
  • When to collaborate with domain experts
  • Lab 6 – Prototype and Design by Coding through advanced deep modeling
  • Complexity – when do we need all this?

Learning Objectives – What are we gonna learn?

  • Refining Software Models: Understand how you can include Design by coding in
  • Refining a basic domain model to a complex, refined one that deeply resonates with the domain experts’ understanding.
  • Supple Design Principles: Learn the principles of supple design and how they contribute to a more flexible and adaptive model.
  • Deep Modeling: Accurately reflect the complex realities and rules of the domain in code
  • Refactoring to deeper insights: Delve into the transformative concepts of chapter 13 from Eric Evans’s blue book, gaining insights that can be directly applied to your projects.

Expect to get your hands dirty – How it works

The workshop will include a variety of activities, including coding (both solo, in pair or mob programming), discussions, group exercises and collaborative modeling using tools such as Miro.
The main focus is on coding, guided by Test-Driven Development in Java or C#. While you have the option to code individually, we strongly recommend pair programming or ensemble programming to enhance the learning experience.

We’ll kick off with a check-in, creating a space to get to know each other and our needs. Then, we’ll smoothly transition into an impromptu networking session, focusing on understanding how you currently design software and the challenges you face. This initial phase is crucial in setting the right expectations and providing a comprehensive introduction to modeling for our journey.
Next, we’ll introduce you to the “Model Exploration Whirlpool.” This framework will be central to the exercises during this workshop. You’ll find yourself deeply involved in multiple iterations of this whirlpool exercise, working alongside 2-3 peers in break-out rooms.
The majority of your time will be spent engaging with the domain, mainly through Design by Coding. You might occasionally step back to the Miro digital whiteboard for some insightful refactoring.
Our methodology is designed to keep theoretical and conceptual lectures brief, giving precedence to hands-on practice. We’re convinced that the real benefits of supple design and deep modeling are best understood through direct experience.
There will be plenty of opportunities for dialogue and debate, creating a dynamic environment for uncovering emerging practices. These conversations will be key in helping you identify the most suitable practices and patterns for your own professional endeavors.

Why should you buy a ticket?

Get to experience the true power of Domain-Driven Design and go beyond using the basic tactical patterns.
These emerging practices will guide you in continuously refactoring your code build for complex domains, ensuring it remains supple and deeply aligned with the evolving insights you gain from conversations with your domain experts.
This approach allows you to dedicate more cognitive resources to comprehending and addressing the core needs of your stakeholders and users, rather than spending excessive time on translating requirements into your code.
This shift in focus not only enhances your understanding but also paves the way for groundbreaking developments in the products you’re developing software for.

The workshop will keep its highly interactive and hands-on spirit despite being online.
This is why we require that all participants keep their webcam on for the whole workshop duration: this will enhance the quality of the communication and the workshop as a whole.
You won’t be sitting at your desk watching slides and videos, and you’ll be engaged in real-time activities for the majority of the time… as if we were in a real classroom!


Do I need to know something beforehand to join the workshop?
You should have at least five years of experience writing software using Java or C#. Additionally, it’s essential to have a background in working within a specific domain over some time. This includes experience with applying the bounded context pattern and implementing it through tactical patterns like aggregates, entities, value objects, and repositories, as well as maintaining these implementations.

What level of expertise is required to join the workshop?
Participants are expected to have a solid grasp of software design fundamentals, particularly those of Domain-Driven Design. This includes familiarity with key concepts like the bounded context pattern and basic patterns such as aggregates, entities, value objects, and repositories. Additionally, a foundational understanding of methodologies like EventStorming, example mapping, and Test-Driven Development will be beneficial.

Is there anything I must do before I buy a ticket for this online workshop?
If you have a computer/tablet, a stable connection (at least 20 Mbps in download and 10 Mbps in upload), earphones, a microphone, and a webcam, then you’re ready to join the workshop.
You’ll get detailed information on what tools we’ll be using and how to get ready a couple of weeks prior to the workshop.
Check out your connection’s speed.
The workshop will keep its highly interactive and hands-on spirit despite being online. This is why we require that all participants keep their webcam on for the whole duration of the workshop: this will enhance the quality of the communication and of the workshop as a whole.


This workshop will be confirmed upon reaching the minimum number of participants. We’ll send an official confirmation to all registered attendees 10-15 days weeks prior to the workshop dates.

LAST CHANCE! Are you interested in this course? Please purchase your ticket by Friday 25 October 2024, to help us confirm it as soon as possible.
If we do not reach the minimum number of participants required to activate it by this date, the course will not be confirmed and will be postponed… don’t wait until the last minute to buy your ticket!

The sooner we reach the minimum numbers necessary for its activation, the sooner we can confirm the course and guarantee its execution.
If the course is confirmed, you will see a green tick on this page that says “confirmed/guaranteed to run”, and you will be able to buy tickets even after this date.

About the workshop

Language: English.
Laptop: Yes, check out the FAQ section.
Maximum number of attendees: 16 participants.
Tools and Workstation: The workshop will take place online and in live streaming by using digital tools. You’ll get detailed information on how to join the online workshop, how to get ready for it and how it will work once the workshop will be confirmed.
It is highly recommended that each participant joins the workshop from their own workstation: not sharing one same laptop and/or room with other people will improve the remote experience.

Vuoi saperne di più sui nostri biglietti?


Under_Cover_LearnerSCONTO 20%

Se ti stai iscrivendo al corso a titolo personale e non hai la Partita IVA, c’è una tariffa speciale per te: uno sconto del 20% sul prezzo corrente del biglietto, che potrai ottenere inserendo il codice Under_Cover_Learner su Eventbrite qui sopra, dove trovi "Enter promo code" (prima di premere il tasto "checkout").

N.B.: Il codice non può essere utilizzato con nessun’altra offerta, ed è valido su tutti i tipi di biglietto.


Bruno Boucard

Agile coach, technical coach, speaker a livello internazionale

Kenny Baas-Schwegler

Consulente software, facilitatore, esperto DDD e speaker di livello internazionale

About us

Avanscoperta is a growing community of professionals learning together, exchanging experiences and ideas, exploring uncharted territories.

We carefully select the most relevant topics and the best trainers and thought leaders worldwide with an eye to the most engaging teaching techniques.
Are you ready to learn with us?

Ti interessa questo corso?

Se hai delle domande specifiche, o vuoi ricevere maggiori informazioni, scrivici. Saremo felici di risponderti!


    Vuoi ricevere una volta a settimana i nostri contenuti esclusivi su tecnologia, sviluppo software, business e design?


    Iscriviti alla newsletter!