Your SlideShare is downloading. ×
Strategischer Anwendungsentwurf mit Domain-Driven Design
Strategischer Anwendungsentwurf mit Domain-Driven Design
Strategischer Anwendungsentwurf mit Domain-Driven Design
Strategischer Anwendungsentwurf mit Domain-Driven Design
Strategischer Anwendungsentwurf mit Domain-Driven Design
Strategischer Anwendungsentwurf mit Domain-Driven Design
Strategischer Anwendungsentwurf mit Domain-Driven Design
Strategischer Anwendungsentwurf mit Domain-Driven Design
Strategischer Anwendungsentwurf mit Domain-Driven Design
Strategischer Anwendungsentwurf mit Domain-Driven Design
Strategischer Anwendungsentwurf mit Domain-Driven Design
Strategischer Anwendungsentwurf mit Domain-Driven Design
Strategischer Anwendungsentwurf mit Domain-Driven Design
Strategischer Anwendungsentwurf mit Domain-Driven Design
Strategischer Anwendungsentwurf mit Domain-Driven Design
Strategischer Anwendungsentwurf mit Domain-Driven Design
Strategischer Anwendungsentwurf mit Domain-Driven Design
Strategischer Anwendungsentwurf mit Domain-Driven Design
Strategischer Anwendungsentwurf mit Domain-Driven Design
Strategischer Anwendungsentwurf mit Domain-Driven Design
Strategischer Anwendungsentwurf mit Domain-Driven Design
Strategischer Anwendungsentwurf mit Domain-Driven Design
Strategischer Anwendungsentwurf mit Domain-Driven Design
Strategischer Anwendungsentwurf mit Domain-Driven Design
Strategischer Anwendungsentwurf mit Domain-Driven Design
Strategischer Anwendungsentwurf mit Domain-Driven Design
Strategischer Anwendungsentwurf mit Domain-Driven Design
Strategischer Anwendungsentwurf mit Domain-Driven Design
Strategischer Anwendungsentwurf mit Domain-Driven Design
Strategischer Anwendungsentwurf mit Domain-Driven Design
Strategischer Anwendungsentwurf mit Domain-Driven Design
Strategischer Anwendungsentwurf mit Domain-Driven Design
Strategischer Anwendungsentwurf mit Domain-Driven Design
Strategischer Anwendungsentwurf mit Domain-Driven Design
Strategischer Anwendungsentwurf mit Domain-Driven Design
Strategischer Anwendungsentwurf mit Domain-Driven Design
Strategischer Anwendungsentwurf mit Domain-Driven Design
Strategischer Anwendungsentwurf mit Domain-Driven Design
Strategischer Anwendungsentwurf mit Domain-Driven Design
Strategischer Anwendungsentwurf mit Domain-Driven Design
Strategischer Anwendungsentwurf mit Domain-Driven Design
Strategischer Anwendungsentwurf mit Domain-Driven Design
Strategischer Anwendungsentwurf mit Domain-Driven Design
Strategischer Anwendungsentwurf mit Domain-Driven Design
Strategischer Anwendungsentwurf mit Domain-Driven Design
Strategischer Anwendungsentwurf mit Domain-Driven Design
Strategischer Anwendungsentwurf mit Domain-Driven Design
Strategischer Anwendungsentwurf mit Domain-Driven Design
Strategischer Anwendungsentwurf mit Domain-Driven Design
Strategischer Anwendungsentwurf mit Domain-Driven Design
Strategischer Anwendungsentwurf mit Domain-Driven Design
Strategischer Anwendungsentwurf mit Domain-Driven Design
Strategischer Anwendungsentwurf mit Domain-Driven Design
Strategischer Anwendungsentwurf mit Domain-Driven Design
Strategischer Anwendungsentwurf mit Domain-Driven Design
Strategischer Anwendungsentwurf mit Domain-Driven Design
Strategischer Anwendungsentwurf mit Domain-Driven Design
Strategischer Anwendungsentwurf mit Domain-Driven Design
Strategischer Anwendungsentwurf mit Domain-Driven Design
Strategischer Anwendungsentwurf mit Domain-Driven Design
Strategischer Anwendungsentwurf mit Domain-Driven Design
Strategischer Anwendungsentwurf mit Domain-Driven Design
Strategischer Anwendungsentwurf mit Domain-Driven Design
Strategischer Anwendungsentwurf mit Domain-Driven Design
Strategischer Anwendungsentwurf mit Domain-Driven Design
Strategischer Anwendungsentwurf mit Domain-Driven Design
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Strategischer Anwendungsentwurf mit Domain-Driven Design

461

Published on

Presented at dotnet-zentral.ch on March 18th 2013 by Dennis Traub

Presented at dotnet-zentral.ch on March 18th 2013 by Dennis Traub

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
461
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
1
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Strategischer Anwendungsentwurf mit Domain-Driven Design presented by Dennis Traub .NET Usergroup Zentralschweiz - 18. März 2013Dennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 2. Now, who‘s that guy? Dennis Traub Founder, Owner, CEO, Single Employee of D. Traub Software Development Consultancy Consultant, developer, trainer, speaker 39 years old Married, father of one 20+ years in software development Hire me at mail@dennistraub.de @dtraubDennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 3. AGENDAThe Blue Book An Example Break Tactical Patterns Actually it should Bounded Contexts A short review of be two books! and Subdomains the Building Blocks 1 2 3 4 5 6 Terminology Lasagna End of Strategic Design … the new Spaghetti Questions & AnswersDennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 4. AGENDAThe Blue Book An Example Tactical Patterns Actually it should Bounded Contexts A short review of be two books! and Subdomains the Building Blocks 1 2 3 4 5 6 Terminology Lasagna End of Strategic Design … the new Spaghetti Questions & AnswersDennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 5. The „Blue Book“ by Eric Evans Image PlaceholderDennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 6. The „Blue Book“ by Eric Evans • Entities • Value Objects Tactical • Aggregates Class • Repositories Design • Services • Factories • etc. It should be two books! • Model Integrity • Large-Scale Structure • Bounded Contexts Strategic • Core Domain DDD • Context Maps • Ubiquitous Language • etc.Dennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 7. AGENDAThe Blue Book An Example Tactical Patterns Actually it should Bounded Contexts A short review of be two books! and Subdomains the Building Blocks 1 2 3 4 5 6 Terminology Lasagna End of Strategic Design … the new Spaghetti Questions & AnswersDennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 8. DomainDennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 9. Domain a sphere of knowledge, influence, or activityDennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 10. Domain what an organization does and the world it does it inDennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 11. Domain ModelDennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 12. Domain Model a system of abstractions that describes selected aspects of a domainDennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 13. Domain Model can be used to solve problems related to that domainDennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 14. don‘t model realityDennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 15. we model useful abstractions of realityDennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 16. Ubiquitous LanguageDennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 17. Ubiquitous Language a language structured around the domain modelDennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 18. Ubiquitous Language used by all team membersDennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 19. Bounded ContextDennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 20. Bounded Context an explicit boundary within which a domain model existsDennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 21. Bounded Context inside the boundary all terms have specific meaningDennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 22. Bounded Context these terms are part of the context‘s ubiquitous languageDennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 23. SubdomainsDennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 24. Subdomains the whole domain of the organization is comprised of subdomainsDennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 25. Subdomains they focus on only one specific area of the whole business domainDennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 26. Core DomainDennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 27. Core Domain the distinctive part of the model, central to the users‘ goalsDennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 28. Core Domain differentiates the application and makes it valuableDennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 29. Core Domain the most important subdomainDennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 30. AGENDAThe Blue Book An Example Tactical Patterns Actually it should Bounded Contexts A short review of be two books! and Subdomains the Building Blocks 1 2 3 4 5 6 Terminology Lasagna End of Strategic Design … the new Spaghetti Questions & AnswersDennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 31. Our Domain:Dennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 32. AviationDennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 33. Our Application:Dennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 34. Ambulance Flight ManagementDennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 35. Ambulance Flight Management order flights from an operator dispatch patients assign medical staffDennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 36. Bounded Contexts 1 Patiententransport-Disposition 2 Flugplanung und -durchführung 3 Personaleinsatzplanung (Flugärzte, Rettungsassistenten) 4 Patientendaten, Abrechnung, Buchhaltung 5 SOAP- oder REST-Services, Web-OberflächeDennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 37. Subdomains 1 Ambulanzflug-Disposition 6 Bodentransport 2 Flotten-Management 7 Abrechnung, Buchhaltung 3 Flugplanung 8 Anwendungsoberfläche 4 Passagier-/Patientendaten 9 SOAP-/REST-Schnittstelle 5 Medizinisches Personal 10 Benutzer- und ZugriffssteuerungDennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 38. don‘t build a model that works for everyoneDennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 39. to focus our effort and resources we ask two questions for each subdomainDennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 40. 1 how complex is it?Dennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 41. 2 what‘s the value to our specific problem? (if we model it ourselves)Dennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 42. 1. Complexity (S/M/H) 1 Ambulanzflug-Disposition 6 Bodentransport 2 Flotten-Management 7 Abrechnung, Buchhaltung 3 Flugplanung 8 Anwendungsoberfläche 4 Passagier-/Patientendaten 9 SOAP-/REST-Schnittstelle 5 Medizinisches Personal 10 Benutzer- und ZugriffssteuerungDennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 43. 2. Value (S/M/H) 1 Ambulanzflug-Disposition 6 Bodentransport 2 Flotten-Management 7 Abrechnung, Buchhaltung 3 Flugplanung 8 Anwendungsoberfläche 4 Passagier-/Patientendaten 9 SOAP-/REST-Schnittstelle 5 Medizinisches Personal 10 Benutzer- und ZugriffssteuerungDennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 44. the tactical Building Blocks we don‘t use DDD when there is no value in formalizing the problemDennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 45. we only use DDD in parts where we get a competitive advantageDennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 46. 15 minutes BREAKDennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 47. AGENDAThe Blue Book An Example Tactical Patterns Actually it should Bounded Contexts A short review of be two books! and Subdomains the Building Blocks 1 2 3 4 5 6 Terminology Lasagna End of Strategic Design … the new Spaghetti Questions & AnswersDennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 48. Presentation Layer Common Services Infrastructure Application Services Domain / Business Model / BLL DAL / O/R-MapperDennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 49. Ports & Adapters Hexagonal Architecture Onion ArchitectureDennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 50. Dependency Inversion Principle (just in case) the D in SOLIDDennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 51. AGENDAThe Blue Book An Example Tactical Patterns Actually it should Bounded Contexts A short review of be two books! and Subdomains the Building Blocks 1 2 3 4 5 6 Terminology Lasagna End of Strategic Design … the new Spaghetti Questions & AnswersDennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 52. EntityDennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 53. Entity an object primarily defined by its identityDennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 54. Entity has a life cycle that can radically change its form and contentDennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 55. Value ObjectDennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 56. Value Object an object that represents a descriptive aspect of the domainDennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 57. Value Object doesn‘t have a distinct identity treated as immutableDennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 58. AggregateDennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 59. Aggregate a cluster of associated objectsDennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 60. Aggregate treated as a unit for the purpose of data changesDennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 61. Aggregate a set of consistency rules applies within the aggregate‘s boundariesDennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 62. Aggregate enforces its own invariants and is always in a valid stateDennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 63. AGENDAThe Blue Book An Example Tactical Patterns Actually it should Bounded Contexts A short review of be two books! and Subdomains the Building Blocks 1 2 3 4 5 6 Terminology Lasagna End of Strategic Design … the new Spaghetti Questions & AnswersDennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 64. To summarize: DDD is basically the application of the SOLID principles of object-orientation on an architectural levelDennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 65. ? QUESTIONSDennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 66. THANK YOU! follow me: @dtraubDennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de

×