Domain-driven design - eine Einführung
-
Upload
patrick-lobacher -
Category
Technology
-
view
7.746 -
download
5
description
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
QUELLEN - DDD
40
• 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) 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 [email protected] 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)