einführung in domain-driven design - entwicklertag · domain-driven design jens borrmann und...
TRANSCRIPT
![Page 1: Einführung in Domain-Driven Design - Entwicklertag · Domain-Driven Design Jens Borrmann und Nicole Rauch 22. Mai 2014. Unsere aktuelle Architektur User Interface Business Layer](https://reader033.vdocuments.mx/reader033/viewer/2022060400/5f0e01d97e708231d43d28c7/html5/thumbnails/1.jpg)
Einführung inDomain-Driven Design
Jens Borrmann und Nicole Rauch22. Mai 2014
![Page 2: Einführung in Domain-Driven Design - Entwicklertag · Domain-Driven Design Jens Borrmann und Nicole Rauch 22. Mai 2014. Unsere aktuelle Architektur User Interface Business Layer](https://reader033.vdocuments.mx/reader033/viewer/2022060400/5f0e01d97e708231d43d28c7/html5/thumbnails/2.jpg)
![Page 3: Einführung in Domain-Driven Design - Entwicklertag · Domain-Driven Design Jens Borrmann und Nicole Rauch 22. Mai 2014. Unsere aktuelle Architektur User Interface Business Layer](https://reader033.vdocuments.mx/reader033/viewer/2022060400/5f0e01d97e708231d43d28c7/html5/thumbnails/3.jpg)
Unsere aktuelle Architektur
UserInterface
BusinessLayer
DatenbankLayer
![Page 4: Einführung in Domain-Driven Design - Entwicklertag · Domain-Driven Design Jens Borrmann und Nicole Rauch 22. Mai 2014. Unsere aktuelle Architektur User Interface Business Layer](https://reader033.vdocuments.mx/reader033/viewer/2022060400/5f0e01d97e708231d43d28c7/html5/thumbnails/4.jpg)
Unsere aktuelle Architektur
UserInterface
BusinessLayer
DatenbankLayer
KundenEditUI
KundenEditModel
KundenBS
KundenDTO
KundenPS
KundenDAOKundenVO
![Page 5: Einführung in Domain-Driven Design - Entwicklertag · Domain-Driven Design Jens Borrmann und Nicole Rauch 22. Mai 2014. Unsere aktuelle Architektur User Interface Business Layer](https://reader033.vdocuments.mx/reader033/viewer/2022060400/5f0e01d97e708231d43d28c7/html5/thumbnails/5.jpg)
Domain-Driven Design
I Domänen-Experten und Entwickler gemeinsam
I Fokus der Entwicklung auf die Fachlichkeit
I Bausteine und Werkzeuge für gute Anwendungen
![Page 6: Einführung in Domain-Driven Design - Entwicklertag · Domain-Driven Design Jens Borrmann und Nicole Rauch 22. Mai 2014. Unsere aktuelle Architektur User Interface Business Layer](https://reader033.vdocuments.mx/reader033/viewer/2022060400/5f0e01d97e708231d43d28c7/html5/thumbnails/6.jpg)
Literatur
![Page 7: Einführung in Domain-Driven Design - Entwicklertag · Domain-Driven Design Jens Borrmann und Nicole Rauch 22. Mai 2014. Unsere aktuelle Architektur User Interface Business Layer](https://reader033.vdocuments.mx/reader033/viewer/2022060400/5f0e01d97e708231d43d28c7/html5/thumbnails/7.jpg)
Baustein: Entität
I hat eine Identität (beschreibt das „wer“)
I hat einen Lebenszyklus
I Modellierung fokussiert darauf
I eindeutigen Identifikator festlegen
![Page 8: Einführung in Domain-Driven Design - Entwicklertag · Domain-Driven Design Jens Borrmann und Nicole Rauch 22. Mai 2014. Unsere aktuelle Architektur User Interface Business Layer](https://reader033.vdocuments.mx/reader033/viewer/2022060400/5f0e01d97e708231d43d28c7/html5/thumbnails/8.jpg)
Baustein: Value Object
I Wert
I hat keine Identität (beschreibt „was“, nicht „wer“)
I fachlicher Wrapper um technische Datentypen
I bildet eine konzeptionelle Einheit
I kann oft als Immutable implementiert werdenI dann ist Sharing möglich
![Page 9: Einführung in Domain-Driven Design - Entwicklertag · Domain-Driven Design Jens Borrmann und Nicole Rauch 22. Mai 2014. Unsere aktuelle Architektur User Interface Business Layer](https://reader033.vdocuments.mx/reader033/viewer/2022060400/5f0e01d97e708231d43d28c7/html5/thumbnails/9.jpg)
Einige Wochen später...
![Page 10: Einführung in Domain-Driven Design - Entwicklertag · Domain-Driven Design Jens Borrmann und Nicole Rauch 22. Mai 2014. Unsere aktuelle Architektur User Interface Business Layer](https://reader033.vdocuments.mx/reader033/viewer/2022060400/5f0e01d97e708231d43d28c7/html5/thumbnails/10.jpg)
Neues über Value Objects
I aus Entitäten auslagern
I können auch komplexer aufgebaut sein
I entwickeln sich zu „Code-Magneten“
![Page 11: Einführung in Domain-Driven Design - Entwicklertag · Domain-Driven Design Jens Borrmann und Nicole Rauch 22. Mai 2014. Unsere aktuelle Architektur User Interface Business Layer](https://reader033.vdocuments.mx/reader033/viewer/2022060400/5f0e01d97e708231d43d28c7/html5/thumbnails/11.jpg)
Die allgegenwärtige und gemeinsame Sprache
I Fachbegriffe überall verwenden, auch im Code!
I Glossar zur Begriffsklärung
I muss reichhaltig genug sein für sämtliche Kommunikation
I beschreibt nicht nur die Einheiten im System, sondernauch Aufgaben und Funktionalitäten
I muss widerspruchsfrei und eindeutig sein
![Page 12: Einführung in Domain-Driven Design - Entwicklertag · Domain-Driven Design Jens Borrmann und Nicole Rauch 22. Mai 2014. Unsere aktuelle Architektur User Interface Business Layer](https://reader033.vdocuments.mx/reader033/viewer/2022060400/5f0e01d97e708231d43d28c7/html5/thumbnails/12.jpg)
Domain Services
I Hinweis auf fehlenden Service: Code in static Methoden
I zustandslos
I oft als Einstieg in die Domäne
![Page 13: Einführung in Domain-Driven Design - Entwicklertag · Domain-Driven Design Jens Borrmann und Nicole Rauch 22. Mai 2014. Unsere aktuelle Architektur User Interface Business Layer](https://reader033.vdocuments.mx/reader033/viewer/2022060400/5f0e01d97e708231d43d28c7/html5/thumbnails/13.jpg)
![Page 14: Einführung in Domain-Driven Design - Entwicklertag · Domain-Driven Design Jens Borrmann und Nicole Rauch 22. Mai 2014. Unsere aktuelle Architektur User Interface Business Layer](https://reader033.vdocuments.mx/reader033/viewer/2022060400/5f0e01d97e708231d43d28c7/html5/thumbnails/14.jpg)
Domain Services Revisited
I zu viel Code in ServicesI prozedurale ProgrammmierungI blutleeres Modell
I zu viel Code in EntitätenI Überfrachtung der Entitäten mit VerhaltenI Verlust konzeptioneller KlarheitI Abhängigkeiten an der falschen Stelle
![Page 15: Einführung in Domain-Driven Design - Entwicklertag · Domain-Driven Design Jens Borrmann und Nicole Rauch 22. Mai 2014. Unsere aktuelle Architektur User Interface Business Layer](https://reader033.vdocuments.mx/reader033/viewer/2022060400/5f0e01d97e708231d43d28c7/html5/thumbnails/15.jpg)
Repositories
I fachliche Schnittstelle zu Daten
I gaukeln In-Memory-Collection vor
I keine Infrastruktur-Abhängigkeiten in Domain Code
![Page 16: Einführung in Domain-Driven Design - Entwicklertag · Domain-Driven Design Jens Borrmann und Nicole Rauch 22. Mai 2014. Unsere aktuelle Architektur User Interface Business Layer](https://reader033.vdocuments.mx/reader033/viewer/2022060400/5f0e01d97e708231d43d28c7/html5/thumbnails/16.jpg)
Repositories
KundeDatabaseRepository
KundeService
KundeRepository Kunde
Business Layer
DB Layer
![Page 17: Einführung in Domain-Driven Design - Entwicklertag · Domain-Driven Design Jens Borrmann und Nicole Rauch 22. Mai 2014. Unsere aktuelle Architektur User Interface Business Layer](https://reader033.vdocuments.mx/reader033/viewer/2022060400/5f0e01d97e708231d43d28c7/html5/thumbnails/17.jpg)
Repositories
DB-Adapter
HTTP
KundeService
KundeRepository
Kunde
KundeDatabaseRepository
RESTFilesystem
![Page 18: Einführung in Domain-Driven Design - Entwicklertag · Domain-Driven Design Jens Borrmann und Nicole Rauch 22. Mai 2014. Unsere aktuelle Architektur User Interface Business Layer](https://reader033.vdocuments.mx/reader033/viewer/2022060400/5f0e01d97e708231d43d28c7/html5/thumbnails/18.jpg)
![Page 19: Einführung in Domain-Driven Design - Entwicklertag · Domain-Driven Design Jens Borrmann und Nicole Rauch 22. Mai 2014. Unsere aktuelle Architektur User Interface Business Layer](https://reader033.vdocuments.mx/reader033/viewer/2022060400/5f0e01d97e708231d43d28c7/html5/thumbnails/19.jpg)
Gründe für Anpassungen am Modell
I Grund Nummer 1: Lernen
I bessere Begriffe
I Beziehungen werden klarer
I neue Konzepte/Abstraktionen tauchen auf
![Page 20: Einführung in Domain-Driven Design - Entwicklertag · Domain-Driven Design Jens Borrmann und Nicole Rauch 22. Mai 2014. Unsere aktuelle Architektur User Interface Business Layer](https://reader033.vdocuments.mx/reader033/viewer/2022060400/5f0e01d97e708231d43d28c7/html5/thumbnails/20.jpg)
Und sie programmierten glücklich
bis an ihr Lebensende. . .
![Page 21: Einführung in Domain-Driven Design - Entwicklertag · Domain-Driven Design Jens Borrmann und Nicole Rauch 22. Mai 2014. Unsere aktuelle Architektur User Interface Business Layer](https://reader033.vdocuments.mx/reader033/viewer/2022060400/5f0e01d97e708231d43d28c7/html5/thumbnails/21.jpg)
Achtung!
I Technisches nicht hinten runterfallen lassen
I Vorsicht vor blutleeren Modellen - Code in die Objekte!
I Services sollten die Ausnahme sein, nicht die Regel
I Klassische Schichtenarchitektur kann suboptimal sein
![Page 22: Einführung in Domain-Driven Design - Entwicklertag · Domain-Driven Design Jens Borrmann und Nicole Rauch 22. Mai 2014. Unsere aktuelle Architektur User Interface Business Layer](https://reader033.vdocuments.mx/reader033/viewer/2022060400/5f0e01d97e708231d43d28c7/html5/thumbnails/22.jpg)
Positive Aspekte
I Fokus auf Fachlichkeit und gemeinsamer Sprache
I Gutes Zusammenspiel mit Specification by Example bzw.ATDD
I Value Objects entlasten Entitäten und ziehen Code an
I Keine Angst vor Veränderungen - Code geschmeidighalten
![Page 23: Einführung in Domain-Driven Design - Entwicklertag · Domain-Driven Design Jens Borrmann und Nicole Rauch 22. Mai 2014. Unsere aktuelle Architektur User Interface Business Layer](https://reader033.vdocuments.mx/reader033/viewer/2022060400/5f0e01d97e708231d43d28c7/html5/thumbnails/23.jpg)
Vielen Dank!
Folien auf GitHub:
https://github.com/NicoleRauch/DomainDrivenDesign
Jens Borrmann
E-Mail [email protected]
Twitter @jborrmann
Nicole Rauch
E-Mail [email protected]
Twitter @NicoleRauch