(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
QUELLEN - DDD
48
• Domain-Driven Design Communitydomaindrivendesign.org
• Domain Driven Design Quickly (PDF)www.infoq.com/minibooks/domain-driven-design-quickly
• DDD Step By Step (PDF)thinkddd.com/assets/2/Domain_Driven_Design_-_Step_by_Step.pdf
(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: [email protected]: 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
Top Related