Strategic Appplication Development with Domain-Driven Design (DDD)

  • 1,386 views
Uploaded on

 

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
1,386
On Slideshare
0
From Embeds
0
Number of Embeds
4

Actions

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