Kontakt
stefan.bente[at]th-koeln.de
+49 2261 8196 6367
Discord Server
Prof. Bente Personal Zoom
Adresse
Steinmüllerallee 4
51643 Gummersbach
Gebäude LC4
Raum 1708 (Wegbeschreibung)
Sprechstunde nach Vereinbarung
Terminanfrage: calendly.com Wenn Sie dieses Tool nicht nutzen wollen, schicken Sie eine Mail und ich weise Ihnen einen Termin zu.

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. The course focuses on the domain exploration and subdomain specification. Aspects of a technical architecture and the actual coding are not covered in this course.

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 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: 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 (only in exceptional cases and if explicitly communicated in advance for the day)
ILIAS/ILU 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/ILU course. Deadline is 12.10.2023. 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 3 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 attempts to walk you through the design process for a relatively complex software system, by 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 EventStorming 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 C4 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).

  1. EventStorming
    • Workshop concept
    • EventStorming result documentation
  2. Bounded Contexts
    • Domain Message Flow Modelling
    • Bounded Context Canvas
    • Context Map
    • Feedback from the case study partner team
  3. C4 Model
    • Aggregate Design Canvas
    • C4 Level 1 system diagram
    • C4 Level 2 container diagram
    • Feedback from the case study partner 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 as a paper. I have created an Overleaf project with a template for this paper. Latex will be used, since this a de-facto standard for papers and reports in the computer science community; in addition, Overleaf is great for collaborative editing. A free account is sufficient for our purposes.

Here is this detailed template as PDF. In addition, I expect a contribution table (e.g. as separate Excel sheet), listing each course member’s contribution to the various parts of the documentation.

Final Presentation

The final presentation should not be just a repetition of the results in the case study document. Instead, the presentation will tackle the following reflection topics. The course participants should register in small groups for one of the questions.

  • Registering is done via ILU. Please join one of the subgroups you find at this link.
  • Each “sub-presentation” can be between 10 and 20 min long. After 20 min, there will be a hard cut, for the sake of time management.

These are topics you can choose from. Feel free to propose topics of your own (but I will only accept them if they are on par with the given topics, in terms of difficulty and scope).

1. A Helicopter View on the Whole Design Process

We have roughly followed the recommendations by the DDD Crew, and their selection of methods. How would you assess this after having completed the course? What elements would you use in your own real-life projects, what is missing, what other elements could be added (maybe instead of steps we have done). Evaluate the literature and online sources for feedback and assessments of the DDD Crew material and selection, and compare this to your own experience.

2. Best Possible Case Study for DDD Course

Our case study in the DDD project was also a TH Köln module (a Guided Project). Assume that we had a real industry partner with a real-life project as a case study. What are the requirements, the caveats, the do’s and don’ts here? Just keep in mind that industry partners have their own timelines and needs. Please sketch how the DDD course could be organized with such an industry partner on board (e.g. which workshops in which order …). What obligations would the partner have to fulfill?

3. Maximum Benefit of Event Storming Workshops

How can you ensure that Event Storming has the maximum benefit for a software development project? In our course, it seemed that there was some kind of disconnect between the Event Storming, and the subsequent steps. How could you avoid this?

Evaluate the literature and online sources for Good Practice recommendations, and compare them to our experiences in this course. What would you do differently in a real-life project? And what should the DDD course do differently next time?

4. Domain Message Flow Diagrams without “Request / Response” Bias?

When designing Domain Message Flow Diagrams, there were a lot of discussions about how messages should be designed. Initially, many diagrams followed a traditional request / response pattern, and “chained” the messages from one bounded context to the next. Gradually, we moved to a more event-oriented pattern, where events are published and then consumed by whatever bounded context needs it.

How could you achieve - in the next DDD course, as well as in a real-life project - that this doesn’t happen in the beginning? Or is it something you cannot avoid? What would the team need as preparation, what discussions or workshops would help?

5. What are Really Useful Canvases? Do they exist?

We had a number of canvases in our methods. How useful did you find them? Can they be more than just repetition? What purpose can they have in real-life projects? What canvas(es) are really useful? Evaluate the literature and online sources for Good Practice recommendations, and bring in your own experience. If needed, feel free to propose an own (draft) canvas design.

6. How Could we Improve the Workshop Structure for this Course?

In this course we have been using a structure consisting of trial workshops for each block of methods, followed by workshops covering the actual case study. Can this structure be improved? What were the benefits, and what were the shortcomings? Please include the opinions and experiences of your peers in the course in your presentation, in a lightweight fashion, e.g. by a survey. Sum up your results by proposing an updated workshop structure for this course in the next semester. Please be realistic in timelines and boundary conditions.

Grading

The grade for this GP will consist of the following parts:

  • 35% Quality of the 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 …)
    • Quality of the case study workshops (how well has the team planned and moderated the workshops)
  • 55% (60%) 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
  • 10% (5%) Final presentation
    • Final presentation of specification results, in front of the case study partner 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 - please give your vote here (green means "I want to be in this team", yellow means "I can live with being in this team", red means "I don't want to be in this team, if possible")
    • Questions, next steps

Task until next workshop

  • For the EventStorming team, prepare the trial EventStorming workshop
  • For the other teams, read material and start working on the trial workshops

Fri 27.10.2023, 10:00 - 17:00: EventStorming Trial Workshop

We try out the EventStorming 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 "EventStorming" 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:  EventStorming - Big Picture
  • 12:30 - 13:30:  Lunch Break
  • 13:30 - 15:00:  EventStorming - Event Clustering
  • 15:00 - 16:00:  Documentation
    • Create EventStorming 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 EventStorming results and derive bounded contexts (the blueprints for service boundaries) from them. As for the EventStorming, 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 EventStorming results.

Agenda

  • 10:00 - 11:00:  Guest Lecture "Architecture modernization with DDD, event storming and more" (Halil Hancioglu, Opitz Consulting)
    • Domain-driven design (DDD) is often used to create a domain-driven architecture. In combination with a collaborative method such as EventStorming (ES), this can quickly help to create a solution picture and promote communication in large projects. Both methods can be helpful as tools in the architect's toolbox to break down a monolith into a distributed system. However, this alone is not enough to modernize. In this guest lecture, the speaker reports on the procedure for modernizing a monolithic system in the context of e-mobility with the help of DDD, ES and other tools.
    • Halil Hancioglu works as a Senior Solution Architect for OPITZ CONSULTING Deutschland GmbH. He has many years of experience in the creation of individual enterprise applications and the introduction of DevOps practices. His strengths lie in the analysis and restructuring of architectures with a special focus on modern IT operations.
  • 11:00 - 11:30:  Introduction into the overall DDD design process, and specifically Bounded Context specification
  • 11:30 - 16:00:  Bounded Context Trial Workshop
    • Complete the EventStorming model, adding actors, pivotal events, 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: C4 Model Trial Workshop

Based on the bounded contexts, we will now create a high-level C4 model. This is a trial workshop, prepared and facilitated by a dedicated "C4 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 C4 model from the bounded contexts and their aggregates.

Agenda

  • 10:00 - 11:00:  Introduction into Aggregate Canvas and C4 modelling
  • 11:00 - 16:00:  C4 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 - EventStorming

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 EventStorming. 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 EventStorming 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 EventStorming 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 EventStorming and bounded context workshop (EventStorming results, bounded context canvas, domain message flow modelling, context map)

Fri 15.12.2023, 10:00 - 17:00: Documentation Review (EventStorming and bounded contexts) and C4 Model preparation

We will review the documentation of the EventStorming 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 C4 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 model is well be prepared, and the documentation of the earlier artifacts (EventStorming results and bounded context documentation) is in good shape.

Task until next workshop

  • Prepare the C4 model workshop

Thu 04.01.2024, 10:00 - 17:00: Hackathon Jan24, day 2 - C4 Model Workshop

We will now create a high-level C4 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 C4 model workshop will be prepared and facilitated by the "C4 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 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.

Wed 21.02.2024, 16:00 - 18:00: Q&A Session for Final Presentation and Paper

In this session, you can clarify questions about the final presentation. I don't expect to see your presentation beforehand.

Workshop Location

Video conference link: https://th-koeln.zoom-x.de/j/65794237439?pwd=ekFFaFJ0ZkU1dFRQUk41NjRXYnFIUT09 .

Goal of the day

All set for your presentation, and for submitting the paper.

Fri 23.02.2024, 10:00 - 17:00: Final Presentation on GP Presentation Day

You present your reflections on this courses (detailed times see agenda for the day)

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.