Domain-Driven Design of Large Software Systems (DDD), WS23
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.
- Study Program and Module Description
-
Master Digital Sciences (specialization Software Architecture)
(see also module description in the study program web site)
- Begin/End and Scheduling
-
06.10.2023 - 05.01.2024. Organized as 7 - 8 (usually full-day) workshops; specific dates and agenda see below.
- Location
- The module usually takes place in presence. A remote (video conference) option may be used under special circumstances. 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:
Innovation Hub (Building LC7, the building to the right of the passage to Gummersbach station. The Innovation Hub is not not open to the public. However, the main entrance door is open during office hours. Come up to the second floor and ring the bell there. Please call me (+49 176 8072 2689) or a fellow student by cell phone if no one answers), see also
detailed directions
-
Video conference link:
https://th-koeln.zoom-x.de/j/65794237439?pwd=ekFFaFJ0ZkU1dFRQUk41NjRXYnFIUT09
- ILIAS Course for the Module
- https://ilu.th-koeln.de/ilias.php?ref_id=85613&cmdClass=ilrepositorygui&cmdNode=xp&baseClass=ilrepositorygui
-
Registration
for the Module
-
Please join
this ILIAS course.
Registration is possible until 12.10.2023.
The maximum number of participants is
15.
If there are less than
3
participants the course cannot take place.
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.
- Miro Board used for documenting the Event Storming 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 see all channel(s) relevant for this module.
Content
- Learning Outcome
- Methodology
- Structure of this Course
- Documentation
- Grading
- Workshops
- Fri 06.10.2023, 10:00 - 14:00: Kickoff
- Fri 27.10.2023, 10:00 - 17:00: Event Storming Trial Workshop
- Fri 10.11.2023, 10:00 - 17:00: Bounded Context Trial Workshop
- Fri 17.11.2023, 10:00 - 17:00: Component Model Trial Workshop
- Mon 27.11.2023, 10:00 - 17:00: Hackathon Nov23, day 1 - Event Storming
- Tue 28.11.2023, 10:00 - 17:00: Hackathon Nov23, day 2 - Bounded Context formalization
- Fri 15.12.2023, 10:00 - 17:00: Documentation Review (event storming and bounded contexts) and Component Model preparation
- Thu 04.01.2024, 10:00 - 17:00: Hackathon Jan24, day 2 - Component Model Workshop
- Fri 05.01.2024, 10:00 - 17:00: Hackathon Jan24, day 3 - Documentation Finalization and Presentation
Learning Outcome
This module attempts to walk you through the design process of a relatively complex software system. This means creating a domain-specific design for the problem. Modern software architecture means that you are close to coding. Therefore, we will have a real software development case study in this module. See below. You will not have to write code in this module, but you need to know how software development teams work, and what their needs and their deliverables are.
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 ...
- conducting an event storming workshop, in order to capture the business domain,
- evaluating the domain flows and defining appropriate bounded contexts for the teams,
- creating a domain model, using the appropriate design elements,
- defining a high-level component model, using the C4 modelling approach,
- documenting the results of the design process in a paper and a presentation,
- reflecting the pros and cons of that particular design method,
so that I can make sure that I have a sound, sustainable high-level architecture for my business domain.
Methodology
Domain-Driven Design (DDD) is a concept framework rather than a design method. In order to give this
course a practical, hands-on approach, we will use the
DDD Starter Modelling Process as a process model.
This is a multi-phase process, which we will divide in the three parts listed below.
The list also contains the artifacts that we will create in this course (as indented bullet points).
- Event Storming
- Event Storming result documentation
- Bounded Contexts
- Domain Message Flow Modelling
- Bounded Context Canvas
- Context Map
- Feedback from the Guided Project team
- Component Model
- Aggregate Design Canvas
- C4 Level 1 system diagram
- C4 Level 2 container diagram
- Feedback from the Guided Project team
Structure of this Course
We will form three subteams - one for each of the three phases. The subteams will perform an in-depth study
of the the artifacts they are responsible for. They will prepare a trial workshop for their phase, so
that all participants of this course can get a hands-on experience of the method. The trial workshops will be
facilitated by the subteams, with the other course participants as participants. I will coach and support
the subteams.
In the second part of the course, we will apply the methods to a real case study. Getting more familiar
with Domain-Driven Design concepts should be a hands-on experience. The case study will be a
Guided Project working on an ecommerce application.
Documentation
All of the artifacts mentioned above have to be documented. The documentation of the workshop
preparation and results (trial and real) is expected in digital format, e.g.
as a structured markdown-based static HTML. The documentation will be stored in a public Git repository,
alongside the Guided Project’s code repository. I expect a contribution table (e.g. as separate Excel sheet),
listing each course member’s contribution to the various parts of the documentation. Your documentation
could use the following chapter structure:
- Introduction
- Background of this course and the case study
- Trial Workshops
- Event storming
- References, resources
- Workshop planning
- Bounded Contexts
- References, resources
- Workshop planning
- Component Model
- References, resources
- Workshop planning
- Design Workshops
- Event storming results
- Diagram(s) with explanation
- Open issues clarified with the business side (if any)
- Reflection: Strengths and weaknesses of the method
- Domain Message Flow Modelling
- Diagram(s) with explanation
- Open issues clarified with the Guided Project team (if any)
- Reflection: Strengths and weaknesses of the method
- Bounded Context Canvas
- Diagram(s) with explanation
- Open issues clarified with the Guided Project team (if any)
- Reflection: Strengths and weaknesses of the method
- Aggregate Design Canvas
- Diagram(s) with explanation
- Open issues clarified with the Guided Project team (if any)
- Reflection: Strengths and weaknesses of the method
- Context Map for the whole landscape
- Diagram
- Explanation for the interfaces of your own domain
- Open issues clarified with the Guided Project team (if any)
- Reflection: Strengths and weaknesses of the method
- C4 Model
- Level 1 system diagram
- Diagram
- Brief explanation
- Open issues clarified with the Guided Project team (if any)
- Level 2 container diagram
- Diagram
- Brief explanation per bounded context
- Cross-references to the code base created by the Guided Project team
- Open issues clarified with the Guided Project team (if any)
- Reflection: Strengths and weaknesses of the method
- Overall summary of this design approach
- Strengths and weaknesses of the overall approach
- It is a plus if you can back up your own reflections by external sources
Grading
The grade for this GP will consist of the following parts:
- 30% Quality of the trial workshops (one grade per subteam)
- Correctness of the research on the methods
- Thoroughness of preparation of the trial workshop
- Commitment and effort (willingness to go the extra mile, …), depth of coverage
- Quality of web-based documentation for the trial workshops (e.g. cheat sheets …)
- 65% Quality of your contribution to the case study (individual grade)
- Depth, and coverage of the documentation
- Diligence in editorial work (e.g. chapter structure, spelling, formatting, graphics, …)
- Quality of the design results
- Commitment and effort
- 5% Final presentation
- Final presentation of specification results, in front of the Guided Project team
Workshops
Fri 06.10.2023, 10:00 - 14:00: Kickoff
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.
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:15:
Organisation of the module
- Goal of this module
- Structure
- Organizational details
- Grading
-
11:30 - 12:15:
The DDD journey in a nutshell
- Sketching the road ahead
- Brief introduction into the sequence of the design elements
- Ecommerce case study briefly explained
-
12:15 - 13:00:
Lunch Break
-
13:00 - 14:00:
Team formation and next steps
- Task details for each subteam
- Team formation
- Questions, next steps
Task until next workshop
- For the event storming team, prepare the trial event storming workshop
- For the other teams, read material and start working on the trial workshops
Fri 27.10.2023, 10:00 - 17:00: Event Storming Trial Workshop
We try out the event storming method in a trial workshop, and reflect on the results. The goal is to make all of you familiar with this method, before we apply it to the real case study. This trial workshop will be prepared by a dedicated "event storming" subteam. This subteam will also facilitate the trial workshop as moderators, with the other course members as participants. 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
We have an understanding how this method works, of its strengths and limitations.
Agenda
-
10:00 - 10:30:
Intro on the method and the trial business domain
- Business domain for the trial
- Intro to the method
-
10:30 - 12:30:
Event Storming - Big Picture
-
12:30 - 13:30:
Lunch Break
-
13:30 - 15:00:
Event Storming - Event Clustering
-
15:00 - 16:00:
Documentation
- Create Event Storming result documentation (Miro board)
-
16:00 - 17:00:
Reflection on the results and the method
Fri 10.11.2023, 10:00 - 17:00: Bounded Context Trial Workshop
We evaluate the Event Storming results and derive bounded contexts (the blueprints for service boundaries) from them. As for the event storming, this is a trial workshop, prepared and facilitated by a dedicated "bounded context" subteam. This subteam will also facilitate the trial workshop as moderators, with the other course members as participants. 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
We have an understanding what bounded contexts are, and how to derive them from the event storming results.
Agenda
-
10:00 - 11:00:
Introduction into the overall DDD design process, and specifically Bounded Context specification
-
11:00 - 16:00:
Bounded Context Trial Workshop
- Complete the event storming model, adding actors, pivotal elements, aggregates, and commands
- Define bounded contexts
- Split group to for working on the bounded contexts
- Identify core / generic / support domains
- Do Domain Message Flow Modelling
- Create Bounded Context Canvas for each bounded context
- Create Context Map for the whole landscape
- lunch break in between
-
16:00 - 17:00:
Final round to discuss the results
- Summing up and reflecting the artifacts created
- Reflection on results and the design process
Fri 17.11.2023, 10:00 - 17:00: Component Model Trial Workshop
Based on the bounded contexts, we will now create a high-level component model. This is a trial workshop, prepared and facilitated by a dedicated "component model" subteam. This subteam will also facilitate the trial workshop as moderators, with the other course members as participants. 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
We understand how aggregates are a key to design service components, and how to create a high-level component model from the bounded contexts and their aggregates.
Agenda
-
10:00 - 11:00:
Introduction into Aggregate Canvas and C4 modelling
-
11:00 - 16:00:
Component Model Trial Workshop
- Split group to for working on the aggregates
- Create an Aggregate Canvas for each major aggregate
- C4 Level 1 system diagram, jointly done by all the teams
- C4 Level 2 container diagram, seperately for each bounded context
- lunch break in between
-
16:00 - 17:00:
Final round to discuss the results
- Summing up and reflecting the artifacts created
- Reflection on results and the design process
Mon 27.11.2023, 10:00 - 17:00: Hackathon Nov23, day 1 - Event Storming
We will now apply the methods we learnt and practiced in the trial workshops to the real case study, a Guided Project. This project works on implementing an ecommerce system, with a number of bounded contexts. This will be our business domain. We will start with event storming. Since both the DDD course and the Guided Project team will be part of the Hackathon event in the InnovationHub, we will have the opportunity of close interaction with the development team from the Guided Project all day. The event storming team will lead and moderate this session, with me supporting and coaching. The other DDD participants will act as business experts.
Workshop Location
Room:
Innovation Hub (Building LC7, the building to the right of the passage to Gummersbach station. The Innovation Hub is not not open to the public. However, the main entrance door is open during office hours. Come up to the second floor and ring the bell there. Please call me (+49 176 8072 2689) or a fellow student by cell phone if no one answers), see also
detailed directions.
Goal of the day
We have a good understanding of the ecommerce business domain that the Guided Project, have collected a comprehensive set of business events, and clustered them into candidates for bounded contexts.
Tue 28.11.2023, 10:00 - 17:00: Hackathon Nov23, day 2 - Bounded Context formalization
Based on the previous day's event storming results, we will now derive bounded contexts from them. We will use the methods learnt in the trial workshop - Domain Message Flow Modelling, Bounded Context Canvas, and Context Map. The bounded context team will lead and moderate this session, with me supporting and coaching. The DDD participants will work in subteams, focusing each on a specific bounded context.
Workshop Location
Room:
Innovation Hub (Building LC7, the building to the right of the passage to Gummersbach station. The Innovation Hub is not not open to the public. However, the main entrance door is open during office hours. Come up to the second floor and ring the bell there. Please call me (+49 176 8072 2689) or a fellow student by cell phone if no one answers), see also
detailed directions.
Goal of the day
We have a good understanding of the bounded contexts for the ecommerce business domain, and have documented them in a comprehensive way using the formats learnt in the trial workshop.
Task until next workshop
- Paper format clarified per subteam
- Paper contains the results of the event storming and bounded context workshop (event storming results, bounded context canvas, domain message flow modelling, context map)
Fri 15.12.2023, 10:00 - 17:00: Documentation Review (event storming and bounded contexts) and Component Model preparation
We will review the documentation of the event storming and bounded context workshops, by a mutual review process (subteam A reviewing subteam B's results, B reviews C, and C reviews A). In addition, we will prepare the component model workshop by analysing the Guided Project's code base.
Workshop Location
Room:
0505 (Building LC6, opposite main entrance of Schwalbe Arena), see also
detailed directions.
Goal of the day
The final workshop for the C4 component model is well be prepared, and the documentation of the earlier artifacts (event storming results and bounded context documentation) is in good shape.
Task until next workshop
- Prepare the component model workshop
Thu 04.01.2024, 10:00 - 17:00: Hackathon Jan24, day 2 - Component Model Workshop
We will now create a high-level component model for the ecommerce system that the Guided Project is working on. Again, both the DDD course and the Guided Project team will be part of the Hackathon event in the InnovationHub, so we can discuss the model with development team on site. The component model workshop will be prepared and facilitated by the "component model" subteam. I will coach and support the moderators.
Workshop Location
Room:
Innovation Hub (Building LC7, the building to the right of the passage to Gummersbach station. The Innovation Hub is not not open to the public. However, the main entrance door is open during office hours. Come up to the second floor and ring the bell there. Please call me (+49 176 8072 2689) or a fellow student by cell phone if no one answers), see also
detailed directions.
Goal of the day
The Aggregate Canvases and the C4 Component Model has been created, and the results are documented to the extent needed to give a brief presentation the next day.
Fri 05.01.2024, 10:00 - 17:00: Hackathon Jan24, day 3 - Documentation Finalization and Presentation
The documentation for the ecommerce application of the Guided Project will be finalized, and the results will be presented to the Guided Project team (and to the other hackathon participants).
Workshop Location
Room:
Innovation Hub (Building LC7, the building to the right of the passage to Gummersbach station. The Innovation Hub is not not open to the public. However, the main entrance door is open during office hours. Come up to the second floor and ring the bell there. Please call me (+49 176 8072 2689) or a fellow student by cell phone if no one answers), see also
detailed directions.
Goal of the day
The course artifacts are ready to be submitted, with only minor tasks remaining.