TH Köln

Master Digital Sciences

Documents for Study Program Accreditation

Module »Domain-Driven Design of Large Software Systems« (DDD)

Organizational Details

Responsible for the module
Prof. Dr. Stefan Bente (Faculty F10)
Language
English
Offered in
Winter Semester (Duration 1 Semester)
Location
Campus Gummersbach, or remote
Number of participants
minimum 5, maximum 20
Precondition
none
Recommendation
Familiarity with the software development process
ECTS
6
Effort
Total effort 180h
Total contact time
48h (12h lecture / 24h seminar / 12h project supervision)
Time for self-learning
132h (containing 90h self-organized project work)
Exam
Project (during semester) in conjunction with a scientific paper and presentation
Competences taught by the module
Develop Visions, Analyze Domains, Model Systems
General criteria covered by the module
Digitization, Transfer

Mapping to Focus Areas

Below, you find the module's mapping to the study program's focus areas. This is done as a contribution to all relevant focus areas (in ECTS, and content-wise). This is also relevant for setting the module in relation to other modules, and tells to what extent the module might be part of other study programs.

Focus Area ECTS (prop.) Module Contribution to Focus Area
Architecting and Coding Software 5

The module enable students to architect complex software systems from the ground up, by applying a series of well-founded architectural descisions based on domain understanding

Empowering Business 1

Understanding business domains by exploring the domain and defining appropriate bounded contexts for software development teams

Learning Outcome

After completing this course, the following statement should be true for the particapating students.

  • As an 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
    • 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.

Module Content

This module introduces the students to 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 attempt to have a real software development case study in this module. 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.

We will cover following methods that are useful in the DDD design process:

  • Event Storming
  • Bounded Context Specification
    • Domain Message Flow Modelling
    • Bounded Context Canvas
    • Context Map
  • Component Model
    • Aggregate Canvas for each major aggregate
    • C4 Level 1 system diagram
    • C4 Level 2 container diagram

These methods reflect what many agile consultancies recommend and use today, when doing a greenfield software project.

Event Storming

We will first apply Event Storming on the given case study, in a 1-day-workshop, and reflect on the results. This 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. The course supervisor will coach and support the moderators.

Bounded Context Specification

We evaluate the Event Storming results and derive bounded contexts (the blueprints for service boundaries) from them. As for the event storming, this workshop is prepared and facilitated by a dedicated “bounded context” subteam, with the other course members as participants. The course supervisor will coach and support the moderators. As result of this workshop, we will have used Domain Message Flow Modelling, set up Bounded Context Canvases, and drawn a Context Map.

Component Model

Based on the bounded contexts, we will now create a high-level component model. Also this process is prepared and facilitated by a dedicated “component model” subteam, coached and supported by the course supervisor. As a result, there will be an Aggregate Canvas for each major aggregate, and have created the the C4 Model on level 1 (system diagram) and level 2 (container diagram).

Forms of Teaching and Learning

The module is run as a sequence of workshops. The students work on a real-life case study (ideally in collaboration with an industry partner). All methods will first be trained in trial workshops, then applied to the case study. In addition, the workshops will contain occasional brief lectures by the professor, or by guest speakers from the software industry.

The current module’s organizational details are described in the ArchiLab (Prof. Bente’s lab) DDD module page.

Learning Material Provided by Lecturer

  • Lectures & guest lectures
  • Literature
  • Case study description

Literature

Here is a selection of sources for further reading. The essential literature for this module is set in bold face.