Domain-driven design - eine Einführung

43
(c) 2010 - typovision* | TYPO3camp | Domain-driven Design | Patrick Lobacher | www.typovision.de | 12.09.2010 DOMAIN-DRIVEN DESIGN Modernes Softwaredesign 12.09.2010 Patrick Lobacher (GF typovision*) MUNICH

description

Der moderne Weg, um Extensions für TYPO3 zu schreiben, führt letztlich zu Extbase und Fluid. Während Extbase/Fluid/FLOW3 im Grunde "nur" technische Lösungen bzw. Umsetzungen sind - liegt diesen ein Paradigma (eine Denkweise) zu Grunde, welches sich "Domain-driven Design" nennt. Hier steht die Domäne (Problemfeld, Anwendungsgebiet) des Kunden im Fokus und nicht die konkrete technische Realisierung. Der Vortrag zeigt, was alles hinter diesem Paradigma steckt, zeigt ausführlich die Grundlagen auf und stellt dar, warum diese Denkweise die Arbeit von Projektmanagern, Kunden und Programmiereren grundlegend verändert und letztlich verbessert

Transcript of Domain-driven design - eine Einführung

Page 1: Domain-driven design - eine Einführung

(c) 2010 - typovision* | TYPO3camp | Domain-driven Design | Patrick Lobacher | www.typovision.de | 12.09.2010

DOMAIN-DRIVEN DESIGNModernes Softwaredesign

12.09.2010

Patrick Lobacher (GF typovision*)

M U N I C H

Page 2: Domain-driven design - eine Einführung

(c) 2010 - typovision* | TYPO3camp | Domain-driven Design | Patrick Lobacher | www.typovision.de | 12.09.2010

ÜBER TYPOVISION

2

• Patrick Lobacher• Geschäftsführer typovision*• Premium Online Business Solutions - mit TYPO3• Gegründet vor 16 Jahren (net-o-graphic / typofaktum)• Über 800 abgeschlossene Projekte, >100 mit TYPO3• Kunden: Vodafone, Finanzscout 24, AGIP, Contraco, Siemens, Arbeitsamt

München, Langenscheidt, Motorola, Integralis, u.v.a.m• Aktiv in der Community: TYPO3camp, Certification und Documentation Team• Autor zahlreicher Fachbücher und Artikel:

Page 3: Domain-driven design - eine Einführung

(c) 2010 - typovision* | TYPO3camp | Domain-driven Design | Patrick Lobacher | www.typovision.de | 12.09.2010

WAS IST DDD?Eine Definition

3

Page 4: Domain-driven design - eine Einführung

(c) 2010 - typovision* | TYPO3camp | Domain-driven Design | Patrick Lobacher | www.typovision.de | 12.09.2010

MARTIN FOWLER

Easy setup of a TYPO3 demo site

4

ERIC EVANSJIMMY NILSSON

DIE „ERFINDER“

Page 5: Domain-driven design - eine Einführung

(c) 2010 - typovision* | TYPO3camp | Domain-driven Design | Patrick Lobacher | www.typovision.de | 12.09.2010

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.

5

Page 6: Domain-driven design - eine Einführung

(c) 2010 - typovision* | TYPO3camp | Domain-driven Design | Patrick Lobacher | www.typovision.de | 12.09.2010

BASIS ANNAHME

6

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 7: Domain-driven design - eine Einführung

(c) 2010 - typovision* | TYPO3camp | Domain-driven Design | Patrick Lobacher | www.typovision.de | 12.09.2010

TYPISCHE PROJEKTE?Eine kurze Zusammenfassung

7

Page 8: Domain-driven design - eine Einführung

(c) 2010 - typovision* | TYPO3camp | Domain-driven Design | Patrick Lobacher | www.typovision.de | 12.09.2010

TYPISCHE PROJEKTE ?

8

Page 9: Domain-driven design - eine Einführung

(c) 2010 - typovision* | TYPO3camp | Domain-driven Design | Patrick Lobacher | www.typovision.de | 12.09.2010

TYPISCHE PROJEKTE ?

9

Page 10: Domain-driven design - eine Einführung

(c) 2010 - typovision* | TYPO3camp | Domain-driven Design | Patrick Lobacher | www.typovision.de | 12.09.2010

TYPISCHE PROJEKTE ?

10

• 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 11: Domain-driven design - eine Einführung

(c) 2010 - typovision* | TYPO3camp | Domain-driven Design | Patrick Lobacher | www.typovision.de | 12.09.2010

DOMAIN MODELDie Domäne und das zugehörige Modell

11

Page 12: Domain-driven design - eine Einführung

(c) 2010 - typovision* | TYPO3camp | Domain-driven Design | Patrick Lobacher | www.typovision.de | 12.09.2010

DOMÄNE

• Was ist eine Domäne?

Ein abgrenzbares Problemfeld, Fachgebiet, Geschäftsfeld bzw. Einsatzbereich

NICHT!!!!: Infrastruktur, wie Persistenz, Templating, Eingabe, ...

12

Page 13: Domain-driven design - eine Einführung

(c) 2010 - typovision* | TYPO3camp | Domain-driven Design | Patrick Lobacher | www.typovision.de | 12.09.2010

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

13

Page 14: Domain-driven design - eine Einführung

(c) 2010 - typovision* | TYPO3camp | Domain-driven Design | Patrick Lobacher | www.typovision.de | 12.09.2010

BEISPIEL MODELL

• Quelle: http://www.holz-solar-haus.de/

14

Page 15: Domain-driven design - eine Einführung

(c) 2010 - typovision* | TYPO3camp | Domain-driven Design | Patrick Lobacher | www.typovision.de | 12.09.2010

MODELLIERUNG

15

• Wichtigster Prozess!!!

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

• Interativer, agiler Prozess

• Ergebnis => Modell

Page 16: Domain-driven design - eine Einführung

(c) 2010 - typovision* | TYPO3camp | Domain-driven Design | Patrick Lobacher | www.typovision.de | 12.09.2010

UBIQUITOUS LANGUAGEDen Turmbau von Babel verhindern

16

Page 17: Domain-driven design - eine Einführung

(c) 2010 - typovision* | TYPO3camp | Domain-driven Design | Patrick Lobacher | www.typovision.de | 12.09.2010

UBIQUITOUS LANGUAGE

17

• 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 18: Domain-driven design - eine Einführung

(c) 2010 - typovision* | TYPO3camp | Domain-driven Design | Patrick Lobacher | www.typovision.de | 12.09.2010

UBIQUITOUS LANGUAGE

18

• 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 19: Domain-driven design - eine Einführung

(c) 2010 - typovision* | TYPO3camp | Domain-driven Design | Patrick Lobacher | www.typovision.de | 12.09.2010

UL / MODELLIERUNG

19

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

Page 20: Domain-driven design - eine Einführung

(c) 2010 - typovision* | TYPO3camp | Domain-driven Design | Patrick Lobacher | www.typovision.de | 12.09.2010

BAUSTEINE FÜR DDDDas Model aufbauen

20

Page 21: Domain-driven design - eine Einführung

(c) 2010 - typovision* | TYPO3camp | Domain-driven Design | Patrick Lobacher | www.typovision.de | 12.09.2010

DOMAIN OBJEKT

21

Page 22: Domain-driven design - eine Einführung

(c) 2010 - typovision* | TYPO3camp | Domain-driven Design | Patrick Lobacher | www.typovision.de | 12.09.2010

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.

22

Page 23: Domain-driven design - eine Einführung

(c) 2010 - typovision* | TYPO3camp | Domain-driven Design | Patrick Lobacher | www.typovision.de | 12.09.2010

DOMAIN OBJEKT

• Value Objects

• Nicht identifizierbare Objekte,ohne eigene Identität

• Beispiel: Adresse bei einem Kunden

• Entities

• Identifizierbare Objekte, mit Identität

• Beispiel: Kunde selbst

23

Page 24: Domain-driven design - eine Einführung

(c) 2010 - typovision* | TYPO3camp | Domain-driven Design | Patrick Lobacher | www.typovision.de | 12.09.2010

DOMAIN OBJEKT

• Services

• Nicht an das Objekt gebundene Funktionen oderHandling von mehreren Objekten

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

24

Page 25: Domain-driven design - eine Einführung

(c) 2010 - typovision* | TYPO3camp | Domain-driven Design | Patrick Lobacher | www.typovision.de | 12.09.2010

OBJEKT LEBENSZYKLUS

25

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

Richtiges Leben Domain-driven Design

Page 26: Domain-driven design - eine Einführung

(c) 2010 - typovision* | TYPO3camp | Domain-driven Design | Patrick Lobacher | www.typovision.de | 12.09.2010

REPOSITORIES

26

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

• Dafür wurden Repositorieserschaffen

Page 27: Domain-driven design - eine Einführung

(c) 2010 - typovision* | TYPO3camp | Domain-driven Design | Patrick Lobacher | www.typovision.de | 12.09.2010

AGGREGATE

27

Page 28: Domain-driven design - eine Einführung

(c) 2010 - typovision* | TYPO3camp | Domain-driven Design | Patrick Lobacher | www.typovision.de | 12.09.2010

AGGREGATE

28

Page 29: Domain-driven design - eine Einführung

(c) 2010 - typovision* | TYPO3camp | Domain-driven Design | Patrick Lobacher | www.typovision.de | 12.09.2010

ZUSAMMENFASSUNG

29

Page 30: Domain-driven design - eine Einführung

(c) 2010 - typovision* | TYPO3camp | Domain-driven Design | Patrick Lobacher | www.typovision.de | 12.09.2010

MVC

30

Page 31: Domain-driven design - eine Einführung

(c) 2010 - typovision* | TYPO3camp | Domain-driven Design | Patrick Lobacher | www.typovision.de | 12.09.2010

VORTEILE VON DDDWarum kompliziert, wenn es auch einfach geht

31

Page 32: Domain-driven design - eine Einführung

(c) 2010 - typovision* | TYPO3camp | Domain-driven Design | Patrick Lobacher | www.typovision.de | 12.09.2010

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)

32

Page 33: Domain-driven design - eine Einführung

(c) 2010 - typovision* | TYPO3camp | Domain-driven Design | Patrick Lobacher | www.typovision.de | 12.09.2010

DDD IN TYPO3FLOW3 / Extbase

33

Page 34: Domain-driven design - eine Einführung

(c) 2010 - typovision* | TYPO3camp | Domain-driven Design | Patrick Lobacher | www.typovision.de | 12.09.2010

FLOW3

34

• Die Architektur von FLOW3 basiert auf DDD

• Erstes PHP-Frameworkmit ganzheitlicherDDD Umsetzung

Page 35: Domain-driven design - eine Einführung

(c) 2010 - typovision* | TYPO3camp | Domain-driven Design | Patrick Lobacher | www.typovision.de | 12.09.2010

TYPO3

35

• 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 36: Domain-driven design - eine Einführung

(c) 2010 - typovision* | TYPO3camp | Domain-driven Design | Patrick Lobacher | www.typovision.de | 12.09.2010

EXTBASE KICKSTARTER

36

Page 37: Domain-driven design - eine Einführung

(c) 2010 - typovision* | TYPO3camp | Domain-driven Design | Patrick Lobacher | www.typovision.de | 12.09.2010

QUELLENWeitere Informationen

37

Page 38: Domain-driven design - eine Einführung

(c) 2010 - typovision* | TYPO3camp | Domain-driven Design | Patrick Lobacher | www.typovision.de | 12.09.2010

QUELLEN - BÜCHER

38

Page 39: Domain-driven design - eine Einführung

(c) 2010 - typovision* | TYPO3camp | Domain-driven Design | Patrick Lobacher | www.typovision.de | 12.09.2010

QUELLEN - BÜCHER

39

Page 41: Domain-driven design - eine Einführung

(c) 2010 - typovision* | TYPO3camp | Domain-driven Design | Patrick Lobacher | www.typovision.de | 12.09.2010

VIELEN DANK!FRAGEN?

41

Page 42: Domain-driven design - eine Einführung

(c) 2010 - typovision* | TYPO3camp | Domain-driven Design | Patrick Lobacher | www.typovision.de | 12.09.2010

ÜBER TYPOVISION

• Adresse:

typovision* - agentur für multimediale kommunikation

Belfortstr. 881667 MünchenDeutschland

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

42

Page 43: Domain-driven design - eine Einführung

(c) 2010 - typovision* | TYPO3camp | Domain-driven Design | Patrick Lobacher | www.typovision.de | 12.09.2010

ÜBER TYPOVISION

43

• Geschäftsbereiche• TYPO3 Konzeption, Entwicklung, Programmierung, Integration

(inkl. Extbase / Fluid / FLOW3)• Consulting und Projektmanagement• Schulung (inkl. komplettes TYPO3-Curriculum von Anfänger bis

Fortgeschrittene und Spezialschulungen sowie Firmen- und Individualschulungen)

• iPhone / iPad Webentwicklung (HTML5, CSS3, WebKit)