TH Köln

Master Digital Sciences

Dokumente zur Akkreditierung des Studiengangs

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

Informationen zur Organisation des Moduls

Modulverantwortung
Prof. Dr. Stefan Bente (Fakultät F10)
Sprache
Englisch
Angeboten im
Wintersemester (Dauer 1 Semester)
Ort
Campus Gummersbach, oder remote
Anzahl Teilnehmer*innen
minimal 5, maximal 20
Vorbedingung
keine
Empfehlung
Familiarity with the software development process
ECTS
6
Aufwand
Gesamtaufwand 180h
Kontaktzeit
48h (12h Vorlesung / 24h Seminar / 12h Projektbetreuung)
Selbstlernzeit
132h (davon 90h eigenständige Projektarbeit)
Prüfung
Semesterbegleitendes Projekt, dokumentiert als wissenschaftliches Papier / Präsentation
Vermittelte Kompetenzen
Develop Visions, Analyze Domains, Model Systems
Beziehung zu globalen Studiengangskriterien
Digitalisierung, Transfer

Beitrag zu Handlungsfeldern

Nachfolgend ist die Zuordnung des Moduls zu den Handlungsfeldern des Studiengangs aufgeführt, und zwar als anteiliger Beitrag (als ECTS und inhaltlich). Dies gibt auch Auskunft über die Verwendbarkeit des Moduls in anderen Studiengängen und über die Beziehung zu anderen Modulen im selben Studiengang.

Handlungsfeld ECTS (anteilig) Modulbeitrag zum Handlungsfeld
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.

Inhaltliche Beschreibung des Moduls

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).

Lehr- und Lernformen

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.

Zur Verfügung gestelltes Lehrmaterial

  • Lectures & guest lectures
  • Literature
  • Case study description

Weiterführende Literatur

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