DDD - Domain Driven Design - TYPO3camp Stuttgart 2011

Preview:

DESCRIPTION

Das Grund-Paradigma von Extbase und FLOW3 ist das sogenannte "Domain Driven Design" - der Vortrag zeigt was sich dahinter verbirgt und erklärt in einfachen Beispielen, warum es essentiell für Projektleiter, Programmierer und Kunden ist, dieses Paradigma zu verinnerlichen um Zeit, Mühe und letztlich Kosten zu sparen.

Citation preview

(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*)

(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

(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:

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

Problem

Lösung

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

Problem

Lösung

DOMAIN DRIVEN DESIGN

(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!

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

DOMAIN DRIVEN DESIGN

6

Kommunikation Modell

Explizitheit Ignoranz

Objektorientierung

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

WAS IST DDD?Eine Definition

7

(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“

(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

(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

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

TYPISCHE PROJEKTE?Eine kurze Zusammenfassung

11

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

TYPISCHE PROJEKTE ?

12

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

TYPISCHE PROJEKTE ?

13

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

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

DOMAIN MODELDie Domäne und das zugehörige Modell

15

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

SCHICHTARCHITEKTUR

16

(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

(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

(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

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

(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

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

BOUNDED CONTEXT

22

Bestellabwicklung

RechnungenLagerhaltung

Bounded Context

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

UBIQUITOUS LANGUAGEDen Turmbau von Babel verhindern

23

(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

(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

(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

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

BAUSTEINE FÜR DDDDas Model aufbauen

27

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

DDD BAUSTEINE

28

(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

(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

(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

(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

(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“

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

AGGREGATE

34

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

AGGREGATE

35

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

ZUSAMMENFASSUNG

36

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

MVC

37

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

MVC

38

Domain

View

Controller

Model

Repository

Validator

ViewHelper

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

VORTEILE VON DDDWarum kompliziert, wenn es auch einfach geht

39

(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

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

DDD IN TYPO3FLOW3 / Extbase

41

(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

(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

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

EXTBASE KICKSTARTER

44

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

QUELLENWeitere Informationen

45

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

QUELLEN - BÜCHER

46

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

QUELLEN - BÜCHER

47

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

VIELEN DANK!FRAGEN?

49

(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: info@typovision.deWeb: http://www.typovision.de

50

(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