DOMAIN-DRIVEN DESIGN
                               Modernes Softwaredesign

                                             ...
ÜBER TYPOVISION
•   Patrick Lobacher
•   Geschäftsführer typovision*
•   Premium Online Business Solutions - mit TYPO3
•  ...
WAS IST DDD?
                                             Eine Definition



(c) 2010 - typovision* | TYPO3camp | Domain-dr...
DIE „ERFINDER“




                         JIMMY NILSSON            ERIC EVANS           MARTIN FOWLER




              ...
DDD DEFINITION




    Domain Driven Design ist ein von Eric Evans geprägter
        Begriff für eine Anwendungsdomänen-ge...
BASIS ANNAHME

      Domain Driven Design basiert auf zwei Annahmen:


       • Der Schwerpunkt des Softwaredesigns liegt ...
TYPISCHE PROJEKTE?
                                 Eine kurze Zusammenfassung



(c) 2010 - typovision* | TYPO3camp | Dom...
TYPISCHE PROJEKTE ?




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




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



•    Unterschiedliches Verständnis von
     domänenspezifischen Konzepten als einen wichtigen
     G...
DOMAIN MODEL
                         Die Domäne und das zugehörige Modell



(c) 2010 - typovision* | TYPO3camp | Domain-...
DOMÄNE


•    Was ist eine Domäne?


     Ein abgrenzbares Problemfeld, Fachgebiet,
     Geschäftsfeld bzw. Einsatzbereich...
DOMÄNE / MODELL


•    Um also ein einheitliches Verständnis zwischen diesen
     Gruppen (Domänenexperte und Applikations...
BEISPIEL MODELL




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

    (c) 2010 - typovision* | TYPO3camp | Domain-driven De...
MODELLIERUNG


•   Wichtigster Prozess!!!

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

•   Int...
UBIQUITOUS LANGUAGE
                             Den Turmbau von Babel verhindern



(c) 2010 - typovision* | TYPO3camp | ...
UBIQUITOUS LANGUAGE

•   Zentrales, wichtigstes Element beim Modellieren ist eine
    gemeinsame Sprache => Ubiquitous lan...
UBIQUITOUS LANGUAGE

•   Wichtig für die Etablierung eines einheitlichen Domänen-
    Modells

•   Ubiquitous Language => ...
UL / MODELLIERUNG


•   In der Regel entsteht während dieser
    Modellierungs-Gespräche ein (UML)
    Diagramm, das die E...
BAUSTEINE FÜR DDD
                                        Das Model aufbauen



(c) 2010 - typovision* | TYPO3camp | Domai...
DOMAIN OBJEKT




(c) 2010 - typovision* | TYPO3camp | Domain-driven Design | Patrick Lobacher | www.typovision.de | 12.09...
DOMAIN OBJEKT
•   Die wichtigste Unterscheidung die Evans zwischen
    Modellelementen macht, ist ob ein Element eine Iden...
DOMAIN OBJEKT

•   Value Objects

    •   Nicht identifizierbare Objekte,
        ohne eigene Identität


    •   Beispiel:...
DOMAIN OBJEKT


•   Services

    •   Nicht an das Objekt gebundene Funktionen oder
        Handling von mehreren Objekten...
OBJEKT LEBENSZYKLUS

                      Richtiges Leben                                     Domain-driven Design




  ...
REPOSITORIES

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

•   Dafür wurden
    ...
AGGREGATE




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




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




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




(c) 2010 - typovision* | TYPO3camp | Domain-driven Design | Patrick Lobacher | www.typovision.de | 12.09.2010   30
VORTEILE VON DDD
                    Warum kompliziert, wenn es auch einfach geht



(c) 2010 - typovision* | TYPO3camp | ...
VORTEILE
•   Besseres Verständnis der Domäne

•   Saubere Strukturierung des Codes

•   Eleganter, schöner Code

•   Code ...
DDD IN TYPO3
                                           FLOW3 / Extbase



(c) 2010 - typovision* | TYPO3camp | Domain-dri...
FLOW3
•   Die Architektur von
    FLOW3 basiert auf DDD

•   Erstes PHP-Framework
    mit ganzheitlicher
    DDD Umsetzung...
TYPO3

•   Extbase & Fluid

•   Seit TYPO3 4.3 gehört die Systemextension
    „Extbase“ (von Jochen Rau)
    zum Core

•  ...
EXTBASE KICKSTARTER




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



(c) 2010 - typovision* | TYPO3camp | Domain-driven...
QUELLEN - BÜCHER




(c) 2010 - typovision* | TYPO3camp | Domain-driven Design | Patrick Lobacher | www.typovision.de | 12...
QUELLEN - BÜCHER




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

•   Domain-Driven Design Community
    domaindrivendesign.org

•   Domain Driven Design Quickly (PDF)
    w...
VIELEN DANK!
                                       FRAGEN?

(c) 2010 - typovision* | TYPO3camp | Domain-driven Design | P...
ÜBER TYPOVISION

•   Adresse:

    typovision* - agentur für multimediale kommunikation

    Belfortstr. 8
    81667 Münch...
ÜBER TYPOVISION



• Geschäftsbereiche
   • TYPO3     Konzeption, Entwicklung, Programmierung, Integration
     (inkl. Ext...
Nächste SlideShare
Wird geladen in …5
×

Domain-driven design - eine Einführung

11.717 Aufrufe

Veröffentlicht am

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

Veröffentlicht in: Technologie
0 Kommentare
3 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

Keine Downloads
Aufrufe
Aufrufe insgesamt
11.717
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
50
Aktionen
Geteilt
0
Downloads
150
Kommentare
0
Gefällt mir
3
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

Domain-driven design - eine Einführung

  1. 1. DOMAIN-DRIVEN DESIGN Modernes Softwaredesign MUNICH 12.09.2010 Patrick Lobacher (GF typovision*) (c) 2010 - typovision* | TYPO3camp | Domain-driven Design | Patrick Lobacher | www.typovision.de | 12.09.2010
  2. 2. ÜBER TYPOVISION • 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 2
  3. 3. WAS IST DDD? Eine Definition (c) 2010 - typovision* | TYPO3camp | Domain-driven Design | Patrick Lobacher | www.typovision.de | 12.09.2010 3
  4. 4. DIE „ERFINDER“ JIMMY NILSSON ERIC EVANS MARTIN FOWLER Easy setup of a TYPO3 demo site (c) 2010 - typovision* | TYPO3camp | Domain-driven Design | Patrick Lobacher | www.typovision.de | 12.09.2010 4
  5. 5. 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. (c) 2010 - typovision* | TYPO3camp | Domain-driven Design | Patrick Lobacher | www.typovision.de | 12.09.2010 5
  6. 6. BASIS ANNAHME 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 6
  7. 7. TYPISCHE PROJEKTE? Eine kurze Zusammenfassung (c) 2010 - typovision* | TYPO3camp | Domain-driven Design | Patrick Lobacher | www.typovision.de | 12.09.2010 7
  8. 8. TYPISCHE PROJEKTE ? (c) 2010 - typovision* | TYPO3camp | Domain-driven Design | Patrick Lobacher | www.typovision.de | 12.09.2010 8
  9. 9. TYPISCHE PROJEKTE ? (c) 2010 - typovision* | TYPO3camp | Domain-driven Design | Patrick Lobacher | www.typovision.de | 12.09.2010 9
  10. 10. TYPISCHE PROJEKTE ? • 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 10
  11. 11. DOMAIN MODEL Die Domäne und das zugehörige Modell (c) 2010 - typovision* | TYPO3camp | Domain-driven Design | Patrick Lobacher | www.typovision.de | 12.09.2010 11
  12. 12. DOMÄNE • Was ist eine Domäne? Ein abgrenzbares Problemfeld, Fachgebiet, Geschäftsfeld bzw. Einsatzbereich NICHT!!!!: Infrastruktur, wie Persistenz, Templating, Eingabe, ... (c) 2010 - typovision* | TYPO3camp | Domain-driven Design | Patrick Lobacher | www.typovision.de | 12.09.2010 12
  13. 13. 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 (c) 2010 - typovision* | TYPO3camp | Domain-driven Design | Patrick Lobacher | www.typovision.de | 12.09.2010 13
  14. 14. BEISPIEL MODELL • Quelle: http://www.holz-solar-haus.de/ (c) 2010 - typovision* | TYPO3camp | Domain-driven Design | Patrick Lobacher | www.typovision.de | 12.09.2010 14
  15. 15. MODELLIERUNG • 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 15
  16. 16. UBIQUITOUS LANGUAGE Den Turmbau von Babel verhindern (c) 2010 - typovision* | TYPO3camp | Domain-driven Design | Patrick Lobacher | www.typovision.de | 12.09.2010 16
  17. 17. UBIQUITOUS LANGUAGE • 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 17
  18. 18. UBIQUITOUS LANGUAGE • 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 18
  19. 19. UL / MODELLIERUNG • 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 19
  20. 20. BAUSTEINE FÜR DDD Das Model aufbauen (c) 2010 - typovision* | TYPO3camp | Domain-driven Design | Patrick Lobacher | www.typovision.de | 12.09.2010 20
  21. 21. DOMAIN OBJEKT (c) 2010 - typovision* | TYPO3camp | Domain-driven Design | Patrick Lobacher | www.typovision.de | 12.09.2010 21
  22. 22. 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. (c) 2010 - typovision* | TYPO3camp | Domain-driven Design | Patrick Lobacher | www.typovision.de | 12.09.2010 22
  23. 23. 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 (c) 2010 - typovision* | TYPO3camp | Domain-driven Design | Patrick Lobacher | www.typovision.de | 12.09.2010 23
  24. 24. DOMAIN OBJEKT • Services • Nicht an das Objekt gebundene Funktionen oder Handling von mehreren Objekten • Beispiel: Geokoordinaten-Ermittlung für Adresse oder Überweisung zwischen zwei Konten (c) 2010 - typovision* | TYPO3camp | Domain-driven Design | Patrick Lobacher | www.typovision.de | 12.09.2010 24
  25. 25. OBJEKT LEBENSZYKLUS Richtiges Leben Domain-driven Design Quelle: Rau/Kurfürst - Extbase & FLuid, O‘Reilly (c) 2010 - typovision* | TYPO3camp | Domain-driven Design | Patrick Lobacher | www.typovision.de | 12.09.2010 25
  26. 26. REPOSITORIES • Technische Details (der Persistenz) sollen nicht in die UL eindringen • Dafür wurden Repositories erschaffen (c) 2010 - typovision* | TYPO3camp | Domain-driven Design | Patrick Lobacher | www.typovision.de | 12.09.2010 26
  27. 27. AGGREGATE (c) 2010 - typovision* | TYPO3camp | Domain-driven Design | Patrick Lobacher | www.typovision.de | 12.09.2010 27
  28. 28. AGGREGATE (c) 2010 - typovision* | TYPO3camp | Domain-driven Design | Patrick Lobacher | www.typovision.de | 12.09.2010 28
  29. 29. ZUSAMMENFASSUNG (c) 2010 - typovision* | TYPO3camp | Domain-driven Design | Patrick Lobacher | www.typovision.de | 12.09.2010 29
  30. 30. MVC (c) 2010 - typovision* | TYPO3camp | Domain-driven Design | Patrick Lobacher | www.typovision.de | 12.09.2010 30
  31. 31. VORTEILE VON DDD Warum kompliziert, wenn es auch einfach geht (c) 2010 - typovision* | TYPO3camp | Domain-driven Design | Patrick Lobacher | www.typovision.de | 12.09.2010 31
  32. 32. 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) (c) 2010 - typovision* | TYPO3camp | Domain-driven Design | Patrick Lobacher | www.typovision.de | 12.09.2010 32
  33. 33. DDD IN TYPO3 FLOW3 / Extbase (c) 2010 - typovision* | TYPO3camp | Domain-driven Design | Patrick Lobacher | www.typovision.de | 12.09.2010 33
  34. 34. FLOW3 • Die Architektur von FLOW3 basiert auf DDD • Erstes PHP-Framework mit ganzheitlicher DDD Umsetzung (c) 2010 - typovision* | TYPO3camp | Domain-driven Design | Patrick Lobacher | www.typovision.de | 12.09.2010 34
  35. 35. TYPO3 • Extbase & Fluid • Seit TYPO3 4.3 gehört die Systemextension „Extbase“ (von Jochen Rau) zum Core • Zusammen mit Fluid (Sebastian Kurfürst) downport von FLOW3 DDD Konzepten • Zukunftssicher durch Aufwärtskompatibilität nach FLOW3 (c) 2010 - typovision* | TYPO3camp | Domain-driven Design | Patrick Lobacher | www.typovision.de | 12.09.2010 35
  36. 36. EXTBASE KICKSTARTER (c) 2010 - typovision* | TYPO3camp | Domain-driven Design | Patrick Lobacher | www.typovision.de | 12.09.2010 36
  37. 37. QUELLEN Weitere Informationen (c) 2010 - typovision* | TYPO3camp | Domain-driven Design | Patrick Lobacher | www.typovision.de | 12.09.2010 37
  38. 38. QUELLEN - BÜCHER (c) 2010 - typovision* | TYPO3camp | Domain-driven Design | Patrick Lobacher | www.typovision.de | 12.09.2010 38
  39. 39. QUELLEN - BÜCHER (c) 2010 - typovision* | TYPO3camp | Domain-driven Design | Patrick Lobacher | www.typovision.de | 12.09.2010 39
  40. 40. QUELLEN - DDD • Domain-Driven Design Community domaindrivendesign.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 40
  41. 41. VIELEN DANK! FRAGEN? (c) 2010 - typovision* | TYPO3camp | Domain-driven Design | Patrick Lobacher | www.typovision.de | 12.09.2010 41
  42. 42. ÜBER TYPOVISION • Adresse: typovision* - agentur für multimediale kommunikation Belfortstr. 8 81667 München Deutschland Telefon +49-89-18 92 08 70 Fax +49-89-18 92 08 69 Email info@typovision.de Web http://www.typovision.de (c) 2010 - typovision* | TYPO3camp | Domain-driven Design | Patrick Lobacher | www.typovision.de | 12.09.2010 42
  43. 43. ÜBER TYPOVISION • 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) (c) 2010 - typovision* | TYPO3camp | Domain-driven Design | Patrick Lobacher | www.typovision.de | 12.09.2010 43

×