Domain-driven design - eine Einführung

Post on 19-May-2015

7.746 views 5 download

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

(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

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

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

WAS IST DDD?Eine Definition

3

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

(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

(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

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

TYPISCHE PROJEKTE?Eine kurze Zusammenfassung

7

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

TYPISCHE PROJEKTE ?

8

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

TYPISCHE PROJEKTE ?

9

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

(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

(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

(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

(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

(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

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

UBIQUITOUS LANGUAGEDen Turmbau von Babel verhindern

16

(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

(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

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

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

BAUSTEINE FÜR DDDDas Model aufbauen

20

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

DOMAIN OBJEKT

21

(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

(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

(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

(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

(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

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

AGGREGATE

27

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

AGGREGATE

28

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

ZUSAMMENFASSUNG

29

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

MVC

30

(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

(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

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

DDD IN TYPO3FLOW3 / Extbase

33

(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

(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

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

EXTBASE KICKSTARTER

36

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

QUELLENWeitere Informationen

37

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

QUELLEN - BÜCHER

38

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

QUELLEN - BÜCHER

39

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

VIELEN DANK!FRAGEN?

41

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

42

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