Domain-driven Design (DDD)

Fachlichkeit im Mittelpunkt der Software und ihrer Entwicklung

Beschreibung:

Das zentrale und kennzeichnende Merkmal einer jeden Software ist ihre Domäne, also ihre Fachlichkeit. Daher ist es essentiell für den Erfolg des Projektes, diese während des gesamten Entwicklungsprozesses in den Mittelpunkt zu stellen.

Domain-driven Design hat genau dies zum Ziel: Hier lernt das gesamte Team (einschließlich der Entwickler) von Anfang an gemeinsam alle relevanten Aspekte der Domäne (und damit der entstehenden Software) kennen. Eine gemeinsame Sprache von Fachbereich und Entwicklern bildet sich dabei fast schon von selbst heraus und wird stetig weiterentwickelt.

Das im Zuge des domänengetriebenen Designs enstandene Modell zeigt üblicherweise abgegrenzte Bereiche im entstehenden Softwaresystem auf, die für die Modularisierung des Codes genutzt werden können. Die Beziehungen zwischen diesen Modulen werden genauso betrachtet wie die Abläufe innerhalb eines Moduls. Zur Implementierung der Module bietet Domain-driven Design eine Reihe von taktischen Patterns an, die je nach Bedarf zum Einsatz kommen können.

Im Kurs werden wir diese Stufen gemeinsam anhand eines größeren Beispiels durchlaufen und nach und nach ein detailliertes Domänenmodell entwickeln. Auch mögliche Vorgehensweisen bei der Implementierung werden wir beleuchten - allerdings nur theoretisch, um den Rahmen des Kurses nicht zu sprengen.

Da nicht jedes Projekt auf der grünen Wiese beginnt, schauen wir uns zum Abschluss des Kurses noch an, wie wir mit bestehenden Codebasen umgehen können und welche Möglichkeiten es gibt, die Domäne aus existierendem (Legacy-)Code herauszuarbeiten und sichtbar zu machen.

Inhalt:

  • Einführung
  • Event Storming - Was passiert eigentlich genau in meiner Domäne?
  • Strategic Design - Wie kann ich die Domäne gut strukturieren?
  • Context Mapping - Was passiert zwischen den einzelnen Teilen?
  • Tactical Design - Wie kann ich die Domäne sinnvoll implementieren?
  • DDD im Legacy Umfeld