Transcript
Page 1: DDD - Domain Driven Design - TYPO3camp Stuttgart 2011

(c) 2011 - typovision* | Domain-driven Design | Patrick Lobacher | www.typovision.de | 22.05.2011

DOMAIN-DRIVEN DESIGN

Modernes Softwaredesign

22.05.2011

Patrick Lobacher (GF typovision*)

Page 2: DDD - Domain Driven Design - TYPO3camp Stuttgart 2011

(c) 2011 - typovision* | Domain-driven Design | Patrick Lobacher | www.typovision.de | 22.05.2011

ÜBER PATRICK LOBACHER• Patrick Lobacher (geb. Schuster) - GF typovision*

• 40 Jahre alt, verheiratet, wohnhaft in München

• Autor von 6 Fachbüchern und 26 Fachartikeln zum Thema TYPO3 und Webentwicklung

• Certified TYPO3 Integrator seit 2009

• Mitglied in den TYPO3 Core-Teams: Certification & Documentation

• Mitveranstalter des TYPO3camp München

• Speaker auf nationalen und internationalen Kongressen

• Dozent für führende Schulungsinstitute und die MVHS

2

Page 3: DDD - Domain Driven Design - TYPO3camp Stuttgart 2011

(c) 2011 - typovision* | Domain-driven Design | Patrick Lobacher | www.typovision.de | 22.05.2011

ÜBER TYPOVISION*

3

• Münchner Fullservice-Agentur für digitale Kommunikation• 9 Mitarbeiter (+ 8 aus festem Freelancer Pool)• Geschäftsführer: Patrick Lobacher• Spezialisiert auf TYPO3 seit 8 Jahren (Extbase/Fluid seit 2009)

• Agenturpräsentation unter: www.typovision.de/dieagentur

• Über 120 TYPO3-Projekte jeglicher Größenordnung - für Kunden wie:

Page 4: DDD - Domain Driven Design - TYPO3camp Stuttgart 2011

(c) 2011 - typovision* | Domain-driven Design | Patrick Lobacher | www.typovision.de | 22.05.2011 4

Problem

Lösung

Page 5: DDD - Domain Driven Design - TYPO3camp Stuttgart 2011

(c) 2011 - typovision* | Domain-driven Design | Patrick Lobacher | www.typovision.de | 22.05.2011 4

Problem

Lösung

DOMAIN DRIVEN DESIGN

Page 6: DDD - Domain Driven Design - TYPO3camp Stuttgart 2011

(c) 2011 - typovision* | Domain-driven Design | Patrick Lobacher | www.typovision.de | 22.05.2011 5

Problem Lösung

Kunde Dienstleister

Programmierer

PM

Domänenexperte

KEIN Proxy-Experte!

Page 7: DDD - Domain Driven Design - TYPO3camp Stuttgart 2011

(c) 2011 - typovision* | Domain-driven Design | Patrick Lobacher | www.typovision.de | 22.05.2011

DOMAIN DRIVEN DESIGN

6

Kommunikation Modell

Explizitheit Ignoranz

Objektorientierung

Page 8: DDD - Domain Driven Design - TYPO3camp Stuttgart 2011

(c) 2011 - typovision* | Domain-driven Design | Patrick Lobacher | www.typovision.de | 22.05.2011

WAS IST DDD?Eine Definition

7

Page 9: DDD - Domain Driven Design - TYPO3camp Stuttgart 2011

(c) 2011 - typovision* | Domain-driven Design | Patrick Lobacher | www.typovision.de | 22.05.2011

MARTIN FOWLER

Easy setup of a TYPO3 demo site

8

ERIC EVANSJIMMY NILSSON

DIE „ERFINDER“

Page 10: DDD - Domain Driven Design - TYPO3camp Stuttgart 2011

(c) 2011 - typovision* | Domain-driven Design | Patrick Lobacher | www.typovision.de | 22.05.2011

DDD DEFINITION

Domain Driven Design ist ein von Eric Evans geprägter Begriff für eine Anwendungsdomänen-getriebene

Herangehensweise an das Design komplexer objektorientierter Software.

9

Page 11: DDD - Domain Driven Design - TYPO3camp Stuttgart 2011

(c) 2011 - typovision* | Domain-driven Design | Patrick Lobacher | www.typovision.de | 22.05.2011

BASIS ANNAHME

10

Domain Driven Design basiert auf zwei Annahmen:

• Der Schwerpunkt des Softwaredesigns liegt auf der Fachlichkeit und der Fachlogik.

• Der Entwurf komplexer fachlicher Zusammenhänge sollte auf einem Fachmodell basieren.

=> Explizit machen von impliziten Zusammenhängen

Page 12: DDD - Domain Driven Design - TYPO3camp Stuttgart 2011

(c) 2011 - typovision* | Domain-driven Design | Patrick Lobacher | www.typovision.de | 22.05.2011

TYPISCHE PROJEKTE?Eine kurze Zusammenfassung

11

Page 13: DDD - Domain Driven Design - TYPO3camp Stuttgart 2011

(c) 2011 - typovision* | Domain-driven Design | Patrick Lobacher | www.typovision.de | 22.05.2011

TYPISCHE PROJEKTE ?

12

Page 14: DDD - Domain Driven Design - TYPO3camp Stuttgart 2011

(c) 2011 - typovision* | Domain-driven Design | Patrick Lobacher | www.typovision.de | 22.05.2011

TYPISCHE PROJEKTE ?

13

Page 15: DDD - Domain Driven Design - TYPO3camp Stuttgart 2011

(c) 2011 - typovision* | Domain-driven Design | Patrick Lobacher | www.typovision.de | 22.05.2011

TYPISCHE PROJEKTE ?

14

• Unterschiedliches Verständnis von domänenspezifischen Konzepten als einen wichtigen Grund für die divergierenden Vorstellung der beiden Gruppen Benutzer (Kunde) und Anwendungsentwickler (Dienstleister)

Page 16: DDD - Domain Driven Design - TYPO3camp Stuttgart 2011

(c) 2011 - typovision* | Domain-driven Design | Patrick Lobacher | www.typovision.de | 22.05.2011

DOMAIN MODELDie Domäne und das zugehörige Modell

15

Page 17: DDD - Domain Driven Design - TYPO3camp Stuttgart 2011

(c) 2011 - typovision* | Domain-driven Design | Patrick Lobacher | www.typovision.de | 22.05.2011

SCHICHTARCHITEKTUR

16

Page 18: DDD - Domain Driven Design - TYPO3camp Stuttgart 2011

(c) 2011 - typovision* | Domain-driven Design | Patrick Lobacher | www.typovision.de | 22.05.2011

DOMÄNE

17

Fachgebiet Geschäftsfeld

Einsatzbereich Problemfeld

DOMÄNE / DOMAIN

Infrastruktur Persistenz

Eingabe/Ausgabe GET/POST/COOKIES

Page 19: DDD - Domain Driven Design - TYPO3camp Stuttgart 2011

(c) 2011 - typovision* | Domain-driven Design | Patrick Lobacher | www.typovision.de | 22.05.2011

DOMÄNE / MODELL

• Um also ein einheitliches Verständnis zwischen diesen Gruppen (Domänenexperte und Applikationsentwickler) zu schaffen, wird ein Modell der Domäne etabliert

• Ein Model ist eine auf bestimmte Zwecke ausgerichtete vereinfachende Beschreibung der Wirklichkeit

18

Page 20: DDD - Domain Driven Design - TYPO3camp Stuttgart 2011

(c) 2011 - typovision* | Domain-driven Design | Patrick Lobacher | www.typovision.de | 22.05.2011

MODELLIERUNG

19

• Wichtigster Prozess!!!

• Domänenexperte (Kunde) + Dienstleister (PM oder Programmierer)

• Interativer, agiler Prozess

• Ergebnis => Modell

Page 21: DDD - Domain Driven Design - TYPO3camp Stuttgart 2011

(c) 2011 - typovision* | Domain-driven Design | Patrick Lobacher | www.typovision.de | 22.05.2011

MODELLIERUNG

20

• In der Regel entsteht während dieser Modellierungs-Gespräche Diagramme, die die Eigenschaften, Funktionalitäten und Beziehungen der relevanten Bestandteile des Problemfeldes in Objekte verpackt und deren Relationen darstellt.

Page 22: DDD - Domain Driven Design - TYPO3camp Stuttgart 2011

(c) 2011 - typovision* | Domain-driven Design | Patrick Lobacher | www.typovision.de | 22.05.2011

BOUNDED CONTEXT

21

Onlineshop

• Bestellungen erzeugen, aufgeben, abschließen

• Kunde benachrichtigen

• Rechnungen

• Lagerbestände

Page 23: DDD - Domain Driven Design - TYPO3camp Stuttgart 2011

(c) 2011 - typovision* | Domain-driven Design | Patrick Lobacher | www.typovision.de | 22.05.2011

BOUNDED CONTEXT

22

Bestellabwicklung

RechnungenLagerhaltung

Bounded Context

Page 24: DDD - Domain Driven Design - TYPO3camp Stuttgart 2011

(c) 2011 - typovision* | Domain-driven Design | Patrick Lobacher | www.typovision.de | 22.05.2011

UBIQUITOUS LANGUAGEDen Turmbau von Babel verhindern

23

Page 25: DDD - Domain Driven Design - TYPO3camp Stuttgart 2011

(c) 2011 - typovision* | Domain-driven Design | Patrick Lobacher | www.typovision.de | 22.05.2011

UBIQUITOUS LANGUAGE

24

• Zentrales, wichtigstes Element beim Modellieren ist eine gemeinsame Sprache => Ubiquitous language („Allgegenwärtige Sprache“)

• Gesprochen von allen (!) Team-Mitgliedern (inkl. Kunde)

• Basis für alle Aktivitäten im Projekt

• Namensraum für alle Artefakte im Modell

Page 26: DDD - Domain Driven Design - TYPO3camp Stuttgart 2011

(c) 2011 - typovision* | Domain-driven Design | Patrick Lobacher | www.typovision.de | 22.05.2011

UBIQUITOUS LANGUAGE

25

• Wichtig für die Etablierung eines einheitlichen Domänen-Modells

• Ubiquitous Language => Modell => Implementierung (!)

• Änderungen in einem der drei -> Änderung in Allen

• Prinzipiell multilingual => besser englisch

• Consultingprozess

Page 27: DDD - Domain Driven Design - TYPO3camp Stuttgart 2011

(c) 2011 - typovision* | Domain-driven Design | Patrick Lobacher | www.typovision.de | 22.05.2011

UL GLOSSAR

26

Begriff Bedeutung Übersetzung

Bestellung Summe aus verschiedenen Posten Order

PostenEinheit bestehende aus Produkt,

Anzahl und PreisRow

LagerOrt wo die Produkte aufgehoben

werden - begrenzte KapazitätWarehouse

ProduktEin physikalischer oder virtueller

Artikel aus dem Angebot des KundenProduct

Rechnung Detaillierte Aufstellung der Bestellung Invoice

Page 28: DDD - Domain Driven Design - TYPO3camp Stuttgart 2011

(c) 2011 - typovision* | Domain-driven Design | Patrick Lobacher | www.typovision.de | 22.05.2011

BAUSTEINE FÜR DDDDas Model aufbauen

27

Page 29: DDD - Domain Driven Design - TYPO3camp Stuttgart 2011

(c) 2011 - typovision* | Domain-driven Design | Patrick Lobacher | www.typovision.de | 22.05.2011

DDD BAUSTEINE

28

Page 30: DDD - Domain Driven Design - TYPO3camp Stuttgart 2011

(c) 2011 - typovision* | Domain-driven Design | Patrick Lobacher | www.typovision.de | 22.05.2011

DOMAIN OBJEKT

• Die wichtigste Unterscheidung die Evans zwischen Modellelementen macht, ist ob ein Element eine Identität hat oder nicht.

• Objekte müssen beispielsweise identifizierbar sein, um sie von einander unterscheiden zu können oder zu einem späteren Zeitpunkt wieder zu finden um weitere Operationen mit diesen durchführen zu können (Personen, Events, Konto, ...)

• Andere Objekte stellen nur die Repräsentation einer Eigenschaft dar (Farben, Tags, ...). Diese sind definiert durch alle Eigenschaften.

29

Page 31: DDD - Domain Driven Design - TYPO3camp Stuttgart 2011

(c) 2011 - typovision* | Domain-driven Design | Patrick Lobacher | www.typovision.de | 22.05.2011

DOMAIN OBJEKT

• Entities

• Identifizierbare Objekte, mit Identität

• Beispiel: Kunde selbst

• Value Objects

• Nicht identifizierbare Objekte,ohne eigene Identität, nicht veränderbar

• Beispiel: Adresse bei einem Kunden

30

Page 32: DDD - Domain Driven Design - TYPO3camp Stuttgart 2011

(c) 2011 - typovision* | Domain-driven Design | Patrick Lobacher | www.typovision.de | 22.05.2011

DOMAIN OBJEKT

• Services

• Nicht an das Objekt gebundene Funktionen oderHandling von mehreren Objekten

• Beispiel: Geokoordinaten-Ermittlung für Adresse oderÜberweisung zwischen zwei Konten

31

Page 33: DDD - Domain Driven Design - TYPO3camp Stuttgart 2011

(c) 2011 - typovision* | Domain-driven Design | Patrick Lobacher | www.typovision.de | 22.05.2011

OBJEKT LEBENSZYKLUS

32

Quelle: Rau/Kurfürst - Extbase & FLuid, O‘Reilly

Richtiges Leben Domain-driven Design

Datenspeicher

Page 34: DDD - Domain Driven Design - TYPO3camp Stuttgart 2011

(c) 2011 - typovision* | Domain-driven Design | Patrick Lobacher | www.typovision.de | 22.05.2011

REPOSITORIES

33

• Technische Details (der Persistenz) sollen nicht in die UL eindringen

• Dafür wurden Repositories„erschaffen“

Page 35: DDD - Domain Driven Design - TYPO3camp Stuttgart 2011

(c) 2011 - typovision* | Domain-driven Design | Patrick Lobacher | www.typovision.de | 22.05.2011

AGGREGATE

34

Page 36: DDD - Domain Driven Design - TYPO3camp Stuttgart 2011

(c) 2011 - typovision* | Domain-driven Design | Patrick Lobacher | www.typovision.de | 22.05.2011

AGGREGATE

35

Page 37: DDD - Domain Driven Design - TYPO3camp Stuttgart 2011

(c) 2011 - typovision* | Domain-driven Design | Patrick Lobacher | www.typovision.de | 22.05.2011

ZUSAMMENFASSUNG

36

Page 38: DDD - Domain Driven Design - TYPO3camp Stuttgart 2011

(c) 2011 - typovision* | Domain-driven Design | Patrick Lobacher | www.typovision.de | 22.05.2011

MVC

37

Page 39: DDD - Domain Driven Design - TYPO3camp Stuttgart 2011

(c) 2011 - typovision* | Domain-driven Design | Patrick Lobacher | www.typovision.de | 22.05.2011

MVC

38

Domain

View

Controller

Model

Repository

Validator

ViewHelper

Page 40: DDD - Domain Driven Design - TYPO3camp Stuttgart 2011

(c) 2011 - typovision* | Domain-driven Design | Patrick Lobacher | www.typovision.de | 22.05.2011

VORTEILE VON DDDWarum kompliziert, wenn es auch einfach geht

39

Page 41: DDD - Domain Driven Design - TYPO3camp Stuttgart 2011

(c) 2011 - typovision* | Domain-driven Design | Patrick Lobacher | www.typovision.de | 22.05.2011

VORTEILE• Besseres Verständnis der Domäne

• Saubere Strukturierung des Codes

• Eleganter, schöner Code

• Code „sozusagen“ von jedem verständlich

• Hohe Komplexität erst so wirklich handhabbar

• Zuständigkeiten klar getrennt

• Leicht zu erweitern

• schnellere Time-to-market (TTM)

40

Page 42: DDD - Domain Driven Design - TYPO3camp Stuttgart 2011

(c) 2011 - typovision* | Domain-driven Design | Patrick Lobacher | www.typovision.de | 22.05.2011

DDD IN TYPO3FLOW3 / Extbase

41

Page 43: DDD - Domain Driven Design - TYPO3camp Stuttgart 2011

(c) 2011 - typovision* | Domain-driven Design | Patrick Lobacher | www.typovision.de | 22.05.2011

FLOW3

42

• Die Architektur von FLOW3 basiert auf DDD

• Erstes PHP-Frameworkmit ganzheitlicherDDD Umsetzung

Page 44: DDD - Domain Driven Design - TYPO3camp Stuttgart 2011

(c) 2011 - typovision* | Domain-driven Design | Patrick Lobacher | www.typovision.de | 22.05.2011

TYPO3

43

• Extbase & Fluid

• Seit TYPO3 4.3 gehört die Systemextension „Extbase“ (von Jochen Rau)zum Core

• Zusammen mit Fluid (Sebastian Kurfürst) downport vonFLOW3 DDD Konzepten

• Zukunftssicher durch Aufwärtskompatibilität nach FLOW3

Page 45: DDD - Domain Driven Design - TYPO3camp Stuttgart 2011

(c) 2011 - typovision* | Domain-driven Design | Patrick Lobacher | www.typovision.de | 22.05.2011

EXTBASE KICKSTARTER

44

Page 46: DDD - Domain Driven Design - TYPO3camp Stuttgart 2011

(c) 2011 - typovision* | Domain-driven Design | Patrick Lobacher | www.typovision.de | 22.05.2011

QUELLENWeitere Informationen

45

Page 47: DDD - Domain Driven Design - TYPO3camp Stuttgart 2011

(c) 2011 - typovision* | Domain-driven Design | Patrick Lobacher | www.typovision.de | 22.05.2011

QUELLEN - BÜCHER

46

Page 48: DDD - Domain Driven Design - TYPO3camp Stuttgart 2011

(c) 2011 - typovision* | Domain-driven Design | Patrick Lobacher | www.typovision.de | 22.05.2011

QUELLEN - BÜCHER

47

Page 50: DDD - Domain Driven Design - TYPO3camp Stuttgart 2011

(c) 2011 - typovision* | Domain-driven Design | Patrick Lobacher | www.typovision.de | 22.05.2011

VIELEN DANK!FRAGEN?

49

Page 51: DDD - Domain Driven Design - TYPO3camp Stuttgart 2011

(c) 2011 - typovision* | Domain-driven Design | Patrick Lobacher | www.typovision.de | 22.05.2011

KONTAKT - KLASSISCH

Adresse:

typovision* - agentur für digitale kommunikation

Belfortstr. 881667 München

Fon: +49-89-18 92 08 70Fax: +49-89-18 92 08 69Email: [email protected]: http://www.typovision.de

50

Page 52: DDD - Domain Driven Design - TYPO3camp Stuttgart 2011

(c) 2011 - typovision* | Domain-driven Design | Patrick Lobacher | www.typovision.de | 22.05.2011

KONTAKT - SOCIAL CHANNELS

Twitter: www.twitter.com/_typovision_ www.twitter.com/PatrickLobacher

Facebook: www.facebook.com/typovision

XING: www.xing.com/profile/Patrick_Lobacher

Slideshare: www.slideshare.net/plobacher

Amazon: www.amazon.de/Patrick-Lobacher/e/B0045AQVEA

51


Recommended