Enterprise-Softwarearchitektur und Domain Driven Design …...Enterprise-Softwarearchitektur und...
Transcript of Enterprise-Softwarearchitektur und Domain Driven Design …...Enterprise-Softwarearchitektur und...
![Page 1: Enterprise-Softwarearchitektur und Domain Driven Design …...Enterprise-Softwarearchitektur und Domain Driven Design (DDD) Manuel Meyer, Senior Consultant Trivadis AG ... -> Unterstützung](https://reader036.fdocument.pub/reader036/viewer/2022062306/5ede46b3ad6a402d66699939/html5/thumbnails/1.jpg)
2014 © Trivadis
BASEL BERN BRUGG LAUSANNE ZÜRICH DÜSSELDORF FRANKFURT A.M. FREIBURG I.BR. HAMBURG MÜNCHEN STUTTGART WIEN
2014 © Trivadis
Enterprise-Softwarearchitektur und
Domain Driven Design (DDD)
Manuel Meyer, Senior Consultant Trivadis AG
18.09.2014
.NET Architektur & DDD
1
![Page 2: Enterprise-Softwarearchitektur und Domain Driven Design …...Enterprise-Softwarearchitektur und Domain Driven Design (DDD) Manuel Meyer, Senior Consultant Trivadis AG ... -> Unterstützung](https://reader036.fdocument.pub/reader036/viewer/2022062306/5ede46b3ad6a402d66699939/html5/thumbnails/2.jpg)
2014 © Trivadis
Über mich…
18.09.2014
.NET Architektur & DDD
2
� Senior Consultant/Trainer bei Trivadis AG
� .NET C#, WPF, Microsoft Azure
� .NET Performance Management & Troubleshooting
![Page 3: Enterprise-Softwarearchitektur und Domain Driven Design …...Enterprise-Softwarearchitektur und Domain Driven Design (DDD) Manuel Meyer, Senior Consultant Trivadis AG ... -> Unterstützung](https://reader036.fdocument.pub/reader036/viewer/2022062306/5ede46b3ad6a402d66699939/html5/thumbnails/3.jpg)
2014 © Trivadis
Motivation
18.09.2014
.NET Architektur & DDD
3
![Page 4: Enterprise-Softwarearchitektur und Domain Driven Design …...Enterprise-Softwarearchitektur und Domain Driven Design (DDD) Manuel Meyer, Senior Consultant Trivadis AG ... -> Unterstützung](https://reader036.fdocument.pub/reader036/viewer/2022062306/5ede46b3ad6a402d66699939/html5/thumbnails/4.jpg)
2014 © Trivadis
AGENDA
1. Einleitung
2. S.O.L.I.D Prinzipien
3. Domain-Driven Design
4. Von Data-Driven zu Domain-Driven in .NET
5. Zusammenfassung
18.09.2014
.NET Architektur & DDD
4
![Page 5: Enterprise-Softwarearchitektur und Domain Driven Design …...Enterprise-Softwarearchitektur und Domain Driven Design (DDD) Manuel Meyer, Senior Consultant Trivadis AG ... -> Unterstützung](https://reader036.fdocument.pub/reader036/viewer/2022062306/5ede46b3ad6a402d66699939/html5/thumbnails/5.jpg)
2014 © Trivadis
18.09.2014
.NET Architektur & DDD
Einleitung
5
![Page 6: Enterprise-Softwarearchitektur und Domain Driven Design …...Enterprise-Softwarearchitektur und Domain Driven Design (DDD) Manuel Meyer, Senior Consultant Trivadis AG ... -> Unterstützung](https://reader036.fdocument.pub/reader036/viewer/2022062306/5ede46b3ad6a402d66699939/html5/thumbnails/6.jpg)
2014 © Trivadis
Was ist Softwarearchitektur?
-wikipedia
18.09.2014
.NET Architektur & DDD
6
“Software architecture is the high
level structure of a software
system, the discipline of creating
such a high level structure, and the
documentation of this structure.”
![Page 7: Enterprise-Softwarearchitektur und Domain Driven Design …...Enterprise-Softwarearchitektur und Domain Driven Design (DDD) Manuel Meyer, Senior Consultant Trivadis AG ... -> Unterstützung](https://reader036.fdocument.pub/reader036/viewer/2022062306/5ede46b3ad6a402d66699939/html5/thumbnails/7.jpg)
2014 © Trivadis
18.09.2014
.NET Architektur & DDD
7
![Page 8: Enterprise-Softwarearchitektur und Domain Driven Design …...Enterprise-Softwarearchitektur und Domain Driven Design (DDD) Manuel Meyer, Senior Consultant Trivadis AG ... -> Unterstützung](https://reader036.fdocument.pub/reader036/viewer/2022062306/5ede46b3ad6a402d66699939/html5/thumbnails/8.jpg)
2014 © Trivadis
Was ist Softwaredesign?
-wikipedia
18.09.2014
.NET Architektur & DDD
8
“Software design is the process of
implementing software solutions
to one or more set of problems.”
![Page 9: Enterprise-Softwarearchitektur und Domain Driven Design …...Enterprise-Softwarearchitektur und Domain Driven Design (DDD) Manuel Meyer, Senior Consultant Trivadis AG ... -> Unterstützung](https://reader036.fdocument.pub/reader036/viewer/2022062306/5ede46b3ad6a402d66699939/html5/thumbnails/9.jpg)
2014 © Trivadis
18.09.2014
.NET Architektur & DDD
9
![Page 10: Enterprise-Softwarearchitektur und Domain Driven Design …...Enterprise-Softwarearchitektur und Domain Driven Design (DDD) Manuel Meyer, Senior Consultant Trivadis AG ... -> Unterstützung](https://reader036.fdocument.pub/reader036/viewer/2022062306/5ede46b3ad6a402d66699939/html5/thumbnails/10.jpg)
2014 © Trivadis
Was ist Softwaredesign?
-wikipedia
18.09.2014
.NET Architektur & DDD
10
“Industrial design is the use of both
applied art and applied science
to improve the aesthetics, design,
ergonomics, functionality, and
usability of a product.”
![Page 11: Enterprise-Softwarearchitektur und Domain Driven Design …...Enterprise-Softwarearchitektur und Domain Driven Design (DDD) Manuel Meyer, Senior Consultant Trivadis AG ... -> Unterstützung](https://reader036.fdocument.pub/reader036/viewer/2022062306/5ede46b3ad6a402d66699939/html5/thumbnails/11.jpg)
2014 © Trivadis
Probleme in der Softwareentwicklung (Auszug)
18.09.2014
.NET Architektur & DDD
11
Spaghetti Code
Knowhow Abfluss
Altlasten
unwartbare Anwendungen
fehlende Erweiterbarkeit.
keine Tests
Probleme im Betrieb
![Page 12: Enterprise-Softwarearchitektur und Domain Driven Design …...Enterprise-Softwarearchitektur und Domain Driven Design (DDD) Manuel Meyer, Senior Consultant Trivadis AG ... -> Unterstützung](https://reader036.fdocument.pub/reader036/viewer/2022062306/5ede46b3ad6a402d66699939/html5/thumbnails/12.jpg)
2014 © Trivadis
Probleme in der Softwareentwicklung
18.09.2014
.NET Architektur & DDD
12
“Kosten & Legacy”
![Page 13: Enterprise-Softwarearchitektur und Domain Driven Design …...Enterprise-Softwarearchitektur und Domain Driven Design (DDD) Manuel Meyer, Senior Consultant Trivadis AG ... -> Unterstützung](https://reader036.fdocument.pub/reader036/viewer/2022062306/5ede46b3ad6a402d66699939/html5/thumbnails/13.jpg)
2014 © Trivadis
18.09.2014
.NET Architektur & DDD
13
![Page 14: Enterprise-Softwarearchitektur und Domain Driven Design …...Enterprise-Softwarearchitektur und Domain Driven Design (DDD) Manuel Meyer, Senior Consultant Trivadis AG ... -> Unterstützung](https://reader036.fdocument.pub/reader036/viewer/2022062306/5ede46b3ad6a402d66699939/html5/thumbnails/14.jpg)
2014 © Trivadis
Probleme in der Softwareentwicklung
18.09.2014
.NET Architektur & DDD
14
“Legacy”
![Page 15: Enterprise-Softwarearchitektur und Domain Driven Design …...Enterprise-Softwarearchitektur und Domain Driven Design (DDD) Manuel Meyer, Senior Consultant Trivadis AG ... -> Unterstützung](https://reader036.fdocument.pub/reader036/viewer/2022062306/5ede46b3ad6a402d66699939/html5/thumbnails/15.jpg)
2014 © Trivadis
18.09.2014
.NET Architektur & DDD
15
![Page 16: Enterprise-Softwarearchitektur und Domain Driven Design …...Enterprise-Softwarearchitektur und Domain Driven Design (DDD) Manuel Meyer, Senior Consultant Trivadis AG ... -> Unterstützung](https://reader036.fdocument.pub/reader036/viewer/2022062306/5ede46b3ad6a402d66699939/html5/thumbnails/16.jpg)
2014 © Trivadis
18.09.2014
.NET Architektur & DDD
16
![Page 17: Enterprise-Softwarearchitektur und Domain Driven Design …...Enterprise-Softwarearchitektur und Domain Driven Design (DDD) Manuel Meyer, Senior Consultant Trivadis AG ... -> Unterstützung](https://reader036.fdocument.pub/reader036/viewer/2022062306/5ede46b3ad6a402d66699939/html5/thumbnails/17.jpg)
2014 © Trivadis
Probleme in der Softwareentwicklung
18.09.2014
.NET Architektur & DDD
17
“…legacy code is simply
code without tests…”
-Michael Feathers
![Page 18: Enterprise-Softwarearchitektur und Domain Driven Design …...Enterprise-Softwarearchitektur und Domain Driven Design (DDD) Manuel Meyer, Senior Consultant Trivadis AG ... -> Unterstützung](https://reader036.fdocument.pub/reader036/viewer/2022062306/5ede46b3ad6a402d66699939/html5/thumbnails/18.jpg)
2014 © Trivadis
18.09.2014
.NET Architektur & DDD
18
![Page 19: Enterprise-Softwarearchitektur und Domain Driven Design …...Enterprise-Softwarearchitektur und Domain Driven Design (DDD) Manuel Meyer, Senior Consultant Trivadis AG ... -> Unterstützung](https://reader036.fdocument.pub/reader036/viewer/2022062306/5ede46b3ad6a402d66699939/html5/thumbnails/19.jpg)
2014 © Trivadis
18.09.2014
.NET Architektur & DDD
19
![Page 20: Enterprise-Softwarearchitektur und Domain Driven Design …...Enterprise-Softwarearchitektur und Domain Driven Design (DDD) Manuel Meyer, Senior Consultant Trivadis AG ... -> Unterstützung](https://reader036.fdocument.pub/reader036/viewer/2022062306/5ede46b3ad6a402d66699939/html5/thumbnails/20.jpg)
2014 © Trivadis
Wie können Architektur & Design helfen?
� Reduktion der Legacy
� Ermöglichen der NICHT-FUNKTIONALEN Anforderungen:� Extensibility
� Maintainability
� Reusability
� Testability
� ...
-> Unterstützung durch korrekten OOP Einsatz (S.O.L.I.D)
-> Unterstützung durch Domain Driven Design (DDD oder DDDD).
18.09.2014
.NET Architektur & DDD
20
![Page 21: Enterprise-Softwarearchitektur und Domain Driven Design …...Enterprise-Softwarearchitektur und Domain Driven Design (DDD) Manuel Meyer, Senior Consultant Trivadis AG ... -> Unterstützung](https://reader036.fdocument.pub/reader036/viewer/2022062306/5ede46b3ad6a402d66699939/html5/thumbnails/21.jpg)
2014 © Trivadis
18.09.2014
.NET Architektur & DDD
S.O.L.I.D
Principles
21
![Page 22: Enterprise-Softwarearchitektur und Domain Driven Design …...Enterprise-Softwarearchitektur und Domain Driven Design (DDD) Manuel Meyer, Senior Consultant Trivadis AG ... -> Unterstützung](https://reader036.fdocument.pub/reader036/viewer/2022062306/5ede46b3ad6a402d66699939/html5/thumbnails/22.jpg)
2014 © Trivadis
SOLID Principles
� SRP: Single Responsibility Principle
� OCP: Open Closed Principle
� LSP: Liskov Substitution Principle
� ISP: Interface Segregation Principle
� DIP: Dependency Inversion Principle
18.09.2014
.NET Architektur & DDD
22
![Page 23: Enterprise-Softwarearchitektur und Domain Driven Design …...Enterprise-Softwarearchitektur und Domain Driven Design (DDD) Manuel Meyer, Senior Consultant Trivadis AG ... -> Unterstützung](https://reader036.fdocument.pub/reader036/viewer/2022062306/5ede46b3ad6a402d66699939/html5/thumbnails/23.jpg)
2014 © Trivadis
SOLID Principles
Robert C. Martin (a.k.a. Uncle Bob)
� Software Consultant
� Writer� Principles of OOD
� Agile Software Development: Principles,
Patterns and Practices
� Clean Code
� First Chairman of the Agile Alliance
Michael Feathers
18.09.2014
.NET Architektur & DDD
23
![Page 24: Enterprise-Softwarearchitektur und Domain Driven Design …...Enterprise-Softwarearchitektur und Domain Driven Design (DDD) Manuel Meyer, Senior Consultant Trivadis AG ... -> Unterstützung](https://reader036.fdocument.pub/reader036/viewer/2022062306/5ede46b3ad6a402d66699939/html5/thumbnails/24.jpg)
2014 © Trivadis
SOLID Principles: SRP
SRP: Single Responsibility Principle
18.09.2014
.NET Architektur & DDD
24
“There should never be more than
one reason for a class to change”
![Page 25: Enterprise-Softwarearchitektur und Domain Driven Design …...Enterprise-Softwarearchitektur und Domain Driven Design (DDD) Manuel Meyer, Senior Consultant Trivadis AG ... -> Unterstützung](https://reader036.fdocument.pub/reader036/viewer/2022062306/5ede46b3ad6a402d66699939/html5/thumbnails/25.jpg)
2014 © Trivadis
SOLID Principles: SRP
SRP: Single Responsibility Principle
� Verantwortlichkeit = Axis of change
� Gilt für alle Objekte: Assemblies, Klassen, Methoden.
18.09.2014
.NET Architektur & DDD
25
![Page 26: Enterprise-Softwarearchitektur und Domain Driven Design …...Enterprise-Softwarearchitektur und Domain Driven Design (DDD) Manuel Meyer, Senior Consultant Trivadis AG ... -> Unterstützung](https://reader036.fdocument.pub/reader036/viewer/2022062306/5ede46b3ad6a402d66699939/html5/thumbnails/26.jpg)
2014 © Trivadis
SOLID Principles: SRP
18.09.2014
.NET Architektur & DDD
26
Beispiel 1: Rectangle
![Page 27: Enterprise-Softwarearchitektur und Domain Driven Design …...Enterprise-Softwarearchitektur und Domain Driven Design (DDD) Manuel Meyer, Senior Consultant Trivadis AG ... -> Unterstützung](https://reader036.fdocument.pub/reader036/viewer/2022062306/5ede46b3ad6a402d66699939/html5/thumbnails/27.jpg)
2014 © Trivadis
SOLID Principles: SRP
18.09.2014
.NET Architektur & DDD
27
Beispiel 1: Rectangle
![Page 28: Enterprise-Softwarearchitektur und Domain Driven Design …...Enterprise-Softwarearchitektur und Domain Driven Design (DDD) Manuel Meyer, Senior Consultant Trivadis AG ... -> Unterstützung](https://reader036.fdocument.pub/reader036/viewer/2022062306/5ede46b3ad6a402d66699939/html5/thumbnails/28.jpg)
2014 © Trivadis
SOLID Principles: SRP
18.09.2014
.NET Architektur & DDD
28
Beispiel 2 Customer Persistierung:
![Page 29: Enterprise-Softwarearchitektur und Domain Driven Design …...Enterprise-Softwarearchitektur und Domain Driven Design (DDD) Manuel Meyer, Senior Consultant Trivadis AG ... -> Unterstützung](https://reader036.fdocument.pub/reader036/viewer/2022062306/5ede46b3ad6a402d66699939/html5/thumbnails/29.jpg)
2014 © Trivadis
SOLID Principles
OCP: Open/Closed Principle
18.09.2014
.NET Architektur & DDD
29
“Software entities (classes, modules,
functions, etc.), should be open for
extension, but closed for modification”
Bertrand Meyer, 1988
![Page 30: Enterprise-Softwarearchitektur und Domain Driven Design …...Enterprise-Softwarearchitektur und Domain Driven Design (DDD) Manuel Meyer, Senior Consultant Trivadis AG ... -> Unterstützung](https://reader036.fdocument.pub/reader036/viewer/2022062306/5ede46b3ad6a402d66699939/html5/thumbnails/30.jpg)
2014 © Trivadis
SOLID Principles
OCP: Open/Closed Principle
� Open for Extension = Das Objekt kann um neue Anforderungen erweitert werden
� Closed for Modification = Bestehender Code wird nicht verändert
� -> Änderungen werden durch hinzufügen von neuem Code, NICHT durch Änderung von altem Code gemacht.
� -> Der Schlüssel liegt in der Abstraktion.
18.09.2014
.NET Architektur & DDD
30
![Page 31: Enterprise-Softwarearchitektur und Domain Driven Design …...Enterprise-Softwarearchitektur und Domain Driven Design (DDD) Manuel Meyer, Senior Consultant Trivadis AG ... -> Unterstützung](https://reader036.fdocument.pub/reader036/viewer/2022062306/5ede46b3ad6a402d66699939/html5/thumbnails/31.jpg)
2014 © Trivadis
SOLID Principles OCP
OCP: Open/Closed Principle
18.09.2014
.NET Architektur & DDD
31
![Page 32: Enterprise-Softwarearchitektur und Domain Driven Design …...Enterprise-Softwarearchitektur und Domain Driven Design (DDD) Manuel Meyer, Senior Consultant Trivadis AG ... -> Unterstützung](https://reader036.fdocument.pub/reader036/viewer/2022062306/5ede46b3ad6a402d66699939/html5/thumbnails/32.jpg)
2014 © Trivadis
SOLID Principles OCP
OCP: Open/Closed Principle
18.09.2014
.NET Architektur & DDD
32
![Page 33: Enterprise-Softwarearchitektur und Domain Driven Design …...Enterprise-Softwarearchitektur und Domain Driven Design (DDD) Manuel Meyer, Senior Consultant Trivadis AG ... -> Unterstützung](https://reader036.fdocument.pub/reader036/viewer/2022062306/5ede46b3ad6a402d66699939/html5/thumbnails/33.jpg)
2014 © Trivadis
SOLID Principles: LSP
LSP: Liskov Substitution Principle
18.09.2014
.NET Architektur & DDD
33
“Objects in a program should be
replaceable with instances of their
subtypes without altering the correctness
of that program”
Barbara Liskov, MIT 1987
![Page 34: Enterprise-Softwarearchitektur und Domain Driven Design …...Enterprise-Softwarearchitektur und Domain Driven Design (DDD) Manuel Meyer, Senior Consultant Trivadis AG ... -> Unterstützung](https://reader036.fdocument.pub/reader036/viewer/2022062306/5ede46b3ad6a402d66699939/html5/thumbnails/34.jpg)
2014 © Trivadis
SOLID Principles: LSP
LSP: Liskov Substitution Principle
� Eigentlich eine Erweiterung von OCP
� Wir müssen sicherstellen, dass abgeleitete Klassen das Verhalten der Basisklasse (inklusive möglicher ANNAHMEN!) NICHT verändern.
18.09.2014
.NET Architektur & DDD
34
![Page 35: Enterprise-Softwarearchitektur und Domain Driven Design …...Enterprise-Softwarearchitektur und Domain Driven Design (DDD) Manuel Meyer, Senior Consultant Trivadis AG ... -> Unterstützung](https://reader036.fdocument.pub/reader036/viewer/2022062306/5ede46b3ad6a402d66699939/html5/thumbnails/35.jpg)
2014 © Trivadis
SOLID Principles: LSP
18.09.2014
.NET Architektur & DDD
35
![Page 36: Enterprise-Softwarearchitektur und Domain Driven Design …...Enterprise-Softwarearchitektur und Domain Driven Design (DDD) Manuel Meyer, Senior Consultant Trivadis AG ... -> Unterstützung](https://reader036.fdocument.pub/reader036/viewer/2022062306/5ede46b3ad6a402d66699939/html5/thumbnails/36.jpg)
2014 © Trivadis
SOLID Principles: LSP
LSP: Liskov Substitution Principle
� Unsere Ableitung war syntaktisch ok, hat aber zu einem semantischen Fehler geführt.
� Der Fehler kam erst beim Testing raus
� Wir haben die IS-A Beziehung missbraucht
� Mit Breite und Höhe hatten wir einen Hinweis
� Wir müssen sicherstellen, dass abgeleitete Klassen das Verhalten der Basisklasse (inklusive möglicher ANNAHMEN!) NICHT verändern.
18.09.2014
.NET Architektur & DDD
36
![Page 37: Enterprise-Softwarearchitektur und Domain Driven Design …...Enterprise-Softwarearchitektur und Domain Driven Design (DDD) Manuel Meyer, Senior Consultant Trivadis AG ... -> Unterstützung](https://reader036.fdocument.pub/reader036/viewer/2022062306/5ede46b3ad6a402d66699939/html5/thumbnails/37.jpg)
2014 © Trivadis
SOLID Principles: ISP
ISP: Interface Segregation Principle
18.09.2014
.NET Architektur & DDD
37
“Clients should not be forced to depend
upon interfaces that they do not use”
Robert C. Martin, Xerox
![Page 38: Enterprise-Softwarearchitektur und Domain Driven Design …...Enterprise-Softwarearchitektur und Domain Driven Design (DDD) Manuel Meyer, Senior Consultant Trivadis AG ... -> Unterstützung](https://reader036.fdocument.pub/reader036/viewer/2022062306/5ede46b3ad6a402d66699939/html5/thumbnails/38.jpg)
2014 © Trivadis
SOLID Principles: ISP
ISP: Interface Segregation Principle
� Interface Pollution (Clients müssen Interfaces implementieren, welche sie nicht brauchen.)
� Keine„fat“ Interfaces
� Viele kleine Interfaces
� Grosse Interfaces = mehr Abhängigkeiten.
18.09.2014
.NET Architektur & DDD
38
![Page 39: Enterprise-Softwarearchitektur und Domain Driven Design …...Enterprise-Softwarearchitektur und Domain Driven Design (DDD) Manuel Meyer, Senior Consultant Trivadis AG ... -> Unterstützung](https://reader036.fdocument.pub/reader036/viewer/2022062306/5ede46b3ad6a402d66699939/html5/thumbnails/39.jpg)
2014 © Trivadis
SOLID Principles: ISP
Beispiel 1: Xerox
18.09.2014
.NET Architektur & DDD
39
![Page 40: Enterprise-Softwarearchitektur und Domain Driven Design …...Enterprise-Softwarearchitektur und Domain Driven Design (DDD) Manuel Meyer, Senior Consultant Trivadis AG ... -> Unterstützung](https://reader036.fdocument.pub/reader036/viewer/2022062306/5ede46b3ad6a402d66699939/html5/thumbnails/40.jpg)
2014 © Trivadis
SOLID Principles: ISP
Beispiel 2: ASP.NET MembershipProvider
18.09.2014
.NET Architektur & DDD
40
![Page 41: Enterprise-Softwarearchitektur und Domain Driven Design …...Enterprise-Softwarearchitektur und Domain Driven Design (DDD) Manuel Meyer, Senior Consultant Trivadis AG ... -> Unterstützung](https://reader036.fdocument.pub/reader036/viewer/2022062306/5ede46b3ad6a402d66699939/html5/thumbnails/41.jpg)
2014 © Trivadis
SOLID Principles
DIP: Dependency Inversion Principle
18.09.2014
.NET Architektur & DDD
41
“A. High-level modules should not depend on low-level
modules. Both should depend on abstractions.”
Robert C. Martin
B. Abstractions should not depend on details. Details should
depend on abstractions.
![Page 42: Enterprise-Softwarearchitektur und Domain Driven Design …...Enterprise-Softwarearchitektur und Domain Driven Design (DDD) Manuel Meyer, Senior Consultant Trivadis AG ... -> Unterstützung](https://reader036.fdocument.pub/reader036/viewer/2022062306/5ede46b3ad6a402d66699939/html5/thumbnails/42.jpg)
2014 © Trivadis
SOLID Principles: DIP
18.09.2014
.NET Architektur & DDD
42
PolicyLayer
UtilityLayer
ColorConsole
Writer
![Page 43: Enterprise-Softwarearchitektur und Domain Driven Design …...Enterprise-Softwarearchitektur und Domain Driven Design (DDD) Manuel Meyer, Senior Consultant Trivadis AG ... -> Unterstützung](https://reader036.fdocument.pub/reader036/viewer/2022062306/5ede46b3ad6a402d66699939/html5/thumbnails/43.jpg)
2014 © Trivadis
SOLID Principles: DIP
18.09.2014
.NET Architektur & DDD
43
PolicyLayer
UtilityLayer
Mechanism Layer
![Page 44: Enterprise-Softwarearchitektur und Domain Driven Design …...Enterprise-Softwarearchitektur und Domain Driven Design (DDD) Manuel Meyer, Senior Consultant Trivadis AG ... -> Unterstützung](https://reader036.fdocument.pub/reader036/viewer/2022062306/5ede46b3ad6a402d66699939/html5/thumbnails/44.jpg)
2014 © Trivadis
S.O.L.I.D Bad Smells
� If-Statement, welches Typen unterscheidet -> OCP
� Interface-Methoden, welche in vielen Fällen nicht implementiert werden müssen -> ISP
� Modelierung von IS-A Beziehungen, welche nicht ganz passen -> LSP
� Interface Pollution -> ISP
� FAT Interfaces -> ISP
� Methodennamen wie: UpdateAndSaveCustomer(), VerifyAndSaveData() -> SRP
� Klassennamen wie CustomerManager -> SRP.
18.09.2014
.NET Architektur & DDD
44
![Page 45: Enterprise-Softwarearchitektur und Domain Driven Design …...Enterprise-Softwarearchitektur und Domain Driven Design (DDD) Manuel Meyer, Senior Consultant Trivadis AG ... -> Unterstützung](https://reader036.fdocument.pub/reader036/viewer/2022062306/5ede46b3ad6a402d66699939/html5/thumbnails/45.jpg)
2014 © Trivadis
S.O.L.I.D Resources
� SOLID Wikipedia� http://en.wikipedia.org/wiki/SOLID_(object-oriented_design)
� Hanselminutes Podcast 145: SOLID Principles with Uncle Bob� http://www.hanselman.com/blog/HanselminutesPodcast145SOLIDPrinciples
WithUncleBobRobertCMartin.aspx
� Pablos Solid Ebook� http://lostechies.com/wp-content/uploads/2011/03/pablos_solid_ebook.pdf
� Objectmentor.com (Uncle Bob)� http://www.objectmentor.com/resources/articles/srp.pdf
� http://www.objectmentor.com/resources/articles/ocp.pdf
� http://www.objectmentor.com/resources/articles/lsp.pdf
� http://www.objectmentor.com/resources/articles/isp.pdf
� http://www.objectmentor.com/resources/articles/dip.pdf
18.09.2014
.NET Architektur & DDD
45
![Page 46: Enterprise-Softwarearchitektur und Domain Driven Design …...Enterprise-Softwarearchitektur und Domain Driven Design (DDD) Manuel Meyer, Senior Consultant Trivadis AG ... -> Unterstützung](https://reader036.fdocument.pub/reader036/viewer/2022062306/5ede46b3ad6a402d66699939/html5/thumbnails/46.jpg)
2014 © Trivadis
18.09.2014
.NET Architektur & DDD
Domain Driven Design
46
![Page 47: Enterprise-Softwarearchitektur und Domain Driven Design …...Enterprise-Softwarearchitektur und Domain Driven Design (DDD) Manuel Meyer, Senior Consultant Trivadis AG ... -> Unterstützung](https://reader036.fdocument.pub/reader036/viewer/2022062306/5ede46b3ad6a402d66699939/html5/thumbnails/47.jpg)
2014 © Trivadis
Domain Driven Design
� 2003: Domain-Driven Design by Eric Evans
� „Tackling Complexity in the Heart of Software“
18.09.2014
.NET Architektur & DDD
47
![Page 48: Enterprise-Softwarearchitektur und Domain Driven Design …...Enterprise-Softwarearchitektur und Domain Driven Design (DDD) Manuel Meyer, Senior Consultant Trivadis AG ... -> Unterstützung](https://reader036.fdocument.pub/reader036/viewer/2022062306/5ede46b3ad6a402d66699939/html5/thumbnails/48.jpg)
2014 © Trivadis
Was ist Domain Driven Design?
18.09.2014
.NET Architektur & DDD
48
“DDD is just OO software done right.”
“a collection of principles and patterns that
help developers craft elegant object system.”
“Ein philosophischer Ansatz, wie
Problemdomänen in Software implementiert
werden sollten”
![Page 49: Enterprise-Softwarearchitektur und Domain Driven Design …...Enterprise-Softwarearchitektur und Domain Driven Design (DDD) Manuel Meyer, Senior Consultant Trivadis AG ... -> Unterstützung](https://reader036.fdocument.pub/reader036/viewer/2022062306/5ede46b3ad6a402d66699939/html5/thumbnails/49.jpg)
2014 © Trivadis
Domain Driven Design
� Der Hauptfokus liegt auf der Domäne und deren Logik
� Komplexität wird durch ein Model sichtbar gemacht
� Domain Experts und Entwickler verfeinern das Model iterativ
� Aus dem Model entsteht der Code.
18.09.2014
.NET Architektur & DDD
49
![Page 50: Enterprise-Softwarearchitektur und Domain Driven Design …...Enterprise-Softwarearchitektur und Domain Driven Design (DDD) Manuel Meyer, Senior Consultant Trivadis AG ... -> Unterstützung](https://reader036.fdocument.pub/reader036/viewer/2022062306/5ede46b3ad6a402d66699939/html5/thumbnails/50.jpg)
2014 © Trivadis
Der Klassische Ansatz
18.09.2014
.NET Architektur & DDD
50
ORM
& XAML
ASP.NET WebAPI
![Page 51: Enterprise-Softwarearchitektur und Domain Driven Design …...Enterprise-Softwarearchitektur und Domain Driven Design (DDD) Manuel Meyer, Senior Consultant Trivadis AG ... -> Unterstützung](https://reader036.fdocument.pub/reader036/viewer/2022062306/5ede46b3ad6a402d66699939/html5/thumbnails/51.jpg)
2014 © Trivadis
Domain Driven Design
18.09.2014
.NET Architektur & DDD
51
Ubiquitous Language
Model
![Page 52: Enterprise-Softwarearchitektur und Domain Driven Design …...Enterprise-Softwarearchitektur und Domain Driven Design (DDD) Manuel Meyer, Senior Consultant Trivadis AG ... -> Unterstützung](https://reader036.fdocument.pub/reader036/viewer/2022062306/5ede46b3ad6a402d66699939/html5/thumbnails/52.jpg)
2014 © Trivadis
Domain Driven Design
18.09.2014
.NET Architektur & DDD
52
Ubiquitous Language
Knowledge-Rich Model
‘’Make implicit concepts explicit»
Supple Design
DDD Konzepte
Persistence Ignorance.
![Page 53: Enterprise-Softwarearchitektur und Domain Driven Design …...Enterprise-Softwarearchitektur und Domain Driven Design (DDD) Manuel Meyer, Senior Consultant Trivadis AG ... -> Unterstützung](https://reader036.fdocument.pub/reader036/viewer/2022062306/5ede46b3ad6a402d66699939/html5/thumbnails/53.jpg)
2014 © Trivadis
Domain Driven Design
18.09.2014
.NET Architektur & DDD
53
Ubiquitous Language
Repositories
Aggregates
Entities
Value Objects
Strategies
Modules.
Mit DDD Building Blocks und Techniken wird das Model zu Code
![Page 54: Enterprise-Softwarearchitektur und Domain Driven Design …...Enterprise-Softwarearchitektur und Domain Driven Design (DDD) Manuel Meyer, Senior Consultant Trivadis AG ... -> Unterstützung](https://reader036.fdocument.pub/reader036/viewer/2022062306/5ede46b3ad6a402d66699939/html5/thumbnails/54.jpg)
2014 © Trivadis
Domain Driven Design
18.09.2014
.NET Architektur & DDD
54
Ubiquitous Language
Das Model und die UL entwickeln sich weiter…
Bounded Context
Context Map
Distillation
![Page 55: Enterprise-Softwarearchitektur und Domain Driven Design …...Enterprise-Softwarearchitektur und Domain Driven Design (DDD) Manuel Meyer, Senior Consultant Trivadis AG ... -> Unterstützung](https://reader036.fdocument.pub/reader036/viewer/2022062306/5ede46b3ad6a402d66699939/html5/thumbnails/55.jpg)
2014 © Trivadis
Ubiquitous Language
� Vereinbarte Sprache zwischen Domain Experts und Technik
� Wird im Lauf des Projekts iterativ optimiert und erweitert
� Was im Model benannt wird fliesst in die UL ein.
18.09.2014
.NET Architektur & DDD
55
Ubiquitous Language
![Page 56: Enterprise-Softwarearchitektur und Domain Driven Design …...Enterprise-Softwarearchitektur und Domain Driven Design (DDD) Manuel Meyer, Senior Consultant Trivadis AG ... -> Unterstützung](https://reader036.fdocument.pub/reader036/viewer/2022062306/5ede46b3ad6a402d66699939/html5/thumbnails/56.jpg)
2014 © Trivadis
PI: Persistence Ignorance
� „Es gibt keine Datenbank!“
� Der Fokus liegt auf der Domäne
� Entkopplung von Applikation und Infrastruktur.
18.09.2014
.NET Architektur & DDD
56
![Page 57: Enterprise-Softwarearchitektur und Domain Driven Design …...Enterprise-Softwarearchitektur und Domain Driven Design (DDD) Manuel Meyer, Senior Consultant Trivadis AG ... -> Unterstützung](https://reader036.fdocument.pub/reader036/viewer/2022062306/5ede46b3ad6a402d66699939/html5/thumbnails/57.jpg)
2014 © Trivadis
DDD Building Blocks
18.09.2014
.NET Architektur & DDD
57
![Page 58: Enterprise-Softwarearchitektur und Domain Driven Design …...Enterprise-Softwarearchitektur und Domain Driven Design (DDD) Manuel Meyer, Senior Consultant Trivadis AG ... -> Unterstützung](https://reader036.fdocument.pub/reader036/viewer/2022062306/5ede46b3ad6a402d66699939/html5/thumbnails/58.jpg)
2014 © Trivadis
DDD Building Blocks
18.09.2014
.NET Architektur & DDD
58
![Page 59: Enterprise-Softwarearchitektur und Domain Driven Design …...Enterprise-Softwarearchitektur und Domain Driven Design (DDD) Manuel Meyer, Senior Consultant Trivadis AG ... -> Unterstützung](https://reader036.fdocument.pub/reader036/viewer/2022062306/5ede46b3ad6a402d66699939/html5/thumbnails/59.jpg)
2014 © Trivadis
Layered Architecture gemäss Eric Evans
� Wir isolieren den Domain Layer
� Der Fokus liegt auf dem Domain Layer
� Bei der Entwicklung und Diskussion des Models blenden wir die anderen Layers aus.
18.09.2014
.NET Architektur & DDD
59
![Page 60: Enterprise-Softwarearchitektur und Domain Driven Design …...Enterprise-Softwarearchitektur und Domain Driven Design (DDD) Manuel Meyer, Senior Consultant Trivadis AG ... -> Unterstützung](https://reader036.fdocument.pub/reader036/viewer/2022062306/5ede46b3ad6a402d66699939/html5/thumbnails/60.jpg)
2014 © Trivadis
DDD Building Blocks
18.09.2014
.NET Architektur & DDD
60
![Page 61: Enterprise-Softwarearchitektur und Domain Driven Design …...Enterprise-Softwarearchitektur und Domain Driven Design (DDD) Manuel Meyer, Senior Consultant Trivadis AG ... -> Unterstützung](https://reader036.fdocument.pub/reader036/viewer/2022062306/5ede46b3ad6a402d66699939/html5/thumbnails/61.jpg)
2014 © Trivadis
DDD Building Blocks
18.09.2014
.NET Architektur & DDD
61
![Page 62: Enterprise-Softwarearchitektur und Domain Driven Design …...Enterprise-Softwarearchitektur und Domain Driven Design (DDD) Manuel Meyer, Senior Consultant Trivadis AG ... -> Unterstützung](https://reader036.fdocument.pub/reader036/viewer/2022062306/5ede46b3ad6a402d66699939/html5/thumbnails/62.jpg)
2014 © Trivadis
Entities
� Entities stellen Business Objekte dar
� Entities haben eine Identität und einen Life Cycle
� Entities enthalten die Business Logik
� Entities sind Knowledge-Rich.
18.09.2014
.NET Architektur & DDD
62
![Page 63: Enterprise-Softwarearchitektur und Domain Driven Design …...Enterprise-Softwarearchitektur und Domain Driven Design (DDD) Manuel Meyer, Senior Consultant Trivadis AG ... -> Unterstützung](https://reader036.fdocument.pub/reader036/viewer/2022062306/5ede46b3ad6a402d66699939/html5/thumbnails/63.jpg)
2014 © Trivadis
Value Objects
� Kleine Datenpakete
� Keine Identität
� Müssen nicht unterscheidbar sein
� Vereinfachen das Model / entfernen Komplexität
� Sind Immutable
18.09.2014
.NET Architektur & DDD
63
![Page 64: Enterprise-Softwarearchitektur und Domain Driven Design …...Enterprise-Softwarearchitektur und Domain Driven Design (DDD) Manuel Meyer, Senior Consultant Trivadis AG ... -> Unterstützung](https://reader036.fdocument.pub/reader036/viewer/2022062306/5ede46b3ad6a402d66699939/html5/thumbnails/64.jpg)
2014 © Trivadis
DDD Building Blocks
18.09.2014
.NET Architektur & DDD
64
![Page 65: Enterprise-Softwarearchitektur und Domain Driven Design …...Enterprise-Softwarearchitektur und Domain Driven Design (DDD) Manuel Meyer, Senior Consultant Trivadis AG ... -> Unterstützung](https://reader036.fdocument.pub/reader036/viewer/2022062306/5ede46b3ad6a402d66699939/html5/thumbnails/65.jpg)
2014 © Trivadis
DDD Building Blocks
18.09.2014
.NET Architektur & DDD
65
![Page 66: Enterprise-Softwarearchitektur und Domain Driven Design …...Enterprise-Softwarearchitektur und Domain Driven Design (DDD) Manuel Meyer, Senior Consultant Trivadis AG ... -> Unterstützung](https://reader036.fdocument.pub/reader036/viewer/2022062306/5ede46b3ad6a402d66699939/html5/thumbnails/66.jpg)
2014 © Trivadis
Aggregates
� Fachlich sinnvolle Konstrukte aus Entitäten und Value Objects
� Haben immer 1 Root Entity
� Ausserhalb des Aggregates kann nur die Root Entity referenziert werden
� Die Root Entity ist verantwortlich für die Konsistenz des Aggregates.
18.09.2014
.NET Architektur & DDD
66
![Page 67: Enterprise-Softwarearchitektur und Domain Driven Design …...Enterprise-Softwarearchitektur und Domain Driven Design (DDD) Manuel Meyer, Senior Consultant Trivadis AG ... -> Unterstützung](https://reader036.fdocument.pub/reader036/viewer/2022062306/5ede46b3ad6a402d66699939/html5/thumbnails/67.jpg)
2014 © Trivadis
DDD Building Blocks
18.09.2014
.NET Architektur & DDD
67
![Page 68: Enterprise-Softwarearchitektur und Domain Driven Design …...Enterprise-Softwarearchitektur und Domain Driven Design (DDD) Manuel Meyer, Senior Consultant Trivadis AG ... -> Unterstützung](https://reader036.fdocument.pub/reader036/viewer/2022062306/5ede46b3ad6a402d66699939/html5/thumbnails/68.jpg)
2014 © Trivadis
DDD Building Blocks
18.09.2014
.NET Architektur & DDD
68
![Page 69: Enterprise-Softwarearchitektur und Domain Driven Design …...Enterprise-Softwarearchitektur und Domain Driven Design (DDD) Manuel Meyer, Senior Consultant Trivadis AG ... -> Unterstützung](https://reader036.fdocument.pub/reader036/viewer/2022062306/5ede46b3ad6a402d66699939/html5/thumbnails/69.jpg)
2014 © Trivadis
Factories
� Erstellen Entities/Aggregates
� Benützen FACTORY Patterns
� Kapseln die Logik, welche zum erstellen komplexer Objekte nötig ist.
18.09.2014
.NET Architektur & DDD
69
![Page 70: Enterprise-Softwarearchitektur und Domain Driven Design …...Enterprise-Softwarearchitektur und Domain Driven Design (DDD) Manuel Meyer, Senior Consultant Trivadis AG ... -> Unterstützung](https://reader036.fdocument.pub/reader036/viewer/2022062306/5ede46b3ad6a402d66699939/html5/thumbnails/70.jpg)
2014 © Trivadis
Repositories
� Kapseln die Persistierung von Entities/Aggregates
18.09.2014
.NET Architektur & DDD
70
![Page 71: Enterprise-Softwarearchitektur und Domain Driven Design …...Enterprise-Softwarearchitektur und Domain Driven Design (DDD) Manuel Meyer, Senior Consultant Trivadis AG ... -> Unterstützung](https://reader036.fdocument.pub/reader036/viewer/2022062306/5ede46b3ad6a402d66699939/html5/thumbnails/71.jpg)
2014 © Trivadis
DDD Building Blocks
18.09.2014
.NET Architektur & DDD
71
![Page 72: Enterprise-Softwarearchitektur und Domain Driven Design …...Enterprise-Softwarearchitektur und Domain Driven Design (DDD) Manuel Meyer, Senior Consultant Trivadis AG ... -> Unterstützung](https://reader036.fdocument.pub/reader036/viewer/2022062306/5ede46b3ad6a402d66699939/html5/thumbnails/72.jpg)
2014 © Trivadis
DDD Building Blocks
18.09.2014
.NET Architektur & DDD
72
![Page 73: Enterprise-Softwarearchitektur und Domain Driven Design …...Enterprise-Softwarearchitektur und Domain Driven Design (DDD) Manuel Meyer, Senior Consultant Trivadis AG ... -> Unterstützung](https://reader036.fdocument.pub/reader036/viewer/2022062306/5ede46b3ad6a402d66699939/html5/thumbnails/73.jpg)
2014 © Trivadis
Services
� Kapseln Logik, welche nicht bestimmten Entities zugewiesen werden kann.
� Stateless by Design
� Domain vs. Application vs. Infrastructure Services.
18.09.2014
.NET Architektur & DDD
73
![Page 74: Enterprise-Softwarearchitektur und Domain Driven Design …...Enterprise-Softwarearchitektur und Domain Driven Design (DDD) Manuel Meyer, Senior Consultant Trivadis AG ... -> Unterstützung](https://reader036.fdocument.pub/reader036/viewer/2022062306/5ede46b3ad6a402d66699939/html5/thumbnails/74.jpg)
2014 © Trivadis
DDD Konzepte
� „Making implicit Concepts explicit“
� Supple Design� Intention-Revealing Interfaces
� Side Effect Free Functions
� Assertions (pre-, postconditions, invariants)
� Bounded Context / Context Map & Continuous Integration
� Distillation� Generic SubDomains
� Domain Vision Statement.
18.09.2014
.NET Architektur & DDD
74
![Page 75: Enterprise-Softwarearchitektur und Domain Driven Design …...Enterprise-Softwarearchitektur und Domain Driven Design (DDD) Manuel Meyer, Senior Consultant Trivadis AG ... -> Unterstützung](https://reader036.fdocument.pub/reader036/viewer/2022062306/5ede46b3ad6a402d66699939/html5/thumbnails/75.jpg)
2014 © Trivadis
DDD Konzepte
� „Making Implicit Concepts Explicit“
18.09.2014
.NET Architektur & DDD
75
*
Die Capacity darf nicht überschritten werden!
*
Ubiquitous Language
![Page 76: Enterprise-Softwarearchitektur und Domain Driven Design …...Enterprise-Softwarearchitektur und Domain Driven Design (DDD) Manuel Meyer, Senior Consultant Trivadis AG ... -> Unterstützung](https://reader036.fdocument.pub/reader036/viewer/2022062306/5ede46b3ad6a402d66699939/html5/thumbnails/76.jpg)
2014 © Trivadis
DDD Konzepte
Bounded Context/Context Map/Continuous Integration
� Definition des Kontexts, in welchem ein Model gültig ist.
� Grenzen: Teams, Teile der Applikation, Code, Infrastruktur
� Definition der Beziehungen zwischen Models
� Die Context Map zeigt das Big Picture
� Continuous Integration stellt sicher, dass die verschiedenen BCs zueinander passen
18.09.2014
.NET Architektur & DDD
76
![Page 77: Enterprise-Softwarearchitektur und Domain Driven Design …...Enterprise-Softwarearchitektur und Domain Driven Design (DDD) Manuel Meyer, Senior Consultant Trivadis AG ... -> Unterstützung](https://reader036.fdocument.pub/reader036/viewer/2022062306/5ede46b3ad6a402d66699939/html5/thumbnails/77.jpg)
2014 © Trivadis
DDD Konzepte
Bounded Context/Context Map/Continuous Integration
18.09.2014
.NET Architektur & DDD
77
![Page 78: Enterprise-Softwarearchitektur und Domain Driven Design …...Enterprise-Softwarearchitektur und Domain Driven Design (DDD) Manuel Meyer, Senior Consultant Trivadis AG ... -> Unterstützung](https://reader036.fdocument.pub/reader036/viewer/2022062306/5ede46b3ad6a402d66699939/html5/thumbnails/78.jpg)
2014 © Trivadis
DDD Konzepte
Context Map
18.09.2014
.NET Architektur & DDD
78
![Page 79: Enterprise-Softwarearchitektur und Domain Driven Design …...Enterprise-Softwarearchitektur und Domain Driven Design (DDD) Manuel Meyer, Senior Consultant Trivadis AG ... -> Unterstützung](https://reader036.fdocument.pub/reader036/viewer/2022062306/5ede46b3ad6a402d66699939/html5/thumbnails/79.jpg)
2014 © Trivadis
DDD Konzepte: Distillation
� „Wie gewinnt man die Essenz?“
� Generische vs. Essentielle Konzepte� Generic SubDomains
� Dokumentation� Domain Vision Statement (1p)
� Highlighted Core (3-7p).
18.09.2014
.NET Architektur & DDD
79
![Page 80: Enterprise-Softwarearchitektur und Domain Driven Design …...Enterprise-Softwarearchitektur und Domain Driven Design (DDD) Manuel Meyer, Senior Consultant Trivadis AG ... -> Unterstützung](https://reader036.fdocument.pub/reader036/viewer/2022062306/5ede46b3ad6a402d66699939/html5/thumbnails/80.jpg)
2014 © Trivadis
4 DDD Best Practices von Eric Evans
1. Stay Hands-On: Modelers need to code!
2. Focus on concrete scenarios
3. Do NOT apply DDD to everything. Draw a context map!
4. Experiment a lot and make lots of mistakes.
18.09.2014
.NET Architektur & DDD
80
![Page 81: Enterprise-Softwarearchitektur und Domain Driven Design …...Enterprise-Softwarearchitektur und Domain Driven Design (DDD) Manuel Meyer, Senior Consultant Trivadis AG ... -> Unterstützung](https://reader036.fdocument.pub/reader036/viewer/2022062306/5ede46b3ad6a402d66699939/html5/thumbnails/81.jpg)
2014 © Trivadis
DDD Anti-Patterns
� Anemic Domain Model
� Smart UI
� Data Driven Design (Bottom-Up).
18.09.2014
.NET Architektur & DDD
81
“Ein Model, in welchem die Entitäten nur
Daten transportieren”
![Page 82: Enterprise-Softwarearchitektur und Domain Driven Design …...Enterprise-Softwarearchitektur und Domain Driven Design (DDD) Manuel Meyer, Senior Consultant Trivadis AG ... -> Unterstützung](https://reader036.fdocument.pub/reader036/viewer/2022062306/5ede46b3ad6a402d66699939/html5/thumbnails/82.jpg)
2014 © Trivadis
18.09.2014
.NET Architektur & DDD
Von Data-Driven zu Domain-Driven in
.NET
82
![Page 83: Enterprise-Softwarearchitektur und Domain Driven Design …...Enterprise-Softwarearchitektur und Domain Driven Design (DDD) Manuel Meyer, Senior Consultant Trivadis AG ... -> Unterstützung](https://reader036.fdocument.pub/reader036/viewer/2022062306/5ede46b3ad6a402d66699939/html5/thumbnails/83.jpg)
2014 © Trivadis
DDD in .NET
� N-Layered Domain-Oriented Architecture Guide with .NET 4.0� Cesar de la Torre, Architect Advisor,
Microsoft
� Applying Domain Driven Design and Patterns� Jimmy Nilsson
� .NET Domain-Driven Design with C#: Problem – Design – Solution� Tim McCarthy
18.09.2014
.NET Architektur & DDD
83
![Page 84: Enterprise-Softwarearchitektur und Domain Driven Design …...Enterprise-Softwarearchitektur und Domain Driven Design (DDD) Manuel Meyer, Senior Consultant Trivadis AG ... -> Unterstützung](https://reader036.fdocument.pub/reader036/viewer/2022062306/5ede46b3ad6a402d66699939/html5/thumbnails/84.jpg)
2014 © Trivadis
N-Layered DDD Architecture
Eric Evans
18.09.2014
.NET Architektur & DDD
84
C. De la Torre
![Page 85: Enterprise-Softwarearchitektur und Domain Driven Design …...Enterprise-Softwarearchitektur und Domain Driven Design (DDD) Manuel Meyer, Senior Consultant Trivadis AG ... -> Unterstützung](https://reader036.fdocument.pub/reader036/viewer/2022062306/5ede46b3ad6a402d66699939/html5/thumbnails/85.jpg)
2014 © Trivadis
N-Layered DDD Architecture
18.09.2014
.NET Architektur & DDD
85
C. De la Torre
![Page 86: Enterprise-Softwarearchitektur und Domain Driven Design …...Enterprise-Softwarearchitektur und Domain Driven Design (DDD) Manuel Meyer, Senior Consultant Trivadis AG ... -> Unterstützung](https://reader036.fdocument.pub/reader036/viewer/2022062306/5ede46b3ad6a402d66699939/html5/thumbnails/86.jpg)
2014 © Trivadis
N-Layered DDD Architecture
� Layering
18.09.2014
.NET Architektur & DDD
86
![Page 87: Enterprise-Softwarearchitektur und Domain Driven Design …...Enterprise-Softwarearchitektur und Domain Driven Design (DDD) Manuel Meyer, Senior Consultant Trivadis AG ... -> Unterstützung](https://reader036.fdocument.pub/reader036/viewer/2022062306/5ede46b3ad6a402d66699939/html5/thumbnails/87.jpg)
2014 © Trivadis
N-Layered DDD: Technology Map
18.09.2014
.NET Architektur & DDD
87
MS Technology Guide for Business Applications (http://www.microsoft.com/net/nettechnologyguidance)
![Page 88: Enterprise-Softwarearchitektur und Domain Driven Design …...Enterprise-Softwarearchitektur und Domain Driven Design (DDD) Manuel Meyer, Senior Consultant Trivadis AG ... -> Unterstützung](https://reader036.fdocument.pub/reader036/viewer/2022062306/5ede46b3ad6a402d66699939/html5/thumbnails/88.jpg)
2014 © Trivadis
Exemplarisches Vorgehen (gemäss Tim McCarthy)
1. Das Domain Model designen
2. Die Aggregates bestimmen
3. Die Aggregate Boundaries bestimmen
4. Die Repositories designen
5. Tests dazu schreiben
6. Die Repositories implementieren.
18.09.2014
.NET Architektur & DDD
88
![Page 89: Enterprise-Softwarearchitektur und Domain Driven Design …...Enterprise-Softwarearchitektur und Domain Driven Design (DDD) Manuel Meyer, Senior Consultant Trivadis AG ... -> Unterstützung](https://reader036.fdocument.pub/reader036/viewer/2022062306/5ede46b3ad6a402d66699939/html5/thumbnails/89.jpg)
2014 © Trivadis
Exemplarisches Vorgehen (gemäss Tim McCarthy)
1. Das Domain Model designen
18.09.2014
.NET Architektur & DDD
89
![Page 90: Enterprise-Softwarearchitektur und Domain Driven Design …...Enterprise-Softwarearchitektur und Domain Driven Design (DDD) Manuel Meyer, Senior Consultant Trivadis AG ... -> Unterstützung](https://reader036.fdocument.pub/reader036/viewer/2022062306/5ede46b3ad6a402d66699939/html5/thumbnails/90.jpg)
2014 © Trivadis
Exemplarisches Vorgehen (gemäss Tim McCarthy)
2. Die Aggregates bestimmen
18.09.2014
.NET Architektur & DDD
90
![Page 91: Enterprise-Softwarearchitektur und Domain Driven Design …...Enterprise-Softwarearchitektur und Domain Driven Design (DDD) Manuel Meyer, Senior Consultant Trivadis AG ... -> Unterstützung](https://reader036.fdocument.pub/reader036/viewer/2022062306/5ede46b3ad6a402d66699939/html5/thumbnails/91.jpg)
2014 © Trivadis
Exemplarisches Vorgehen (gemäss Tim McCarthy)
3. Die Aggregate Boundaries bestimmen
18.09.2014
.NET Architektur & DDD
91
![Page 92: Enterprise-Softwarearchitektur und Domain Driven Design …...Enterprise-Softwarearchitektur und Domain Driven Design (DDD) Manuel Meyer, Senior Consultant Trivadis AG ... -> Unterstützung](https://reader036.fdocument.pub/reader036/viewer/2022062306/5ede46b3ad6a402d66699939/html5/thumbnails/92.jpg)
2014 © Trivadis
Exemplarisches Vorgehen (gemäss Tim McCarthy)
4. Die Repositories designen
18.09.2014
.NET Architektur & DDD
92
![Page 93: Enterprise-Softwarearchitektur und Domain Driven Design …...Enterprise-Softwarearchitektur und Domain Driven Design (DDD) Manuel Meyer, Senior Consultant Trivadis AG ... -> Unterstützung](https://reader036.fdocument.pub/reader036/viewer/2022062306/5ede46b3ad6a402d66699939/html5/thumbnails/93.jpg)
2014 © Trivadis
Exemplarisches Vorgehen (gemäss Tim McCarthy)
4. Die Repositories designen
18.09.2014
.NET Architektur & DDD
93
![Page 94: Enterprise-Softwarearchitektur und Domain Driven Design …...Enterprise-Softwarearchitektur und Domain Driven Design (DDD) Manuel Meyer, Senior Consultant Trivadis AG ... -> Unterstützung](https://reader036.fdocument.pub/reader036/viewer/2022062306/5ede46b3ad6a402d66699939/html5/thumbnails/94.jpg)
2014 © Trivadis
Exemplarisches Vorgehen (gemäss Tim McCarthy)
5. Tests dazu schreiben
18.09.2014
.NET Architektur & DDD
94
![Page 95: Enterprise-Softwarearchitektur und Domain Driven Design …...Enterprise-Softwarearchitektur und Domain Driven Design (DDD) Manuel Meyer, Senior Consultant Trivadis AG ... -> Unterstützung](https://reader036.fdocument.pub/reader036/viewer/2022062306/5ede46b3ad6a402d66699939/html5/thumbnails/95.jpg)
2014 © Trivadis
DDD Praxis Tipps
� Beim designen von Entitäten den Datenzugriff ausblenden, später ein Tool wie z.B. EF Code First benützen für den Datenzugriff.
� Entities:� Property Setter privat markieren, Datenmodifikation über Methoden
kontrollieren.
� Instanzierung in Factories auslagern
� Parameterlosen Konstruktor verstecken
� Nicht essentielle Aufgaben über Bounded Context auslagern und z.B. mit simplem CRUD oder gar OTS lösen.
� Simple Domänenobjekte identifizieren und mit Value Objekts abbilden
� Beziehungen identifizieren und vereinfachen.
18.09.2014
.NET Architektur & DDD
95
![Page 96: Enterprise-Softwarearchitektur und Domain Driven Design …...Enterprise-Softwarearchitektur und Domain Driven Design (DDD) Manuel Meyer, Senior Consultant Trivadis AG ... -> Unterstützung](https://reader036.fdocument.pub/reader036/viewer/2022062306/5ede46b3ad6a402d66699939/html5/thumbnails/96.jpg)
2014 © Trivadis
18.09.2014
.NET Architektur & DDD
Zusammenfassung
96
![Page 97: Enterprise-Softwarearchitektur und Domain Driven Design …...Enterprise-Softwarearchitektur und Domain Driven Design (DDD) Manuel Meyer, Senior Consultant Trivadis AG ... -> Unterstützung](https://reader036.fdocument.pub/reader036/viewer/2022062306/5ede46b3ad6a402d66699939/html5/thumbnails/97.jpg)
2014 © Trivadis
Zusammenfassung
� Kosten & Legacy
18.09.2014
.NET Architektur & DDD
97
![Page 98: Enterprise-Softwarearchitektur und Domain Driven Design …...Enterprise-Softwarearchitektur und Domain Driven Design (DDD) Manuel Meyer, Senior Consultant Trivadis AG ... -> Unterstützung](https://reader036.fdocument.pub/reader036/viewer/2022062306/5ede46b3ad6a402d66699939/html5/thumbnails/98.jpg)
2014 © Trivadis
SOLID Principles
� SRP: Single Responsibility Principle
� OCP: Open Closed Principle
� LSP: Liskov Substitution Principle
� ISP: Interface Segregation Principle
� DIP: Dependency Inversion Principle
18.09.2014
.NET Architektur & DDD
98
![Page 99: Enterprise-Softwarearchitektur und Domain Driven Design …...Enterprise-Softwarearchitektur und Domain Driven Design (DDD) Manuel Meyer, Senior Consultant Trivadis AG ... -> Unterstützung](https://reader036.fdocument.pub/reader036/viewer/2022062306/5ede46b3ad6a402d66699939/html5/thumbnails/99.jpg)
2014 © Trivadis
Domain Driven Design
18.09.2014
.NET Architektur & DDD
99
Ubiquitous Language
Knowledge-Rich Model
‘’Make implicit concepts explicit»
Supple Design
DDD Konzepte
Persistence Ignorance.
![Page 100: Enterprise-Softwarearchitektur und Domain Driven Design …...Enterprise-Softwarearchitektur und Domain Driven Design (DDD) Manuel Meyer, Senior Consultant Trivadis AG ... -> Unterstützung](https://reader036.fdocument.pub/reader036/viewer/2022062306/5ede46b3ad6a402d66699939/html5/thumbnails/100.jpg)
2014 © Trivadis
DDD Building Blocks
18.09.2014
.NET Architektur & DDD
100
![Page 101: Enterprise-Softwarearchitektur und Domain Driven Design …...Enterprise-Softwarearchitektur und Domain Driven Design (DDD) Manuel Meyer, Senior Consultant Trivadis AG ... -> Unterstützung](https://reader036.fdocument.pub/reader036/viewer/2022062306/5ede46b3ad6a402d66699939/html5/thumbnails/101.jpg)
2014 © Trivadis
N-Layered DDD Architecture
Eric Evans
18.09.2014
.NET Architektur & DDD
101
C. De la Torre
![Page 102: Enterprise-Softwarearchitektur und Domain Driven Design …...Enterprise-Softwarearchitektur und Domain Driven Design (DDD) Manuel Meyer, Senior Consultant Trivadis AG ... -> Unterstützung](https://reader036.fdocument.pub/reader036/viewer/2022062306/5ede46b3ad6a402d66699939/html5/thumbnails/102.jpg)
2014 © Trivadis
Exemplarisches Vorgehen (gemäss Tim McCarthy)
18.09.2014
.NET Architektur & DDD
102
![Page 103: Enterprise-Softwarearchitektur und Domain Driven Design …...Enterprise-Softwarearchitektur und Domain Driven Design (DDD) Manuel Meyer, Senior Consultant Trivadis AG ... -> Unterstützung](https://reader036.fdocument.pub/reader036/viewer/2022062306/5ede46b3ad6a402d66699939/html5/thumbnails/103.jpg)
2014 © Trivadis
Zusammenfassung
18.09.2014
.NET Architektur & DDD
103
![Page 104: Enterprise-Softwarearchitektur und Domain Driven Design …...Enterprise-Softwarearchitektur und Domain Driven Design (DDD) Manuel Meyer, Senior Consultant Trivadis AG ... -> Unterstützung](https://reader036.fdocument.pub/reader036/viewer/2022062306/5ede46b3ad6a402d66699939/html5/thumbnails/104.jpg)
2014 © Trivadis
BASEL BERN BRUGG LAUSANNE ZÜRICH DÜSSELDORF FRANKFURT A.M. FREIBURG I.BR. HAMBURG MÜNCHEN STUTTGART WIEN
Vielen Dank!
2014 © Trivadis
Manuel Meyer
Senior Consultant Trivadis AG
18.09.2014
.NET Architektur & DDD