Domain-Driven Design of Large Software Systems (DDD), WS26
This page is still in draft state. Please note that the content may be subject to change.
Domain-Driven Design of Large Software Systems (DDD) enables students to architect complex software systems from the ground up, using the DDD paradigm for designing loosely coupled software systems. The course focuses on the domain exploration, subdomain specification, and a prototypical implementation. Aspects of a technical architecture are not in focus in this course.
- Study Program and Module Description
-
Master Digital Sciences (specialization Software Architecture)
(see also module description in the study program web page)
- Begin/End and Scheduling
-
02.10.2026 - 05.02.2027. Organized as full-day workshops on Fridays (10:00 - 17:00) plus self-organized work in your teams; the two status meetings are half days. Specific dates and agenda see below.
- Location
- The module takes place in presence. In exceptional cases (but only if explicitly communicated for the day) we'll switch to a remote option (video conference). If more than one location is listed here, please look at the respective time slot or workshop day (see bottom of this page), which location is used on which day. If there are no details given on this page, please check the other communication channels (e.g. Discord).
-
-
Room 1:
0505 (Building LC6, opposite main entrance of Schwalbe Arena), see also
detailed directions
-
Room 2:
3219 (Main building on the Gummersbach campus, third floor. We have space there for workshops such as Event Storming or hackathons.)
-
Video conference link:
https://th-koeln.zoom-x.de/j/63215521437?pwd=uWhlXxZyLbZjfCRnGaRmyM6v5FuEpL.1
(only in exceptional cases and if explicitly communicated in advance for the day)
- ILIAS/ILU Course for the Module
- https://ilu.th-koeln.de/goto.php/crs/872944
-
Registration
for the Module
-
Please join
this ILIAS/ILU course.
Deadline is 09.10.2026.
Please remember that you must additionally register for the exam via PSSO. The registration deadlines for this can be found on the F10 information pages of the TH Köln.
- Maximum / Minimum Number of Participants
-
The maximum number of participants is
15.
If there are less than
8
participants, the course cannot take place.
- Miro Board used for documenting the EventStorming results, and the subsequent domain modelling results
-
During the module, you can
use this Miro Board.
- Discord Server for fast Communication
-
Discord has been proven as a very effective platform for information sharing, discussions, and consultations. Therefore, please join the ArchiLab Discord Server at
https://discord.gg/YYNYb5whU8.
Navigate to channel
#rollenzuweisung
and click on
ddd.
Then you automatically get access to the channel(s) relevant for this module.
Learning Outcome
This module walks you through the design of a reasonably complex software system, from exploring its business domain to a running prototype built by several teams, using Domain-Driven Design.
As a experienced programmer, architect, or business analyst I can design a reasonably complex greenfield application for a multi-team development setup, using the domain-driven design paradigm,
by me ...
- understanding what DDD is and how its tools are sequenced from domain exploration to code,
- capturing the business domain collaboratively in an EventStorming workshop,
- deriving bounded contexts from the explored domain, with a context map and a ubiquitous language per context,
- defining a high-level C4 model that maps the bounded contexts onto the services of the given architecture,
- recording architectural decisions with their context, the options considered and their consequences,
- creating a domain model for one bounded context, using the appropriate design elements,
- setting up the conventions, permissions and automated checks an AI agent needs in order to produce code that conforms to the architecture,
- implementing one bounded context as a running service that keeps its boundary,
- judging where the DDD design journey paid for itself in my own project, and where it did not,
so that I can make sure that I have a sound, sustainable high-level architecture for my business domain.
Phases at a Glance
| Phase | Period (by workshops) | What is produced | Team |
|---|
Phase 1: Kickoff We agree on the goals, the structure and the grading of this module, and we form the specialist teams.- Competences:
- explain what DDD is, which problem it addresses, and how the DDD Starter Modelling Process sequences its tools from domain exploration to code
| 02.10.2026 | | |
Phase 2: Domain exploration We explore the case study domain (a restaurant management system) together in a big-picture EventStorming, moderated by the exploration team, and document what the wall shows: the domain events, the business objects, and the first candidate boundaries.- Competences:
- take part in a big-picture EventStorming session and turn its wall into a documented set of events, business objects and candidate subdomain boundaries
| 16.10.2026 | - Documentation of the EventStorming result
- Ongoing: watching over the discovered events, speaking up when one goes missing in the domain stories or the event APIs
| Exploration Team |
Phase 3: Strategic design We turn the EventStorming result into bounded contexts with the core domain chart, domain stories and the context map: which subdomains are core, which scenarios run through them, and where the boundaries run. At the end of this workshop day, the bounded context teams form.- Competences:
- derive bounded contexts from the explored domain
| 23.10.2026 | - Core Domain Chart
- Domain storytelling scenarios
- Context Map
| Strategic Team |
Phase 4: High-level architecture Each bounded context becomes a service in a microservice architecture on Kafka. We describe it with the C4 model at levels 1 and 2; the architecture team takes the technology decisions that go beyond a single service, in agreement with the supervisors; the tactical team hands out the starter platform, and the implementation starts.- Competences:
- define a high-level C4 model (system context and container level) that maps the bounded contexts onto the services of the given architecture
- record an architectural decision with its context, the options considered and its consequences, so that someone who was not there can understand why the system looks the way it does
| 06.11.2026 | - C4 Level 1 system diagram
- C4 Level 2 container diagram
- Technology decisions on infrastructure and libraries that go beyond the freedom of a single service, agreed with the supervisors
- Architecture decision records: the decisions taken while the system is built (started here, kept up to date all semester)
| Architecture Team |
Phase 5: Tactical design and implementation The bounded context teams implement their contexts as services. They start right after the architecture workshop and work things out for themselves first; the two workshops of the tactical team then give them the tools to improve on what they have: the tactical building blocks, and a proper setup for working with an AI agent. Two status meetings follow.- Competences:
- implement one bounded context as a running service that keeps its boundary
- create a domain model for one bounded context, using the appropriate design elements
- set up and maintain the conventions, permissions and automated checks an AI agent needs in order to produce code that conforms to the architecture
| 27.11.2026 04.12.2026 18.12.2026 15.01.2027 | - Aggregate design for your bounded context
- The shared platform: repository structure, pipelines, agent configuration and guardrails
- Your bounded context, implemented as a service and integrated over Kafka
- The event API of your service: the events it publishes, documented in AsyncAPI and kept up to date
- A simple client for demonstrating your service
| Tactical Team Bounded Context Team |
Phase 6: Demo and reflection Each bounded context team demonstrates its service in the running system, reflects on the method, and hands over its architecture in a state that someone who was not in this course can work with.- Competences:
- judge where the DDD design journey paid for itself in the own project and where it did not
| 05.02.2027 | - Your team's reflection on the method
- The handover package: the artifacts above, reviewable by someone who was not in this course
| Bounded Context Team |
Teams
This course follows the jigsaw approach to cooperative learning: you work
in two teams at the same time, and the two are cut along different axes.
- A specialist team owns one phase. There are four of them: exploration, strategic,
architecture and tactical. Your specialist team studies the methods of its phase in depth,
prepares and moderates that phase’s workshop so that everyone gets hands-on experience of the
method, and then coaches the rest of the course on it for the remainder of the semester.
- A bounded context team owns one part of the case study. It forms at the end of phase 3, once
we know what the bounded contexts actually are. Your context team specifies its context,
implements it as a service, and demonstrates it at the end.
Every context team holds at least one member of every specialist team, and that is the point of the
arrangement rather than a scheduling detail. A method is not learned from attending one workshop,
and it cannot be coached into a team from outside it. Whoever prepared the Context Map workshop sits
in your team at the moment you have to draw your own boundary.
How many bounded contexts we cut the case study into depends on how many of you there are, so we
settle that at the end of phase 3, when the bounded context teams form.
Team Charters
Each team has a charter. It says what the team is there for (mission), what it does as soon as
we leave the kickoff (first steps after the kickoff), what it does on its own workshop day, what
it delivers, which role it keeps for the rest of the semester, and how the supervisors
support it. All specialist teams start working right after the kickoff, not
only when their phase comes up.
The chart shows roughly when each team is busy. You are in one specialist team and in one bounded
context team, so your own load is your specialist team’s row plus the grey row.
■ Exploration Team
- Mission: make the domain visible to everyone, and keep its language honest for the rest of the
course.
- First steps after the kickoff: research EventStorming. Plan the big-picture session for the size of the class, with two parallel sub-boards
and a merge step if we are many. Prepare the material and the questions that reveal typical
misunderstandings.
- On 16.10.: prepare and moderate the EventStorming day, and document its result.
- Delivers: the workshop pack (agenda, material, questions), the documentation of the
EventStorming result.
- For the rest of the semester: guardians of the events discovered in the EventStorming. When an
event from the board is missing in the domain stories or the event APIs of the
services, you speak up.
- Support: a supervisor coaches you while you prepare the EventStorming day. On the day itself
the supervisor stays in the background and whispers in your ear when it helps; you stay in the
driver’s seat.
■ Strategic Team
- Mission: cut the domain into contexts that can be built independently, and keep that cut
coherent while it is being built.
- First steps after the kickoff: research the core domain chart, domain storytelling and the context map. Attend the EventStorming day as observers who note
candidate boundaries, since there is only one week between the board and your own workshop.
- On 23.10.: prepare and moderate the strategic design workshop, in which the class also marks
two or three of the domain stories as the scenarios the system has to run end to end at the demo.
- Delivers: the workshop pack, the core domain chart, the domain stories with the
demo scenarios marked among them, and the context map.
- For the rest of the semester: owners of the context map and of the domain stories, including
the demo scenarios. You keep them alive as the business view of the system: which scenarios it
supports and where the boundaries run through them.
- Support: a supervisor coaches you while you prepare the workshop, and supports the moderation
on the day from the background in the same way. When the teams start changing what flows between
their contexts, the supervisors help you keep the context map and the domain stories consistent.
■ Architecture Team
- Mission: make the shared technical infrastructure usable for everyone, so that every bounded
context team knows where its technical constraints are.
- First steps after the kickoff: learn the provided stack (Kafka and PostgreSQL in Docker, the
helper libraries for the outbox pattern and for Kafka producers and consumers), document it and
prepare a demo. Research the C4 model, levels 1 and 2.
- On 06.11.: prepare and moderate the high-level architecture workshop.
- Delivers: the workshop pack, the C4 level 1 and 2 diagrams, the documentation of the helper
libraries, the technology decisions on infrastructure and libraries that go beyond a single
service (agreed with the supervisors), and the first architecture decision records.
- For the rest of the semester: keepers of the shared infrastructure and of the architecture
decision records. Together with the supervisors, you keep the infrastructure administered and
documented, and you record the architectural decisions taken while the system is built. Making
the services work together is not your job but that of the bounded context teams.
- Support: the supervisors introduce you to the provided stack, answer your questions while you
document it, and work with you on administering the shared infrastructure. A supervisor coaches you while you prepare the C4 workshop, and supports the
moderation from the background.
■ Tactical Team
- Mission: give every context team a foundation to build on, and the tactical skills to build
well on it.
- First steps after the kickoff: build a starter platform that every context team then works in:
the repository template, the build pipeline, the agent configuration, and the first architectural
guardrails (layering and context boundaries). You hand it out at the architecture workshop on
06.11., so that no team starts from an empty repository.
- On 27.11. and 04.12.: after the teams have worked with the platform for a few weeks, you run
the two tactical design workshops, the DDD building blocks and a proper setup for working with an
AI agent, and help the teams improve on what they have built. The aggregate-level guardrails are
written as part of teaching them. This is why phase 5 has two workshop days rather than one.
- Delivers: the shared platform, and two workshop packs (the second one smaller in scope).
- For the rest of the semester: platform owners, and aggregate coaches inside the context teams.
- Support: the supervisors provide the skeleton you build the platform from, and help with the
pipeline and the infrastructure. On 27.11. a supervisor teaches the DDD building blocks, while you
moderate the exercises and coach the teams; on 04.12. a supervisor supports your moderation from
the background. The supervisors review the guardrails with you before they go out to the teams.
Fine print: how the tactical team is staffed
The tactical team is staffed from those of you who already know the DDD building blocks from an
earlier course. Expressing an architectural rule as an automated check means knowing the rule well
enough to say precisely when it is violated, so this is the team where existing knowledge earns its
place. The other three specialist teams are open, since the methods they own are new to nearly
everyone.
■ Bounded Context Team
- Mission: own one context of the case study from its specification to a running service, and
hand it over so that someone who was not in this course can work with it.
- First steps after forming on 23.10.: collect the events that belong to your context, from the
EventStorming board and the domain stories. The ones other contexts need to know about are the
start of your event API.
- Between 06.11. and 27.11.: a first version of your specification: a sketch of your aggregates, the first version of your service’s event API in AsyncAPI, and a walking
skeleton of your service on the starter platform that publishes one event over Kafka.
- From 27.11.: rework model and setup with what the two tactical workshops teach, implement the
service and a demo client, and keep your event API up to date (the events your service publishes
are its API). Making your service work together with the others is your team’s job: you
coordinate with the neighbouring teams so that the demo scenarios run end to end, and at the
status meetings you show how far they get.
- On 05.02.: demo, reflection and handover package.
- Composition: at least one member of every specialist team.
- Support: the supervisors coach your team at the status meetings and whenever you ask, for
instance on Discord, and help when the infrastructure gets in your way. For each method, the member
of the matching specialist team in your own team is your first coach.
Which Specialist Team Suits You?
Four quick questions, just for orientation. The actual assignment happens at the kickoff, based on
the survey there.
How to Choose Your Specialist Team
There is a survey on Xoyondo where you can state your team preferences.
(I would gladly have used an officially sanctioned university tool for this, but none of them lets you
edit your choices after you have made them. So this is a compromise with a relatively
privacy-friendly third-party tool, which I also use in other contexts.)
- Vote YES for your first choice team(s).
- Vote MAYBE for teams you would accept if your first choices are overbooked.
- Vote NO for teams you really do not want to be in.
The tactical team is staffed from those of you who already know the DDD building blocks, so if that
is you, please say so in the survey. We fill in the survey together during the kickoff on 02.10.2026
and evaluate it on the spot, so that all teams are formed when we leave the room: the exploration
team has only two weeks until the EventStorming day. If you cannot attend the kickoff, or do not
want to use the tool, send me your preferences by another channel (for example email) before the
kickoff.
The Case Study
The case study will be a restaurant management system, as described in
the case study description. The code repository for
it will be https://git.archi-lab.io/students/ddd/ws26/restaurant-system.
The architectural style is given in this course rather than chosen by you: a set of microservices
integrating over Apache Kafka, with one service per bounded context. The supervisors provide the
infrastructure (Kafka and PostgreSQL in Docker) and helper libraries for the outbox pattern and for
Kafka producers and consumers, so that your effort goes into the domain rather than into plumbing.
Each service documents the events it publishes, its event API, in AsyncAPI.
A service counts as done when all its tests run green, its guardrail pipeline runs green, and it has
no open merge requests.
At the end of the semester you hand over an architecture, not only a running system. In the summer
semester, the ARCEN module reviews and evolves architectures of this kind, largely with people who
were not in this course. What you produce here is therefore a deliberate first cut, and making it
reviewable by someone who was not in the room is part of the work rather than an afterthought.
Grading (Based on a Points Scale Between 0 and 3)
Every criterion is scored on the same scale. 0 means not acceptable at all, 3 means the criterion was overachieved. The four descriptions per criterion are the anchors of that scale, not the only values that can be awarded: half and quarter steps between them are possible.
Criteria carry different weights, and the reachable maximum is three times the sum of the weights, shown with the table. A third of the maximum is enough to pass the course with a grade of 4,0. A grade of 1,0 is awarded from eleven twelfths of the maximum upwards, and the grades in between are interpolated.
Passing the course requires that your service builds on the shared platform and that its guardrail pipeline runs green. That row carries no weight and earns no points, but until it is green there is nothing to assess in the other criteria of that part.
Team points may be modified according to individual contribution, see below.
Grading Table
| Part | Grading Aspect | Weight | 0 Points | 1 Points | 2 Points | 3 Points |
|---|
Specialist Role (graded per specialist team) | Preparation and moderation of the phase your specialist team owns Where a specialist team owns two dates, which is always the case for the tactical team and from eighteen participants also for the architecture team, both deliverables are assessed together under this criterion. The second is expected to be smaller in scope than the first. | 2 | The method was not researched beyond the material handed out, and the phase was run ad hoc. The other teams received no usable brief and had to work the method out for themselves. | The method was researched superficially. The workshop took place, but its preparation shows gaps, and the coaching that followed was reactive rather than offered. | The method was researched properly and the phase was prepared with an agenda, material and the misconception probes. The other teams were coached through it when they asked. | The method was researched beyond the course material, and the pack anticipates where the other teams will go wrong rather than only describing the steps. The coaching continued into the implementation, which is where a method is actually tested. |
Bounded Context Specification (graded per bounded context team) | Specification of the DDD artefacts for your context | 4 | The specification does not reflect what the case study produced. The artefacts contradict the Event Storming board or the context map, and the aggregates are asserted rather than argued for. | The specification reproduces some of the case study results, but the connection between them is thin. Boundaries are stated without saying which language or which invariant makes them boundaries. | The specification follows the case study through. The context and its relationships are argued from the context map, the container is consistent with the C4 model, and each aggregate is justified by the invariant it protects. | As for 2, and the specification states where it is uncertain and what would change the decision. A reader can see which alternatives were considered and why this cut won. |
Bounded Context Implementation (graded per bounded context team) | Platform readiness of your service A precondition, not a scored criterion. Until the pipeline runs, there is nothing to assess under the two criteria that follow. | 0 | - | - | - | The service builds on the shared platform and the guardrail pipeline runs green. |
Implementation of your context as a service There has to be enough code to judge. A service that is little more than scaffolding cannot be assessed above 1 point. | 4 | The service does not run, or it runs without respecting the boundary it was specified to have. Domain logic sits wherever it was convenient, and the integration with other contexts is direct coupling rather than messages. | The service runs and covers part of its context. Layering and context boundaries are crossed where crossing them was quicker, and the message integration works only along the path that was demonstrated. | The service covers its context, keeps its boundary, and integrates over messages rather than by reaching into another context. The aggregates in the code are the ones in the specification. | As for 2, and the service behaves sensibly when its neighbours do not. Messages that arrive twice, out of order, or not at all are handled as a design concern rather than discovered during the demo. |
| Working method with the agent and the architectural guardrails | 2 | The agent was used as an oracle. Generated code was accepted or discarded wholesale, guardrail failures were worked around by weakening the rule, and nothing in the repository records how the team works. | The agent was used with some care, but the conventions it was given stayed as they were handed over. A failing guardrail was more often silenced than understood. | The conventions, permissions and checks were treated as part of the work. The team extended them as the domain got clearer, and a failing check led to a design conversation rather than to an exception. | As for 2, and the team can show a case where it argued that the guardrail was wrong and changed the rule, or that the code was wrong and changed the code. The setup is demonstrably better at the end than it was when handed over. |
Reviewability of the submission by someone who was not there The test behind this criterion is whether a reviewer who was not present could work with this architecture. It is not hypothetical: the ARCEN module in the summer semester reviews the result, largely with people who were not in this course. | 2 | The submission is a repository and nothing else. A reader who was not in the course cannot tell what the context is, why it was cut this way, or how to run it. | The artefacts are present but scattered, and they assume the reader sat in the workshops. Decisions appear as results with no reasoning attached to them. | The submission is self-contained. The context map, the C4 model, the specification and the guardrail set are where a reader expects them, and each design decision is legible without asking the team. | As for 2, and the submission names its own weak points. A reviewer can start from what the team already knows is unresolved instead of having to find it first. |
Reflection (graded per bounded context team) | Reflection on the method | 1 | The presentation recounts what was done. It contains no judgement about the method itself. | The reflection names advantages and drawbacks of the method in general terms that would fit any project. | The reflection is tied to this case study. It says where the method paid for itself, where it cost more than it returned, and what the team would do differently. | As for 2, and it says under which conditions the team would not use this method at all, with a reason drawn from what happened during the semester. |
Course Participation (graded individually) | Contribution to the course beyond your own team | 1 | Barely present in the course beyond the obligations of the own team. | Present in the work of the own team, but not visible in the exchange between teams. | A reliable presence in discussions and in the coaching across teams, both asking and answering. | Visibly carried parts of the course for others, by guiding, unblocking and helping teams other than the own one. |
| Sum | 16 | Maximum reachable points: 48 |
Individual Contribution
The team criteria above are assessed as a team effort, and I assume that all members of a team
contribute equally. If that is not the case, for instance if one member clearly takes part much less
in the team’s work, I reserve the right to reduce that member’s share of the team result. The
individual grade can then deviate from the team grade, and in extreme cases lead to a failing grade.
Nobody gets more than 100 % of the team result. If only some members of a team carry the work, the
team can still earn a good result; those members get the full result, and the others a correspondingly
smaller share of it. Make sure your individual contribution is recognisable, for example by pushing
your own commits when you pair or mob program.
| Individual Contribution |
< 30 % |
30 … 80 % |
80 … < 100 % |
100 % |
| Level of individual contribution to the team’s work |
Hardly involved in the team’s work at all. Contributions are not visible and can only be guessed. |
Only occasionally or superficially involved. Contributions are scarce but visible. |
Contributed slightly below average. |
Played an active role and contributed in line with the assessment of the team’s work. |
Retrospective at the End of the Course
At the end of the course, we will have a retrospective session, where each team reflects on the DDD methodology
as we have applied it in this course. Each team will present their view on the strengths and weaknesses of the method,
and what they would do differently in a real-world project. This is part of the grading.
I do NOT expect a well-prepared / well-trained presentation. PPT slides are NOT required. Voice only,
Miroboard stickies, or what else makes you feel comfortable, is totally sufficient. The retrospective is done per
sub-team from the case study implemention, since you spent the last half of the course mainly within your subteam.
Therefore, you can distribute the questions amongst yourself, but I would expect that each answer to a question
reflects the opinions of the whole sub-team.
Please use the following guiding questions for your reflection.
- What are the strengths & weaknesses of the DDD design “journey” as we have done it in this course,
from your personal perspective?
- You do not have to agree within your sub-team. Just present the different views that exist (if applicable).
- Let’s assume you were part of a large-scale greenfield project (e.g. a large web platform)
where the chief architects have decided to use DDD and a microservice architecture as main design paradigms,
but otherwise you have total freedom how to organize yourself as a team. Just assume that the course members
are the team that is supposed to work together on that web platform.
- What would you do differently,
- individually (each member of each sub-team), and
- as an overall project?
- (Please make realistic and concrete suggestions. So “making sure that all other modules have no bugs” is not
enough, you should also suggest how you want to achieve this.)
- What made your life hard, and what made your life easy while implementing one bounded context as a
service in this small-team setup, as we have done it here?
- In addition to everything being said in question 1-3 - what do you personally take away from this course?
(Please reflect the opions of all members of the subteam)
Workshops "Phase 1: Kickoff"
Fri 02.10.2026, 10:00 - 17:00: Kickoff
Moderated by: the teacher. We discuss the goals, structure, organizational details, and grading for this module. In addition, you get an introduction to the preconditions for this course and pre-courses, where applicable.
You can read about the content in this slideset.
Workshop Location
Room:
0505 (Building LC6, opposite main entrance of Schwalbe Arena), see also
detailed directions.
Goal of the day
You can start with this module.
Please watch the following video(s) beforehand
Agenda
-
10:00 - 10:30:
Introduction Round
- Every participant introduces her/himself
- What is your knowledge level wrt. coding and DDD concepts?
- What are your expectations?
-
10:30 - 11:30:
The DDD journey in a nutshell
- Motivation for this module - why DDD? The slides "What is DDD?" are linked above.
- Sketching the road ahead
- Brief introduction into the sequence of the design elements
-
11:30 - 12:00:
Organisation of the module
- Goal of this module
- Structure
- Organizational details
- Grading
- Case study briefly explained
-
12:00 - 12:30:
The technical setting
- The architectural style is given rather than chosen. We use a set of microservices integrating over Apache Kafka, with one service per bounded context.
- A colleague and I provide the infrastructure (Kafka and PostgreSQL in Docker) and helper libraries for the outbox pattern and for Kafka producers and consumers.
- The repository structure, the build pipelines, the agent configuration and the architectural guardrails are built by the tactical team before the implementation starts. Every context team then works in that setup.
- Passing the module requires that your service builds on that platform and that its guardrail pipeline runs green.
-
12:30 - 13:00:
Specialist team formation and next steps
- Task details for each specialist team
- ... Event Storming workshop see here
- ... Strategic design workshop see here
- ... C4 Model workshop see here (page will be completed until workshop)
- ... Tactical team, the shared platform and the tactical design workshop
- Specialist team survey, filled in now (see "How to Choose Your Specialist Team" below)
- ... YES means "I want to be in this team"
- ... MAYBE means "I can live with being in this team"
- ... NO means "I don't want to be in this team, if possible"
- We evaluate the survey on the spot, so that all teams are formed before we leave
- Questions, next steps
-
13:00 - 13:30:
Preparation for the Event Storming Workshop (Event Storming Team only)
- We use the opportunity to discuss your preparations for the Event Storming workshop next week.
Workshops "Phase 2: Domain exploration"
Fri 16.10.2026, 10:00 - 17:00: EventStorming "Big Picture" Workshop
Moderated by: Exploration Team. We use the EventStorming method in a workshop, and reflect on the results. The goal is to explore our case study domain in a "typical" DDD way. This workshop will be prepared and moderated by a dedicated "EventStorming" subteam. I will coach and support the moderators.
Workshop Location
Room:
0505 (Building LC6, opposite main entrance of Schwalbe Arena), see also
detailed directions.
Goal of the day
You have the "big picture" ingredients for the case study (events, subdomain boundaries). And you have an understanding how this method works, of its strengths and limitations.
Agenda
-
10:00 - 16:30:
EventStorming Workshop
- Please be there on time, so that we can start promptly at 10:00!
- All the details will be told in the workshop by the exploration team.
- We will have breaks in between, including a lunch break.
-
16:30 - 17:00:
Retrospective and Feedback
- ... as moderated by the exploration team
Workshops "Phase 3: Strategic design"
Fri 23.10.2026, 10:00 - 17:00: Strategic Design Workshop
Moderated by: Strategic Team. We evaluate the EventStorming results and derive bounded contexts (the blueprints for service boundaries) from them. We use the core domain chart, domain storytelling and the context map, prepared and facilitated by the strategic team. I will coach and support the moderators. Two or three of the domain stories become the scenarios the system has to run end to end at the demo. At the end of the day, we form the bounded context teams.
Workshop Location
Room:
0505 (Building LC6, opposite main entrance of Schwalbe Arena), see also
detailed directions.
Goal of the day
You have an detailed understanding of our domain, and how to derive it from the EventStorming results. (Agenda will be further detailed by the strategic team.)
Agenda
-
10:00 - 16:30:
Workshop
- Please be there on time, so that we can start promptly at 10:00!
- All the details will be told in the workshop by the strategic team.
- We will have breaks in between, including a lunch break.
-
16:30 - 17:00:
Retrospective and Feedback
- ... as moderated by the strategic team
Workshops "Phase 4: High-level architecture"
Fri 06.11.2026, 10:00 - 17:00: C4 Model Workshop
Moderated by: Architecture Team. Based on the bounded contexts, we will now create a high-level C4 model.
You can read about the content in this slideset.
Goal of the day
You have a technical model of a microservice architecture for our domain. And you understand how aggregates are a key to design service components, and how to create a high-level C4 model from the bounded contexts and their aggregates.
Agenda
-
10:00 - 10:20:
Workshop Introduction, Overview, Goals
- Please be there on time, so that we can start promptly at 10:00!
- Voice Input decision - we discuss with everyone about the voice input which to choose, external or internal.
-
10:20 - 11:00:
Level 1 (System Context Diagram)
- All together - identify main subdomains, actors (internal/external), who interacts with system
- build context diagram
-
11:00 - 12:30:
Level 2 (Container Diagram Exercise)
- Each bounded context team brings the events it has collected for its context
- We discuss how we relate the Level 2 with previous workshop context maps.
-
12:30 - 13:30:
Lunch Break
-
13:30 - 14:15:
Level 2 - Team Presentations
- Each team explains and walks the group through their container diagram.
- Consolidation & Questions
- Group discussion - Discuss, merge ideas, resolve conflicts, clarify external/internal divisions
-
14:15 - 15:00:
Retrospective and wrap up
- Share experiences, what worked or didn’t, feedback, suggestions for improvement
- wrap up main learnings
-
15:00 - 17:00:
Start into the Platform and Implementation Phase
- The tactical team presents how it will set up the shared platform, and what the other teams have to expect from it.
- Introduction to team development basics (esp. branching strategies), with the slides linked above
- Homework until next workshop - APIs and dummy clients
- See architectural principles for dummy clients and mock controllers in our showcase system
- Organizational issues (which repo to use etc.)
Task until next workshop
- Plan "your" clients and your required client APIs (REST and WebSocket)
- Implement (vibe-code) dummy clients that work for showcasing the system later
Workshops "Phase 5: Tactical design and implementation"
Fri 27.11.2026, 10:00 - 17:00: Tactical Design - the DDD Building Blocks
Moderated by: Tactical Team. Aggregates, entities, value objects and repositories, taught with exercises and applied to the models your teams have started in the meantime. Where a model breaks a rule, we look at why, and what a better cut of the aggregate would be.
Goal of the day
Your team knows which of its aggregates to rework, and why.
Fri 04.12.2026, 10:00 - 17:00: Tactical Design - a Proper Setup for Working with an AI Agent
Moderated by: Tactical Team. Conventions, permissions and architectural guardrails for working with an AI agent in a team: the shared setup of the tactical team, checks that encode the context boundaries and the aggregate rules, and what a human reviews before a merge. Applied to your own repository.
Goal of the day
Your service builds on the shared setup, and its guardrail pipeline runs.
Fri 18.12.2026, 10:00 - 13:00: Status Meeting (1)
Moderated by: the teacher. Where do the teams stand, and what blocks them? The bounded context teams show how far the demo scenarios already run end to end through their services. Half a day, on site or via Zoom, depending on whether a guest speaker joins. Details follow.
Fri 15.01.2027, 10:00 - 13:00: Status Meeting (2)
Moderated by: the teacher. Second status meeting: again the bounded context teams show how far the demo scenarios run end to end, and we prepare the demo and the handover. Half a day, on site or via Zoom. Details follow.
Workshops "Phase 6: Demo and reflection"
Fri 05.02.2027, 10:00 - 17:00: Demo and Retrospective
Moderated by: the teacher. Demos of the running system, and the retrospective of each bounded context team along the guiding questions below. No slides required.
Goal of the day
You have shown what your service does, and you have a judgement on the DDD journey.