Avatar vom Dozent:in

Domain-Driven Design of Large Software Systems edit

Modulverantwortlich Prof. Dr. Stefan Bente
Dozent:innen Prof. Dr. Stefan Bente
Kürzel DDD
Sprache Englisch
Kreditpunkte 6
Voraussetzungen nach Prüfungsordnung keine
Empfohlene Voraussetzungen Familiarity with the software development process
Studienleistungen Semesterbegleitendes Projekt, dokumentiert als wissenschaftliches Papier / Präsentation
Level Wahl
Häufigkeit des Angebots jedes Wintersemester
Letzte Aktualisierung 16. Februar 2024

Learning Outcome

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

Modulinhalt

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:

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

Weiterführende Literatur

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

Geförderter Kompetenzerwerb

Das Modul zahlt auf folgende Handlungsfelder und Kompetenzbereiche ein. Eine ausführliche Beschreibung der konkreten Komptenzen finden Sie weiter unten.

Designing for User Experiences

Developing Interactive and Distributed Systems

Exploring Advanced Interactive Media

Driving Creation Process

Designing for User Experiences

  • Anforderungen und Bedarfe

    • Verstehen, wie menschliche Wahrnehmung, Denken und Handeln, Kommunikation und Interaktion funktioniert.

  • Konzepte

    • Haben ein ausgeprägtes konzeptionelles Denkvermögen entwickelt, um komplexe Probleme zu analysieren, innovative Lösungsansätze zu konzipieren und diese in verständliche und erfahrbare Konzepte zu überführen.

    • Können angemessene Informationsarchitekturen entwicklen, evaluieren, iterieren und optimieren.

  • Gestaltung

    • Können visuelle Darstellung und Präsentation komplexer Daten und Informationen für verschiedene Zielgruppen konzipieren und erstellen.

Developing Interactive and Distributed Systems

  • Technologie

    • Wissen was ein Computer ist und wie Software darauf ausgeführt wird.

  • Entwurf

    • Verstehen formale Strukturen.

    • Können abstrahieren, logisch denken und komplexe Zusammenhänge verstehen.

    • Können Aspekte realweltlicher Probleme zu identifizieren, die für eine informatische Modellierung geeignet sind, algorithmische Lösungen für diese (Teil-)Probleme bewerten und selbst so zu entwickeln, dass diese Lösungen mit einem Computer operationalisiert werden können.

    • Konzepte (bspw. Paradigmen, Architekturen, Pattern) für die web-basierte Verteilung von Komponenten (bspw. Frontend/Clients/Apps, Backend/Server/Cloud) für verteilte interaktive Anwendungen kennen und umsetzen können.

  • Implementierung

    • Kennen Entwicklungsumgebungen, Tools und entwicklungsnahe Prozesse und diese praktisch nutzen (insb. IDE, Compiler, Linker, Libraries, Debugging, Unit-Testing, Repositories für eigenen Code / git, Build Tools, Paketmanager).

    • Können (komplexe) Softwaresysteme im Team entwickeln.

    • Kennen Grundkonzepte agiler Entwicklung und agilen Arbeitens wie iterative und inkrementelle Entwicklung, selbstorganisierte Teams, Transparente Kommunikation, etc. und können diese in Projekten anwenden.

Driving Creation Process

  • Innovation

    • Haben die Fähigkeit zur Förderung von Kreativität und Innovation: Schaffen einer unterstützenden Umgebung, das Einbringen Kreativitätstechniken, etc.

    • Kennen verschiedene Geschäftsmodelle und können einschätzen für welche Art von digitalem Produkt und Markt diese anwendbar sind.

  • Management

    • Können erkennen, welche Kompetenzen zur Lösung eines Problems erforderlich sind.

    • Können kreative und agile Prozesse hinsichtlich Zeit- und Ressourcenmanagement effizient durchführen und verwalten.

  • Kommunikation

    • Können effektive und transparente Kommunikation und Zusammenarbeit fördern, Konflikte erkennen, analysieren und lösen.

    • Sind in der Lage Arbeits- und Forschungsergebnisse klar und verständlich in aussagekräftigen, zielgruppengerechten Berichten, Präsentationen o.Ä. zu kommunizieren.

Exploring Advanced Interactive Media

  • Exploration & Kreativität

    • Können Ansätze, Denk- und Vorgehensweisen aus verschiedenen Fachrichtungen nutzen, kombinieren und einsetzen um neue Ideen und Lösungen zu erzeugen.

    • Haben eine offene Fehlerkultur in der Fehler nicht als Endpunkt betrachtet, sondern als Teil des Lernprozesses verstanden und genutzt werden, um Prozesse zu verbessern, zukünftige Fehler zu vermeiden und exploratives Handeln zu fördern.

    • Haben die Fähigkeit zur Selbstreflexion um Handlungen und Entscheidungen evaluieren und iterieren zu können.

Enhancing Interactions on Different Scales

  • Ethik und Gesellschaft

    • Können die Wirkung etablierter und neu entwickelter (interaktiver) Medien auf die Gesellschaft reflektieren und in der eigenen Entwicklung berücksichtigen.

  • Selbstlernen

    • Können sich selbstständig neue Wissens- und Kompetenzbereiche zu Methoden, Technologien oder Domänen erschließen.

In der linken Spalte sehen Sie, welche Kompetenzen für das Modul vorausgesetzt werden (hellgrauer Balken). In der rechten Spalte sehen Sie, welche Kompetenzen Sie mit dem Modul erwerben können (farbiger Balken). Die Kompetenzen sind in Handlungsfelder und Bereiche gegliedert.

Wenn Sie auf den grauen oder farbigen Balken klicken, gelangen Sie zu einer Liste von Modulen, die auf diese Kompetenz einzahlen. Hier finden die eine Übersicht über alle Kompetenzen und die Module, die auf diese einzahlen.

arrow_upward