Domain Driven Design - Strategic Design

81
Domain Driven Design 1 | 80 Projekte. Beratung. Spezialisten. Domain Driven Design Ute May Strategic Design

Transcript of Domain Driven Design - Strategic Design

Domain Driven Design 1 | 80

: Kopiert eine

Hinweis: Es gibt keine 2. Ebene

Klicke mit der Maus an die

Projekte. Beratung. Spezialisten.

Domain Driven Design

Ute May

Strategic Design

Domain Driven Design 2 | 80

: Kopiert eine

Hinweis: Es gibt keine 2. Ebene

Klicke mit der Maus an die

Agenda

Warum Domain Driven Design?

Die Domäne

Modelle und Modellierung

Strategic Design

Fazit

Domain Driven Design 3 | 80

: Kopiert eine

Hinweis: Es gibt keine 2. Ebene

Klicke mit der Maus an die

Agenda

Warum Domain Driven Design?

Die Domäne

Modelle und Modellierung

Strategic Design

Fazit

Warum Domain Driven Design? | Die Domäne | Modelle und Modellierung | Strategic

Design | Fazit | Referenzen

Domain Driven Design 4 | 80

: Kopiert eine

Hinweis: Es gibt keine 2. Ebene

Klicke mit der Maus an die

Was ist Domain Driven Design?

Warum Domain Driven Design?

Warum Domain Driven Design? | Die Domäne | Modelle und Modellierung | Strategic

Design | Fazit | Referenzen

Domain Driven Design 5 | 80

: Kopiert eine

Hinweis: Es gibt keine 2. Ebene

Klicke mit der Maus an die

Was ist Domain Driven Design?

Ein Philosophie-Ansatz für komplexe Software-Projekte

Warum Domain Driven Design?

Warum Domain Driven Design? | Die Domäne | Modelle und Modellierung | Strategic

Design | Fazit | Referenzen

Domain Driven Design 6 | 80

: Kopiert eine

Hinweis: Es gibt keine 2. Ebene

Klicke mit der Maus an die

Was ist Domain Driven Design?

Ein Philosophie-Ansatz für komplexe Software-Projekte

Was macht Software-Projekte komplex?

Warum Domain Driven Design?

Komplexität der

technischen Lösung

Komplexität von

Legacy-Systemen

Komplexität der

Fachdomäne

Warum Domain Driven Design? | Die Domäne | Modelle und Modellierung | Strategic

Design | Fazit | Referenzen

Domain Driven Design 7 | 80

: Kopiert eine

Hinweis: Es gibt keine 2. Ebene

Klicke mit der Maus an die

Warum Domain Driven Design?

Risiken komplexer Software-Projekte

Mangelnde Kenntnis des Fachbereiches

Sprachliche Missverständnisse zwischen Entwicklern und Fachbereich

Erosion der Software (Big Ball of Mud, Spagetticode)

Abhängigkeit von kurzlebiger Technik

Warum Domain Driven Design? | Die Domäne | Modelle und Modellierung | Strategic

Design | Fazit | Referenzen

Domain Driven Design 8 | 80

: Kopiert eine

Hinweis: Es gibt keine 2. Ebene

Klicke mit der Maus an die

Warum Domain Driven Design?

Was macht Software stabil?

Warum Domain Driven Design? | Die Domäne | Modelle und Modellierung | Strategic

Design | Fazit | Referenzen

Domain Driven Design 9 | 80

: Kopiert eine

Hinweis: Es gibt keine 2. Ebene

Klicke mit der Maus an die

Warum Domain Driven Design?

Was macht Software stabil?

Analyse Entwurf Implementierung Test Inbetriebnahme Wartung Weiterentwicklung

Warum Domain Driven Design? | Die Domäne | Modelle und Modellierung | Strategic

Design | Fazit | Referenzen

Domain Driven Design 10 | 80

: Kopiert eine

Hinweis: Es gibt keine 2. Ebene

Klicke mit der Maus an die

Warum Domain Driven Design?

Was macht Software stabil?

Analyse Entwurf Implementierung Test Inbetriebnahme Wartung Weiterentwicklung

Team A Team A+B Team B+C Team D

Warum Domain Driven Design? | Die Domäne | Modelle und Modellierung | Strategic

Design | Fazit | Referenzen

Domain Driven Design 11 | 80

: Kopiert eine

Hinweis: Es gibt keine 2. Ebene

Klicke mit der Maus an die

Warum Domain Driven Design?

Was macht Software stabil?

Analyse Entwurf Implementierung Test Inbetriebnahme Wartung Weiterentwicklung

Team A Team A+B Team B+C Team D

Framework X Framework Y

Warum Domain Driven Design? | Die Domäne | Modelle und Modellierung | Strategic

Design | Fazit | Referenzen

Domain Driven Design 12 | 80

: Kopiert eine

Hinweis: Es gibt keine 2. Ebene

Klicke mit der Maus an die

Warum Domain Driven Design?

Was macht Software stabil?

Analyse Entwurf Implementierung Test Inbetriebnahme Wartung Weiterentwicklung

Team A Team A+B Team B+C Team D

Framework X Framework Y

Infrastruktur (Lösung 1) Infrastruktur (Lösung 2)

Warum Domain Driven Design? | Die Domäne | Modelle und Modellierung | Strategic

Design | Fazit | Referenzen

Domain Driven Design 13 | 80

: Kopiert eine

Hinweis: Es gibt keine 2. Ebene

Klicke mit der Maus an die

Warum Domain Driven Design?

Was macht Software stabil?

Analyse Entwurf Implementierung Test Inbetriebnahme Wartung Weiterentwicklung

Team A Team A+B Team B+C Team D

Framework X Framework Y

Infrastruktur (Lösung 1) Infrastruktur (Lösung 2)

Warum Domain Driven Design? | Die Domäne | Modelle und Modellierung | Strategic

Design | Fazit | Referenzen

Anforderungen Version 1 Anforderungen Version 2 Anforderungen Version 3

Domain Driven Design 14 | 80

: Kopiert eine

Hinweis: Es gibt keine 2. Ebene

Klicke mit der Maus an die

Warum Domain Driven Design?

Was macht Software stabil?

Die fachliche Domäne

Analyse Entwurf Implementierung Test Inbetriebnahme Wartung Weiterentwicklung

Team A Team A+B Team B+C Team D

Framework X Framework Y

Infrastruktur (Lösung 1) Infrastruktur (Lösung 2)

Warum Domain Driven Design? | Die Domäne | Modelle und Modellierung | Strategic

Design | Fazit | Referenzen

Anforderungen Version 1 Anforderungen Version 2 Anforderungen Version 3

Fachliche Domäne

Domain Driven Design 15 | 80

: Kopiert eine

Hinweis: Es gibt keine 2. Ebene

Klicke mit der Maus an die

Warum Domain Driven Design?

Was macht Domain Driven Design aus?

Fokus auf Fachlichkeit

Gemeinsame Erstellung von Modellen durch Domänenexperten und Entwickler

Verwendung einer ubiquitären (= allen bekannten, alles umfassenden) Sprache

Aufteilung von komplexen Zusammenhängen in Bounded Contexts

Kapselung von Fachlichkeit und Technik

Warum Domain Driven Design? | Die Domäne | Modelle und Modellierung | Strategic

Design | Fazit | Referenzen

Domain Driven Design 16 | 80

: Kopiert eine

Hinweis: Es gibt keine 2. Ebene

Klicke mit der Maus an die

Warum Domain Driven Design?

Konsequenzen

Enge Zusammenarbeit von Fachexperten und Entwicklern

Späte Beschäftigung mit Implementierungsdetails

Neue Rolle des Entwicklers

REST

SOAPPerformance

GUIJava

SpringDB

DDD

?Domäne

?

??

?

?

?

EntwicklerEntwickler

Warum Domain Driven Design? | Die Domäne | Modelle und Modellierung | Strategic

Design | Fazit | Referenzen

Domain Driven Design 17 | 80

: Kopiert eine

Hinweis: Es gibt keine 2. Ebene

Klicke mit der Maus an die

Agenda

Warum Domain Driven Design?

Die Domäne

Modelle und Modellierung

Strategic Design

Fazit

Warum Domain Driven Design? | Die Domäne | Modelle und Modellierung | Strategic

Design | Fazit | Referenzen

Domain Driven Design 18 | 80

: Kopiert eine

Hinweis: Es gibt keine 2. Ebene

Klicke mit der Maus an die

Die Domäne

Klassischer Ansatz

GUI DBCode

Business Logik

Domain Driven Design 76

Warum Domain Driven Design? | Die Domäne | Modelle und Modellierung | Strategic

Design | Fazit | Referenzen

Domain Driven Design 19 | 80

: Kopiert eine

Hinweis: Es gibt keine 2. Ebene

Klicke mit der Maus an die

Die Domäne

Klassischer Ansatz

Domain Driven Design

User Interface

Infrastructure

Domain

Application

GUI DBCode

Business Logik

Warum Domain Driven Design? | Die Domäne | Modelle und Modellierung | Strategic

Design | Fazit | Referenzen

Domain Driven Design 20 | 80

: Kopiert eine

Hinweis: Es gibt keine 2. Ebene

Klicke mit der Maus an die

Was ist eine Domäne?

= Fachgebiet, Geschäftsfeld, Einsatzbereich

Die Domäne

A sphere of knowledge, influence, or activity.

The subject area to which the user applies a program is the domain of the software.

Eric Evans

Warum Domain Driven Design? | Die Domäne | Modelle und Modellierung | Strategic

Design | Fazit | Referenzen

Domain Driven Design 21 | 80

: Kopiert eine

Hinweis: Es gibt keine 2. Ebene

Klicke mit der Maus an die

Was ist eine Domäne?

= Fachgebiet, Geschäftsfeld, Einsatzbereich

Was gehört nicht zur Domäne?

Infrastruktur

Persistenz

Eingabe/Ausgabe

Technologische Entscheidungen

Die Domäne

A sphere of knowledge, influence, or activity.

The subject area to which the user applies a program is the domain of the software.

Eric Evans

Warum Domain Driven Design? | Die Domäne | Modelle und Modellierung | Strategic

Design | Fazit | Referenzen

Domain Driven Design 22 | 80

: Kopiert eine

Hinweis: Es gibt keine 2. Ebene

Klicke mit der Maus an die

Die Domäne

Anforderungen

Es gibt festangestellte Mitarbeiter und Freelancer.

Es muss möglich sein, verschiedene Kommunikationswege zu einem Mitarbeiter zu

speichern.

Es muss eine durchsuchbare Projektliste geben.

Es muss eine durchsuchbare Kundenliste geben.

Die Stundenzettel der Mitarbeiter müssen gepflegt werden können.

BEISPIEL Agentursoftware

Warum Domain Driven Design? | Die Domäne | Modelle und Modellierung | Strategic

Design | Fazit | Referenzen

Domain Driven Design 23 | 80

: Kopiert eine

Hinweis: Es gibt keine 2. Ebene

Klicke mit der Maus an die

Die Domäne

Domänenwissen – Crunching Knowledge

Modell System

ubiquitäre Sprache

Fachexperten Entwickler

Fachgebiet

Warum Domain Driven Design? | Die Domäne | Modelle und Modellierung | Strategic

Design | Fazit | Referenzen

Domain Driven Design 24 | 80

: Kopiert eine

Hinweis: Es gibt keine 2. Ebene

Klicke mit der Maus an die

Die Domäne

Domänenwissen – Crunching Knowledge

Fachexperten teilen ihr Wissen über die Domäne.

Entwickler verstehen Zusammenhänge und abstrahieren.

Experten sehen ihr Fachgebiet aus neuem Blickwinkel und gewinnen Klarheit über

Anforderungen.

Entwickler und Fachexperten entwickeln gemeinsam die ubiquitäre Sprache.

Entwickler und Fachexperten erstellen gemeinsam ein Domänenmodell.

Warum Domain Driven Design? | Die Domäne | Modelle und Modellierung | Strategic

Design | Fazit | Referenzen

Domain Driven Design 25 | 80

: Kopiert eine

Hinweis: Es gibt keine 2. Ebene

Klicke mit der Maus an die

Die ubiquitäre Sprache

Ubiquitär = „allumfassend, überall vorhanden“

1. Jeder im Projekt muss die Sprache sprechen und verstehen können.

2. Alle relevanten Sachverhalte müssen sich durch die Sprache beschreiben lassen.

Eine Sprache ist mehr als ein Glossar!

Die Domäne

To create a supple, knowledge-rich design calls for a versatile, shared team language and a lively

experimentation with [that language].

Eric Evans

Warum Domain Driven Design? | Die Domäne | Modelle und Modellierung | Strategic

Design | Fazit | Referenzen

Domain Driven Design 26 | 80

: Kopiert eine

Hinweis: Es gibt keine 2. Ebene

Klicke mit der Maus an die

Die Domäne

Mitarbeiter =

Festangestellter

Mitarbeiter =

Festangestellte +

Freelancer

Projekte =

Kundenprojekte

Projekte =

Kundenprojekte

+ interne Projekte

Kontakt = Person =

Mitarbeiter oder

Kundenmitarbeiter

Festangestellte =

Angestellte <>

Geschäftsführung

Warum Domain Driven Design? | Die Domäne | Modelle und Modellierung | Strategic

Design | Fazit | Referenzen

BEISPIEL Agentursoftware

Domain Driven Design 27 | 80

: Kopiert eine

Hinweis: Es gibt keine 2. Ebene

Klicke mit der Maus an die

Die ubiquitäre Sprache

Die Domäne

CodeTests

DokumentationDiskussionen

Fachkonzept

Ubiquitäre Sprache

Entwickler Fachexperten Analysten Tester

Warum Domain Driven Design? | Die Domäne | Modelle und Modellierung | Strategic

Design | Fazit | Referenzen

Domain Driven Design 28 | 80

: Kopiert eine

Hinweis: Es gibt keine 2. Ebene

Klicke mit der Maus an die

Die Domäne

Mitarbeiter

FestangestellteFreelancer

Gehalt

Kunde

Projekt

Leistung

Stundenzettel

Honorar

Vertrag Kommunikations

-weg

Email Telefon AdresseMobil

Urlaub

Kunden-

projekt

Internes

Projekt

Abwesenheit

Provision

CRM

Warum Domain Driven Design? | Die Domäne | Modelle und Modellierung | Strategic

Design | Fazit | Referenzen

BEISPIEL Agentursoftware

Domain Driven Design 29 | 80

: Kopiert eine

Hinweis: Es gibt keine 2. Ebene

Klicke mit der Maus an die

Agenda

Warum Domain Driven Design?

Die Domäne

Modelle und Modellierung

Strategic Design

Fazit

Warum Domain Driven Design? | Die Domäne | Modelle und Modellierung | Strategic

Design | Fazit | Referenzen

Domain Driven Design 30 | 80

: Kopiert eine

Hinweis: Es gibt keine 2. Ebene

Klicke mit der Maus an die

Modelle und Modellierung

Was ist ein Modell?

A model is a distillation of knowledge.

Ein Modell stellt Informationen übersichtlich und verständlich dar.

Ein Modell trennt relevante von irrelevanten Informationen.

Ein Modell setzt Informationen zueinander in Beziehung.

Ein Modell hat immer ein bestimmtes Ziel.

Domäne ModellProjektion

Eric Evans

Warum Domain Driven Design? | Die Domäne | Modelle und Modellierung | Strategic

Design | Fazit | Referenzen

Domain Driven Design 31 | 80

: Kopiert eine

Hinweis: Es gibt keine 2. Ebene

Klicke mit der Maus an die

Modelle und Modellierung

Ziel des Domänenmodells

Erzeugt einheitliches Domänenverständnis

Dient als Basis für die Implementierung

Ein Klassendiagramm ist noch kein Domänenmodell!

Tightly relating the code to an underlying model gives the code meaning and makes the model relevant.

Eric Evans

Warum Domain Driven Design? | Die Domäne | Modelle und Modellierung | Strategic

Design | Fazit | Referenzen

Domain Driven Design 32 | 80

: Kopiert eine

Hinweis: Es gibt keine 2. Ebene

Klicke mit der Maus an die

Modelle und Modellierung

Ziel des Domänenmodells

Erzeugt einheitliches Domänenverständnis

Dient als Basis für die Implementierung

Tightly relating the code to an underlying model gives the code meaning and makes the model relevant.

Eric Evans

DomäneModell

Projektion

Reflektion

Konzeption

Revision

System

Warum Domain Driven Design? | Die Domäne | Modelle und Modellierung | Strategic

Design | Fazit | Referenzen

Domain Driven Design 33 | 80

: Kopiert eine

Hinweis: Es gibt keine 2. Ebene

Klicke mit der Maus an die

Modelle und Modellierung

Modellierung

1. Modell und Implementierung gehören zusammen und beeinflussen sich

gegenseitig.

2. Das Modell legt die gemeinsame Sprache von Entwicklern und Fachexperten fest.

3. Das Modell enthält nicht nur Informationen über Klassen und Objekte, sondern

auch über Verhalten, Beziehungen und Regeln

4. Das Modell filtert relevante Informationen zum Domänenverständnis.

5. Das Modell wächst und entwickelt sich durch Diskussionen und Ausprobieren.

Warum Domain Driven Design? | Die Domäne | Modelle und Modellierung | Strategic

Design | Fazit | Referenzen

Domain Driven Design 34 | 80

: Kopiert eine

Hinweis: Es gibt keine 2. Ebene

Klicke mit der Maus an die

Modelle und Modellierung

Mitarbeiter

FestangestellteFreelancer

Gehalt

Kunde

Projekt

Leistung

Stundenzettel

Honorar

Vertrag Kommunikations

-weg

Email Telefon AdresseMobil

Urlaub

Kunden-

projekt

Internes

Projekt

Abwesenheit

Provision

CRM

Warum Domain Driven Design? | Die Domäne | Modelle und Modellierung | Strategic

Design | Fazit | Referenzen

BEISPIEL Agentursoftware

Domain Driven Design 35 | 80

: Kopiert eine

Hinweis: Es gibt keine 2. Ebene

Klicke mit der Maus an die

Modelle und Modellierung

Mitarbeiter

FestangestellteFreelancer

Gehalt

Kunde

Projekt

Leistung

Stundenzettel

Honorar

Vertrag Kommunikations

-weg

Email Telefon AdresseMobil

Urlaub

Kunden-

projekt

Internes

Projekt

Abwesenheit

Provision

CRM

erbringt

ist zugeordnet

ist entweder oder

ist entweder

oder

Warum Domain Driven Design? | Die Domäne | Modelle und Modellierung | Strategic

Design | Fazit | Referenzen

BEISPIEL Agentursoftware

Domain Driven Design 36 | 80

: Kopiert eine

Hinweis: Es gibt keine 2. Ebene

Klicke mit der Maus an die

Modelle und Modellierung

Mitarbeiter

FestangestellteFreelancer

Gehalt

Kunde

Projekt

Leistung

Stundenzettel

Honorar

Vertrag Kommunikations

-weg

Email Telefon AdresseMobil

Urlaub

Kunden-

projekt

Internes

Projekt

Abwesenheit

Provision

CRM

ist entweder

oder

erbringt

ist zugeordnet

wird gebucht auf

ist entweder oder

erhält

schließterhälterhält

Warum Domain Driven Design? | Die Domäne | Modelle und Modellierung | Strategic

Design | Fazit | Referenzen

BEISPIEL Agentursoftware

Domain Driven Design 37 | 80

: Kopiert eine

Hinweis: Es gibt keine 2. Ebene

Klicke mit der Maus an die

Modelle und Modellierung

Mitarbeiter

FestangestellteFreelancer

Gehalt

Kunde

Projekt

Leistung

Stundenzettel

Honorar

Vertrag Kommunikations

-weg

Email Telefon AdresseMobil

Urlaub

Kunden-

projekt

Internes

Projekt

Abwesenheit

Provision

CRM

ist entweder

oder

ist zugeordnet

erbringt

ist zugeordnet

wird gebucht auf

ist entweder oder

erhält

schließterhält

beantragt

teilt mit

ist erreichbar über

ist zugeordnet

wird verwaltet im

erhält

Warum Domain Driven Design? | Die Domäne | Modelle und Modellierung | Strategic

Design | Fazit | Referenzen

BEISPIEL Agentursoftware

Domain Driven Design 38 | 80

: Kopiert eine

Hinweis: Es gibt keine 2. Ebene

Klicke mit der Maus an die

Agenda

Warum Domain Driven Design?

Die Domäne

Modelle und Modellierung

Strategic Design

Fazit

Warum Domain Driven Design? | Die Domäne | Modelle und Modellierung | Strategic

Design | Fazit | Referenzen

Domain Driven Design 39 | 80

: Kopiert eine

Hinweis: Es gibt keine 2. Ebene

Klicke mit der Maus an die

Warum Strategic Design?

Strategic Design

[Strategic Design] lays out techniques for recognizing, communicating and choosing the limits of a model and its relationships to others.

Eric Evans

Warum Domain Driven Design? | Die Domäne | Modelle und Modellierung | Strategic

Design | Fazit | Referenzen

Domain Driven Design 40 | 80

: Kopiert eine

Hinweis: Es gibt keine 2. Ebene

Klicke mit der Maus an die

Warum Strategic Design?

Aufteilung und Priorisierung des Modells

Überblick über komplexe und umfangreiche Systeme

Abwägung und Kommunikation von Modellteilen, die in sich abgeschlossen sind

Team-Entscheidungen, Vermeidung von „unsachgemäßem Gebrauch“ von Code

Definition von Beziehungen zwischen Bounded Contexts

Klarheit über Aufgaben und Rechte der Teams, verbesserte Wartbarkeit und

Erweiterbarkeit

Strategic Design

[Strategic Design] lays out techniques for recognizing, communicating and choosing the limits of a model and its relationships to others.

Eric Evans

Warum Domain Driven Design? | Die Domäne | Modelle und Modellierung | Strategic

Design | Fazit | Referenzen

Domain Driven Design 41 | 80

: Kopiert eine

Hinweis: Es gibt keine 2. Ebene

Klicke mit der Maus an die

Strategic Design

Distillation – Extract the Essence

Core

Domain

Generic

Subdomains

Supporting

Subdomains

1. Warum wird das

System gebraucht?

2. Warum genügt keine

Standardlösung?

3. Warum kann man

diesen Teil nicht

outsourcen?

Domain Vision Statement

Warum Domain Driven Design? | Die Domäne | Modelle und Modellierung | Strategic

Design | Fazit | Referenzen

Domain Driven Design 42 | 80

: Kopiert eine

Hinweis: Es gibt keine 2. Ebene

Klicke mit der Maus an die

Strategic Design

Distillation

Hilft allen im Team des Gesamtbild und die Priorisierung zu verstehen

Vereinfacht die Kommunikation durch Identifikation eines zentralen, gut

überschaubaren Einstiegspunktes in die ubiquitäre Sprache

Hilft beim Refactoring

Fokussiert die Arbeit auf den Teil, der den meisten Nutzen bringt

Hilft bei Entscheidungen zu Outsourcing, Standardkomponenten und

Arbeitsaufteilung

Warum Domain Driven Design? | Die Domäne | Modelle und Modellierung | Strategic

Design | Fazit | Referenzen

Domain Driven Design 43 | 80

: Kopiert eine

Hinweis: Es gibt keine 2. Ebene

Klicke mit der Maus an die

Strategic Design

Mitarbeiter

FestangestellteFreelancer

Gehalt

Kunde

Projekt

Leistung

Stundenzettel

Honorar

Vertrag Kommunikations

-weg

Email Telefon AdresseMobil

Urlaub

Kunden-

projekt

Internes

Projekt

Abwesenheit

Provision

CRM

ist entweder

oder

ist zugeordnet

erbringt

ist zugeordnet

wird gebucht auf

ist entweder oder

erhält

schließterhält

beantragt

teilt mit

ist erreichbar über

ist zugeordnet

wird verwaltet im

erhält

Warum Domain Driven Design? | Die Domäne | Modelle und Modellierung | Strategic

Design | Fazit | Referenzen

BEISPIEL Agentursoftware

Domain Driven Design 44 | 80

: Kopiert eine

Hinweis: Es gibt keine 2. Ebene

Klicke mit der Maus an die

erhälterhält

erbringt

teilt mit

Strategic Design

Mitarbeiter

FestangestellteFreelancer

Gehalt

Kunde

Projekt

Leistung

Stundenzettel

Honorar

Vertrag Kommunikations

-weg

Email Telefon AdresseMobil

Urlaub

Kunden-

projekt

Internes

Projekt

Abwesenheit

Provision

CRM

ist entweder

oder

ist zugeordnet

ist zugeordnet

wird gebucht auf

ist entweder oder

erhält

schließt

beantragt

ist erreichbar über

ist zugeordnet

Mitarbeiter

wird verwaltet im

Warum Domain Driven Design? | Die Domäne | Modelle und Modellierung | Strategic

Design | Fazit | Referenzen

BEISPIEL Agentursoftware

Domain Driven Design 45 | 80

: Kopiert eine

Hinweis: Es gibt keine 2. Ebene

Klicke mit der Maus an die

erbringt

teilt mitwird verwaltet im

Strategic Design

Mitarbeiter

FestangestellteFreelancer

Gehalt

Kunde

Projekt

Leistung

Stundenzettel

Honorar

Vertrag Kommunikations

-weg

Email Telefon AdresseMobil

Urlaub

Kunden-

projekt

Internes

Projekt

Abwesenheit

Provision

CRM

ist entweder

oder

ist zugeordnet

ist zugeordnet

wird gebucht auf

ist entweder oder

erhält

schließt

erhält

beantragt

ist erreichbar über

ist zugeordnet

erhält

Projekte

Mitarbeiter

Warum Domain Driven Design? | Die Domäne | Modelle und Modellierung | Strategic

Design | Fazit | Referenzen

BEISPIEL Agentursoftware

Domain Driven Design 46 | 80

: Kopiert eine

Hinweis: Es gibt keine 2. Ebene

Klicke mit der Maus an die

erbringt

teilt mitwird verwaltet im

Strategic Design

Mitarbeiter

FestangestellteFreelancer

Gehalt

Kunde

Projekt

Leistung

Stundenzettel

Honorar

Vertrag Kommunikations

-weg

Email Telefon AdresseMobil

Urlaub

Kunden-

projekt

Internes

Projekt

Abwesenheit

Provision

CRM

ist entweder

oder

ist zugeordnet

ist zugeordnet

wird gebucht auf

ist entweder oder

erhält

schließt

erhält

beantragt

ist erreichbar über

ist zugeordnet

erhält

Projekte

KundenMitarbeiter

Warum Domain Driven Design? | Die Domäne | Modelle und Modellierung | Strategic

Design | Fazit | Referenzen

BEISPIEL Agentursoftware

Domain Driven Design 47 | 80

: Kopiert eine

Hinweis: Es gibt keine 2. Ebene

Klicke mit der Maus an die

erbringt

teilt mitwird verwaltet im

Strategic Design

Mitarbeiter

FestangestellteFreelancer

Gehalt

Kunde

Projekt

Leistung

Stundenzettel

Honorar

Vertrag Kommunikations

-weg

Email Telefon AdresseMobil

Urlaub

Kunden-

projekt

Internes

Projekt

Abwesenheit

Provision

CRM

ist entweder

oder

ist zugeordnet

ist zugeordnet

wird gebucht auf

ist entweder oder

erhält

schließt

erhält

beantragt

ist erreichbar über

ist zugeordnet

erhält

Projekte

Kunden LeistungenMitarbeiter

Warum Domain Driven Design? | Die Domäne | Modelle und Modellierung | Strategic

Design | Fazit | Referenzen

BEISPIEL Agentursoftware

Domain Driven Design 48 | 80

: Kopiert eine

Hinweis: Es gibt keine 2. Ebene

Klicke mit der Maus an die

erbringt

teilt mitwird verwaltet im

Strategic Design

Mitarbeiter

FestangestellteFreelancer

Gehalt

Kunde

Projekt

Leistung

Stundenzettel

Honorar

Vertrag Kommunikations

-weg

Email Telefon AdresseMobil

Urlaub

Kunden-

projekt

Internes

Projekt

Abwesenheit

Provision

CRM

ist entweder

oder

ist zugeordnet

ist zugeordnet

wird gebucht auf

ist entweder oder

erhält

schließt

erhält

beantragt

ist erreichbar über

ist zugeordnet

erhält

Projekte

Kunden Leistungen

Buchhaltung

Mitarbeiter

Warum Domain Driven Design? | Die Domäne | Modelle und Modellierung | Strategic

Design | Fazit | Referenzen

BEISPIEL Agentursoftware

Domain Driven Design 49 | 80

: Kopiert eine

Hinweis: Es gibt keine 2. Ebene

Klicke mit der Maus an die

Strategic Design

Problemraum und Lösungsraum

ModellDomäne Projektion

Warum Domain Driven Design? | Die Domäne | Modelle und Modellierung | Strategic

Design | Fazit | Referenzen

Domain Driven Design 50 | 80

: Kopiert eine

Hinweis: Es gibt keine 2. Ebene

Klicke mit der Maus an die

Strategic Design

Problemraum und Lösungsraum

Domain Domain Model

Problem Space Solution Space

Subdomain Bounded Context(keine 1:1-Zuordnung!)

ModellDomäne Projektion

Warum Domain Driven Design? | Die Domäne | Modelle und Modellierung | Strategic

Design | Fazit | Referenzen

Domain Driven Design 51 | 80

: Kopiert eine

Hinweis: Es gibt keine 2. Ebene

Klicke mit der Maus an die

Strategic Design

Was ist ein Bounded Context?

Eine abgeschlossene Einheit im Gesamtkontext

Wird von einem Team entwickelt

Steht in Relation zu anderen Bounded Contexts

Bounded

Context Schnittstellen

Warum Domain Driven Design? | Die Domäne | Modelle und Modellierung | Strategic

Design | Fazit | Referenzen

Domain Driven Design 52 | 80

: Kopiert eine

Hinweis: Es gibt keine 2. Ebene

Klicke mit der Maus an die

Strategic Design

Wie werden Bounded Contexts definiert?

Vorteile großer Bounded Contexts

Größeres einheitliches Modell

Einfachere Aufgabenverteilung

Weniger schwierige Übersetzung

zwischen Modellen

Klarere Kommunikation im

gesamten Team durch

gemeinsame ubiquitäre Sprache

Vorteile kleiner Bounded Contexts

Reduzierter Kommunikations-

Overhead in jedem Team

Kleinere Code-Basis

Vereinfachte Continuous

Integration

Einfachere Umsetzung sehr

spezieller Anforderungen

Warum Domain Driven Design? | Die Domäne | Modelle und Modellierung | Strategic

Design | Fazit | Referenzen

Domain Driven Design 53 | 80

: Kopiert eine

Hinweis: Es gibt keine 2. Ebene

Klicke mit der Maus an die

Strategic Design

Context Map

Bounded

ContextBounded

Context

Core

DomainBounded

Context

Bounded

Context

Bounded

Context

Bounded

ContextBounded

Context

Warum Domain Driven Design? | Die Domäne | Modelle und Modellierung | Strategic

Design | Fazit | Referenzen

Domain Driven Design 54 | 80

: Kopiert eine

Hinweis: Es gibt keine 2. Ebene

Klicke mit der Maus an die

Context Map

Gesamtüberblick des Systems

Berücksichtigung von Legacy-Systemen

Priorisierung von Bounded Contexts

Identifikation von Beziehungen zwischen Bounded Contexts

Strategic Design

A context map is the overlap between project management and software design.

Eric Evans

Warum Domain Driven Design? | Die Domäne | Modelle und Modellierung | Strategic

Design | Fazit | Referenzen

Domain Driven Design 55 | 80

: Kopiert eine

Hinweis: Es gibt keine 2. Ebene

Klicke mit der Maus an die

Strategic Design

Projekte

Kunden Leistungen

Buchhaltung

Mitarbeiter

Warum Domain Driven Design? | Die Domäne | Modelle und Modellierung | Strategic

Design | Fazit | Referenzen

BEISPIEL AgentursoftwareBEISPIEL Agentursoftware

Domain Driven Design 56 | 80

: Kopiert eine

Hinweis: Es gibt keine 2. Ebene

Klicke mit der Maus an die

Strategic Design

Leistungen

Mitarbeiter

Interne

Projekte

Kunden-

projekte

LeistungenMitarbeiterKunden

Buchhaltung

CRM

Warum Domain Driven Design? | Die Domäne | Modelle und Modellierung | Strategic

Design | Fazit | Referenzen

BEISPIEL Agentursoftware

Domain Driven Design 57 | 80

: Kopiert eine

Hinweis: Es gibt keine 2. Ebene

Klicke mit der Maus an die

Strategic Design

Beziehungen zwischen Bounded Contexts

Kontextgrenzen(besonders sorgfältig

definieren und testen!)

Bounded

ContextBounded

Context

Team A Team B

Warum Domain Driven Design? | Die Domäne | Modelle und Modellierung | Strategic

Design | Fazit | Referenzen

Domain Driven Design 58 | 80

: Kopiert eine

Hinweis: Es gibt keine 2. Ebene

Klicke mit der Maus an die

Warum sind die Beziehungen zwischen Bounded Contexts wichtig?

Bessere Organisation der Teams

Weniger Abstimmungsprobleme

Klarer definierte Zuständigkeiten

Besonderer Fokus auf Schnittstellen

Strategic Design

Describe the points of contact between the models, outlining the explicit translation for any

communication and highlighting any sharing.

Eric Evans

Warum Domain Driven Design? | Die Domäne | Modelle und Modellierung | Strategic

Design | Fazit | Referenzen

Domain Driven Design 59 | 80

: Kopiert eine

Hinweis: Es gibt keine 2. Ebene

Klicke mit der Maus an die

Strategic Design Patterns

Strategic Design

Shared

Kernel

Anticorruption

Layer

ConformistCustomer/

Supplier

Separate WaysOpen Host

Service

Warum Domain Driven Design? | Die Domäne | Modelle und Modellierung | Strategic

Design | Fazit | Referenzen

Domain Driven Design 60 | 80

: Kopiert eine

Hinweis: Es gibt keine 2. Ebene

Klicke mit der Maus an die

Strategic Design

Shared Kernel

Teile des Codes oder der Infrastruktur werden geteilt.

Änderungen müssen mit dem anderen Team abgesprochen werden.

Der gemeinsame Teil wird besonders sorgfältig von beiden Teams getestet.

Bounded

Context

Bounded

Context

Warum Domain Driven Design? | Die Domäne | Modelle und Modellierung | Strategic

Design | Fazit | Referenzen

Domain Driven Design 61 | 80

: Kopiert eine

Hinweis: Es gibt keine 2. Ebene

Klicke mit der Maus an die

Strategic Design

Mitarbeiter Kunden

Warum Domain Driven Design? | Die Domäne | Modelle und Modellierung | Strategic

Design | Fazit | Referenzen

BEISPIEL Agentursoftware

Domain Driven Design 62 | 80

: Kopiert eine

Hinweis: Es gibt keine 2. Ebene

Klicke mit der Maus an die

Strategic Design

Customer/Supplier development teams

Das Supplier-Team entwickelt unabhängig, stellt aber dem Customer-Team alle

relevanten Schnittstellen und Services zur Verfügung.

Das Customer-Team hat ein Veto-Recht.

Gemeinsame Akzeptanztests schließen ungewollte Auswirkungen aus.

Veto

Supplier Customer

Bounded

Context

Bounded

Context

Warum Domain Driven Design? | Die Domäne | Modelle und Modellierung | Strategic

Design | Fazit | Referenzen

Domain Driven Design 63 | 80

: Kopiert eine

Hinweis: Es gibt keine 2. Ebene

Klicke mit der Maus an die

Strategic Design

Veto

Supplier Customer

MitarbeiterLeistungen

Warum Domain Driven Design? | Die Domäne | Modelle und Modellierung | Strategic

Design | Fazit | Referenzen

BEISPIEL Agentursoftware

Domain Driven Design 64 | 80

: Kopiert eine

Hinweis: Es gibt keine 2. Ebene

Klicke mit der Maus an die

Strategic Design

Conformist

Ein Bounded Context wird an einen anderen angelehnt.

Design-Entscheidungen werden übernommen.

Besonders empfehlenswert bei Legacy-Systemen oder bei Entwicklung in

verschiedenen Abteilungen/Hierarchiestufen.

Bounded

Context

Bounded

ContextConform

Modeling

Warum Domain Driven Design? | Die Domäne | Modelle und Modellierung | Strategic

Design | Fazit | Referenzen

Domain Driven Design 65 | 80

: Kopiert eine

Hinweis: Es gibt keine 2. Ebene

Klicke mit der Maus an die

Strategic Design

Interne

Projekte

Kunden-

projekteConform

Modeling

Warum Domain Driven Design? | Die Domäne | Modelle und Modellierung | Strategic

Design | Fazit | Referenzen

BEISPIEL Agentursoftware

Domain Driven Design 66 | 80

: Kopiert eine

Hinweis: Es gibt keine 2. Ebene

Klicke mit der Maus an die

Translation

Bounded

Context

Bounded

Context

Strategic Design

Anticorruption Layer

Eine klar definierte Schnittstelle sichert den Datenaustausch.

Ermöglicht gemeinsame Nutzung von Informationen, wenn ein Shared-Kernel-

Pattern nicht möglich ist.

Besonders empfehlenswert bei Legacy-Systemen

Warum Domain Driven Design? | Die Domäne | Modelle und Modellierung | Strategic

Design | Fazit | Referenzen

Domain Driven Design 67 | 80

: Kopiert eine

Hinweis: Es gibt keine 2. Ebene

Klicke mit der Maus an die

Strategic Design

Translation

KundenVorhandenes

CRM

Warum Domain Driven Design? | Die Domäne | Modelle und Modellierung | Strategic

Design | Fazit | Referenzen

BEISPIEL Agentursoftware

Domain Driven Design 68 | 80

: Kopiert eine

Hinweis: Es gibt keine 2. Ebene

Klicke mit der Maus an die

Strategic Design

Separate Ways

Keine Abhängigkeiten

Keine gemeinsamen Code-Teile oder Infrastruktur

Vorteilhaft für sehr spezialisierte Lösungen

Bounded

Context

Bounded

Context

Warum Domain Driven Design? | Die Domäne | Modelle und Modellierung | Strategic

Design | Fazit | Referenzen

Domain Driven Design 69 | 80

: Kopiert eine

Hinweis: Es gibt keine 2. Ebene

Klicke mit der Maus an die

Strategic Design

MitarbeiterVorhandenes

CRM

Warum Domain Driven Design? | Die Domäne | Modelle und Modellierung | Strategic

Design | Fazit | Referenzen

BEISPIEL Agentursoftware

Domain Driven Design 70 | 80

: Kopiert eine

Hinweis: Es gibt keine 2. Ebene

Klicke mit der Maus an die

Open Host Service

Ein Bounded Context definiert Services, die Zugang zum System geben.

Besonders empfehlenswert, wenn viele Schnittstellen definiert werden müssen

Strategic Design

Bounded

Context

Bounded

Context

Bounded

Context

Warum Domain Driven Design? | Die Domäne | Modelle und Modellierung | Strategic

Design | Fazit | Referenzen

Domain Driven Design 71 | 80

: Kopiert eine

Hinweis: Es gibt keine 2. Ebene

Klicke mit der Maus an die

Strategic Design

Leistungen

Kunden-

projekte

Mitarbeiter

Warum Domain Driven Design? | Die Domäne | Modelle und Modellierung | Strategic

Design | Fazit | Referenzen

BEISPIEL Agentursoftware

Domain Driven Design 72 | 80

: Kopiert eine

Hinweis: Es gibt keine 2. Ebene

Klicke mit der Maus an die

Strategic Design Patterns

Strategic Design

Shared

Kernel

Anticorruption

Layer

ConformistCustomer/

Supplier

Separate WaysOpen Host

Service

Warum Domain Driven Design? | Die Domäne | Modelle und Modellierung | Strategic

Design | Fazit | Referenzen

Domain Driven Design 73 | 80

: Kopiert eine

Hinweis: Es gibt keine 2. Ebene

Klicke mit der Maus an die

Strategic Design Patterns

Strategic Design

Shared

Kernel

Anticorruption

Layer

Conformist

Customer/

Supplier

Separate Ways

Open Host

Service

Ko

ntr

olle ü

ber

verb

un

den

e S

yst

em

e

Kommunikationsaufwand / Teamqualität

Single

Bounded

Context

Warum Domain Driven Design? | Die Domäne | Modelle und Modellierung | Strategic

Design | Fazit | Referenzen

Domain Driven Design 74 | 80

: Kopiert eine

Hinweis: Es gibt keine 2. Ebene

Klicke mit der Maus an die

Strategic Design

Leistungen

Mitarbeiter

Interne

Projekte

Kunden-

projekte

LeistungenMitarbeiterKunden

Buchhaltung

CRM

Warum Domain Driven Design? | Die Domäne | Modelle und Modellierung | Strategic

Design | Fazit | Referenzen

BEISPIEL Agentursoftware

Domain Driven Design 75 | 80

: Kopiert eine

Hinweis: Es gibt keine 2. Ebene

Klicke mit der Maus an die

Strategic Design

Leistungen

Mitarbeiter

Interne

Projekte

Kunden-

projekte

LeistungenMitarbeiterKunden

Buchhaltung

CRM

Warum Domain Driven Design? | Die Domäne | Modelle und Modellierung | Strategic

Design | Fazit | Referenzen

BEISPIEL Agentursoftware

Domain Driven Design 76 | 80

: Kopiert eine

Hinweis: Es gibt keine 2. Ebene

Klicke mit der Maus an die

Agenda

Warum Domain Driven Design?

Die Domäne

Modelle und Modellierung

Strategic Design

Fazit

Warum Domain Driven Design? | Die Domäne | Modelle und Modellierung | Strategic

Design | Fazit | Referenzen

Domain Driven Design 77 | 80

: Kopiert eine

Hinweis: Es gibt keine 2. Ebene

Klicke mit der Maus an die

Fazit

DDD wirkt als Stabilisierungsfaktor in komplexen Softwareprojekten.

Die ubiquitäre Sprache sorgt für ein gemeinsames Domänenverständnis.

Das Domänenmodell ist unmittelbare Basis für die Entwicklung und bleibt

eng mit dem Code gekoppelt.

Priorisierungen werden durch Distillation für alle nachvollziehbar.

Bounded Contexts helfen bei der Definition von abgeschlossenen

Systemteilen und ihren Beziehungen untereinander.

Warum Domain Driven Design? | Die Domäne | Modelle und Modellierung | Strategic

Design | Fazit | Referenzen

Domain Driven Design 78 | 80

: Kopiert eine

Hinweis: Es gibt keine 2. Ebene

Klicke mit der Maus an die

DDD wirkt als Stabilisierungsfaktor in komplexen Softwareprojekten.

Die ubiquitäre Sprache sorgt für ein gemeinsames Domänenverständnis.

Das Domänenmodell ist unmittelbare Basis für die Entwicklung und bleibt

eng mit dem Code gekoppelt.

Priorisierungen werden durch Distillation für alle nachvollziehbar.

Bounded Contexts helfen bei der Definition von abgeschlossenen

Systemteilen und ihren Beziehungen untereinander.

Fazit

1. For most software projects, the primary focus should be on the domain and domain logic.

2. Complex domain designs should be based on a model.

Domain Driven Design

Eric Evans

76

Warum Domain Driven Design? | Die Domäne | Modelle und Modellierung | Strategic

Design | Fazit | Referenzen

Domain Driven Design 79 | 80

: Kopiert eine

Hinweis: Es gibt keine 2. Ebene

Klicke mit der Maus an die

Referenzen

Evans, Eric: Domain-driven Design - Tackling Complexity in the Heart of Software. 1. Aufl.. Boston: Addison-Wesley Professional, 2004.

Avram, Abel ; Marinescu, Floyd: Domain-Driven Design Quickly. Raleigh, North Carolina: Lulu.com, 2007.

Evans, Eric: Domain-Driven Design Reference : Definitions and Pattern Summaries. Indianapolis: Dog Ear Publishing, 2014.

Vernon, Vaughn: Implementing Domain-Driven Design. 1. Aufl.. Amsterdam: Addison-Wesley, 2013.

Millett, Scott ; Tune, Nick: Patterns, Principles, and Practices of Domain-Driven Design. New York: John Wiley & Sons, 2015.

Domain Driven Design Examplehttps://www.mirkosertic.de/blog/2013/04/domain-driven-design-example/

Sub-domains and Bounded Contexts in Domain-Driven Designhttp://gorodinski.com/blog/2013/04/29/sub-domains-and-bounded-contexts-in-domain-driven-design-ddd/

DDD: Strategic Design: Core, Supporting, and Generic Subdomains http://blog.jonathanoliver.com/ddd-strategic-design-core-supporting-and-generic-subdomains/

Domain Driven Design 101https://www.slideshare.net/rdingwall/domain-driven-design-101

DDD in practicehttps://www.infoq.com/articles/ddd-in-practice

Warum Domain Driven Design? | Die Domäne | Modelle und Modellierung | Strategic

Design | Fazit | Referenzen

Domain Driven Design 80 | 80

: Kopiert eine

Hinweis: Es gibt keine 2. Ebene

Klicke mit der Maus an die

Impulsvorträge für Ihr Unternehmen

Überblick über das gesamte Angebot an Impulsvorträgen unter:

www.iks-gmbh.com/impulsvortraege

Ihr Nutzen:

Unabhängiges, aktuelles Expertenwissen.

Individuell auf Ihr Publikum und Ihr Unternehmen zugeschnittene Vorträge.

Referenten mit langjähriger und branchenübergreifender Expertise in der IT-

Beratung.

Praxisnahe Vorträge, die aus Projektarbeit entstanden sind, frei von

Produktwerbung.

Ideale Ergänzung für Ihre Führungskräftetreffen, Abteilungsmeetings, Hausmessen,

Innovation Days, Konferenzen, Open Spaces, Kick-off-Meetings oder

Zukunftsworkshops.

WWW.IKS-GMBH.COM