Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

A Practical Guide to Domain Driven Design: Presentation Slides

13,527 views

Published on

Tonight I presented on Domain Driven Design to the Alt.Net group in Sydney at the invite of Richard Banks.

As a follow up, attached are the slides I used, feel free to distribute and use on the Creative Commons Licence

Published in: Technology
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (2019 Update) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://soo.gd/irt2 } ......................................................................................................................... Download Full EPUB Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download Full doc Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download PDF EBOOK here { https://soo.gd/irt2 } ......................................................................................................................... Download EPUB Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download doc Ebook here { https://soo.gd/irt2 } ......................................................................................................................... ......................................................................................................................... ................................................................................................................................... eBook is an electronic version of a traditional print book THIS can be read by using a personal computer or by using an eBook reader. (An eBook reader can be a software application for use on a computer such as Microsoft's free Reader application, or a book-sized computer THIS is used solely as a reading device such as Nuvomedia's Rocket eBook.) Users can purchase an eBook on diskette or CD, but the most popular method of getting an eBook is to purchase a downloadable file of the eBook (or other reading material) from a Web site (such as Barnes and Noble) to be read from the user's computer or reading device. Generally, an eBook can be downloaded in five minutes or less ......................................................................................................................... .............. Browse by Genre Available eBooks .............................................................................................................................. Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, ......................................................................................................................... ......................................................................................................................... .....BEST SELLER FOR EBOOK RECOMMEND............................................................. ......................................................................................................................... Blowout: Corrupted Democracy, Rogue State Russia, and the Richest, Most Destructive Industry on Earth,-- The Ride of a Lifetime: Lessons Learned from 15 Years as CEO of the Walt Disney Company,-- Call Sign Chaos: Learning to Lead,-- StrengthsFinder 2.0,-- Stillness Is the Key,-- She Said: Breaking the Sexual Harassment Story THIS Helped Ignite a Movement,-- Atomic Habits: An Easy & Proven Way to Build Good Habits & Break Bad Ones,-- Everything Is Figureoutable,-- What It Takes: Lessons in the Pursuit of Excellence,-- Rich Dad Poor Dad: What the Rich Teach Their Kids About Money THIS the Poor and Middle Class Do Not!,-- The Total Money Makeover: Classic Edition: A Proven Plan for Financial Fitness,-- Shut Up and Listen!: Hard Business Truths THIS Will Help You Succeed, ......................................................................................................................... .........................................................................................................................
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • @Mohamed Ramadan thanks for shared a more mature POV on DDD. Oh wait, you have shared anything ...
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • This is a very naive approach to explaining DDD and a lot of the information here are out of their context, It looks like whoever prepared this has completely nothing to do with software architecture.
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

A Practical Guide to Domain Driven Design: Presentation Slides

  1. 1. Jak Charlton<br />jak@thinkddd.com<br />www.thinkddd.com<br />Readify<br />www.readify.net<br />
  2. 2. Practical Domain Driven Design<br />Message Based Architecture and CQRS<br />
  3. 3. Domain Driven Design IS<br />An architectural methodology<br />for evolving a software system <br />that closely aligns <br />to business requirements<br />
  4. 4. Domain Driven Design IS NOT<br />A silver bullet<br />A panacea for all your troubles<br />An easy path to follow<br />Always the best solution<br />And most importantly, it is not focused on the How, but the What and Why<br />
  5. 5. Where Are We Going?<br />
  6. 6. The Domain Vision Statement<br />A shared understanding of what it is you are actually trying to create<br />Should be brief, written in clear English and understood by business and tech people alike<br />Should be factual, realistic, honest<br />Should avoid superlatives and marketing speak<br />Should avoid technical and implementation details<br />
  7. 7. Domain = Sphere of Activity?<br />
  8. 8. Domain<br />A Domain is a Sphere of Knowledge, Influenceor Activity<br />A Domain is represented by the Ubiquitous Language<br />A Domain encapsulates a Domain Model<br />A Domain lives within a Bounded Context<br />
  9. 9.
  10. 10. The Ubiquitous Language<br />A major reason for failure of software projects is a failure of people, the failure to communicate<br />The Ubiquitous Language is a shared language between the business and the development teams<br />The UL comes from the business, and is enriched by the development teams<br />
  11. 11.
  12. 12. Domain Experts<br />Domain Experts are the primary point of contact the development teams have with the business<br />They are the Experts on their part of the business, not just users of the system<br />They should have deep knowledge of the subject Domain<br />
  13. 13. Looks Pretty Unique To Me<br />
  14. 14. Entities<br />Entities are the “things” within your Model<br />An Entity is defined by being unique, and uniquely identifiable<br />
  15. 15. You Can’t Tell One From Another<br />
  16. 16. Value Objects<br />Value Objects are the “things” within your model that have no uniqueness<br />They are equal in all ways to another Value Object if all their properties match<br />Value Objects are interchangeable<br />
  17. 17. How Can We Make Sense?<br />
  18. 18. Domain Model<br />A Domain Model is a representation of the relationships between the Entities and Value Objects in your Domain<br />It may look similar to UML or a class relationship diagram, but it is not one<br />The Domain Model should be recognisable and understandable by the business<br />
  19. 19. That’s a Lot of Bits<br />
  20. 20. Aggregates<br />“An aggregate is a collection of items that are gathered together to form a total quantity” - Wikipedia<br />An Aggregate Root is the root item containing a number of parts that form a whole<br />An AR is more likely to match a Use Case than any model structure<br />
  21. 21.
  22. 22. Bounded Contexts<br />When you have multiple models you should consider Bounded Contexts<br />Each BC is a self contained “mini application” containing it’s own model, persistence and code base<br />To map between BCs you use a Context Map<br />
  23. 23.
  24. 24. Anti-Corruption Layers<br />An Anti-Corruption Layer is a method to isolate two systems, allowing systems to be integrated without knowledge of each other<br />An ACL presents a Facade to both systems, defined in terms of their specific models<br />ACLs maintain the integrity of a Domain<br />
  25. 25.
  26. 26. Persistence Ignorance<br />Subtitled “There Is No Database” <br />DDD uses the Repository pattern to create Persistence Ignorance<br />A Repository represents itself as an in-memory list of items<br />Repositories are specific to Aggregate Roots, not to Entities<br />
  27. 27.
  28. 28. Factors For Success of DDD<br />Your domain is not trivial<br />You have access to Domain Experts<br />You have an iterative process<br />You have a skilled and motivated team<br />
  29. 29. Messaging Architectures<br />DDD is ideally suited to Message Based Architectures<br />DDD is ideally suited to Commands and Events<br />DDD is ideally suited to providing multiple autonomous systems that are loosely coupled<br />
  30. 30. Command Query Responsibility Separation (CQRS)<br />Bertrand Meyer principle of CQS:every method should either be a command that performs an action, or a query that returns data to the caller<br />At an architectural level this means:either issue commands, or issue queries, but never both<br />And, query from a separate source from your domain commands<br />
  31. 31. CQRS in a Picture<br />
  32. 32.
  33. 33. Jak Charlton<br />jak@dddstepbystep.co.uk<br />www.dddstepbystep.com<br />Readify<br />www.readify.net<br />

×