Strategic Appplication Development with Domain-Driven Design (DDD)

2,819 views

Published on

Published in: Technology
0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,819
On SlideShare
0
From Embeds
0
Number of Embeds
1,268
Actions
Shares
0
Downloads
0
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide

Strategic Appplication Development with Domain-Driven Design (DDD)

  1. 1. Dennis Traub @dtraubstrategic application development withDomain-Driven Designdotnet Cologne 2013 – 03. Mai 2013 – #dnc13
  2. 2. Dennis Traub @dtraubNow, who‘s that guy?Dennis TraubFounder, Owner, CEO, Single Employee ofD. Traub Software Development Consultancy@dtraubConsultant, developer, trainer, speaker39 years oldMarried, father of one
  3. 3. Dennis Traub @dtraub51Blue BookActually it shouldbe two books!TerminologyThe Ubiquitous Language2An ExampleBounded Contextsand Subdomains3Lasagna… the new Spaghetti?4EndQuestions & AnswersAGENDA
  4. 4. Dennis Traub @dtraubImage PlaceholderThe „Blue Book“ by Eric Evans
  5. 5. Dennis Traub @dtraub• Entities• Value Objects• Aggregates• Repositories• Services• Factories• etc.The „Blue Book“ by Eric EvansTacticalClassDesign• Model Integrity• Large-Scale Structure• Bounded Contexts• Core Domain• Context Maps• Ubiquitous Language• etc.StrategicDDDIt should be two books!
  6. 6. Dennis Traub @dtraubDomain
  7. 7. Dennis Traub @dtrauba sphere ofknowledge, influence, or activity
  8. 8. Dennis Traub @dtraubwhat an organization doesand the world it does it in
  9. 9. Dennis Traub @dtraubDomain Model
  10. 10. Dennis Traub @dtrauba system of abstractions that describesselected aspects of a domain
  11. 11. Dennis Traub @dtraubcan be used to solve problemsrelated to that domain
  12. 12. Dennis Traub @dtraubdon‘t model reality
  13. 13. Dennis Traub @dtraubwe model useful abstractions of reality
  14. 14. Dennis Traub @dtraubUbiquitous Language
  15. 15. Dennis Traub @dtrauba language structured aroundthe domain model
  16. 16. Dennis Traub @dtraubused by all team members
  17. 17. Dennis Traub @dtraubBounded Context
  18. 18. Dennis Traub @dtrauban explicit boundary within whicha domain model exists
  19. 19. Dennis Traub @dtraubinside the boundaryall terms have specific meaning
  20. 20. Dennis Traub @dtraubthese terms are part of the context‘subiquitous language
  21. 21. Dennis Traub @dtraubSubdomains
  22. 22. Dennis Traub @dtraubthe whole domain of the organizationis comprised of subdomains
  23. 23. Dennis Traub @dtraubthey focus on only onespecific area of the whole business domain
  24. 24. Dennis Traub @dtraubCore Domain
  25. 25. Dennis Traub @dtraubthe distinctive part of the model,central to the users‘ goals
  26. 26. Dennis Traub @dtraubdifferentiates the application andmakes it valuable
  27. 27. Dennis Traub @dtraubthe most important subdomain
  28. 28. Dennis Traub @dtraubExample:
  29. 29. Dennis Traub @dtraubAmbulance Flight Managementorder flights from an operatordispatch patientsassign medical staff
  30. 30. Dennis Traub @dtraubBounded Contexts1 Patiententransport-Disposition2 Flugplanung und -durchführung3 Personaleinsatzplanung (Flugärzte, Rettungsassistenten)4 Stammdaten, Rechnungswesen5 Benutzerrechte, Web-Oberfläche
  31. 31. Dennis Traub @dtraubSubdomains6 Bodentransport7 Abrechnung, Buchhaltung8 Anwendungsoberfläche9 REST-Schnittstelle10 Benutzer- und Zugriffsrechte1 Ambulanzflug-Disposition2 Flottenmanagement3 Flugplanung4 Passagier-/Patientendaten5 Medizinisches Personal
  32. 32. Dennis Traub @dtraubremember, we don‘t build a model thatworks for everyone
  33. 33. Dennis Traub @dtraubto focus our effort and resources we asktwo questions for each subdomain
  34. 34. Dennis Traub @dtraubhow complex is it?1
  35. 35. Dennis Traub @dtraubwhat‘s the value to our specific problem?(if we model it ourselves)2
  36. 36. Dennis Traub @dtraubCore Domain6 Bodentransport7 Abrechnung, Buchhaltung8 Anwendungsoberfläche9 REST-Schnittstelle10 Benutzer- und Zugriffsrechte1 Ambulanzflug-Disposition2 Flottenmanagement3 Flugplanung4 Passagier-/Patientendaten5 Medizinisches PersonalAmbulanzflug-Disposition
  37. 37. Dennis Traub @dtraubwe don‘t use DDDwhen there is no value informalizing the problemthe tactical Building Blocks
  38. 38. Dennis Traub @dtraubwe only use DDD in partswhere we get a competitiveadvantage
  39. 39. Dennis Traub @dtraubBest PracticeArchitecture
  40. 40. Dennis Traub @dtraubDAL / O/R-MapperDomain / Business Model / BLLPresentation LayerApplication ServicesInfrastructureCommonServices
  41. 41. Dennis Traub @dtraubWCFData AccessUIBusiness LogicI/O
  42. 42. Dennis Traub @dtraubLasagna is the new Spaghetti
  43. 43. Dennis Traub @dtraubUI Data AccessDomain ModelApplication ServicesI/OWCF Tests
  44. 44. Dennis Traub @dtraubthe D in SOLIDDependencyInversion Principle (just in case)
  45. 45. Dennis Traub @dtraubUI Data AccessDomain ModelApplication ServicesI/OWCF Tests
  46. 46. Dennis Traub @dtraubSource: Growing Object-OrientedSoftware, Guided by Tests -- Freeman & PryceSimpleTestableFlexible
  47. 47. Dennis Traub @dtraubOnion ArchitectureHexagonal ArchitecturePorts & AdaptersArchitecture
  48. 48. Dennis Traub @dtraubSummary
  49. 49. Dennis Traub @dtraubDDD != Silver Bullet
  50. 50. Dennis Traub @dtraubDDD != Diagrams
  51. 51. Dennis Traub @dtraubDDD != Class Modeling
  52. 52. Dennis Traub @dtraubDDD == how the business works
  53. 53. Dennis Traub @dtraubDDD == Separation of Concerns
  54. 54. Dennis Traub @dtraubDDD is basically the application ofthe SOLID principles of object-orientationon an architectural level
  55. 55. Dennis Traub @dtraubImage PlaceholderThe „Blue Book“ by Eric Evans
  56. 56. Dennis Traub @dtraubImage PlaceholderAnother essential Book
  57. 57. Dennis Traub @dtraubImage PlaceholderAnd another one
  58. 58. Dennis Traub @dtraubTHANK YOU!@dtraub – #dnc13

×