SlideShare a Scribd company logo
1 of 23
Domain Driven
Design
Fred Verheul
DDD Europe 2018
2
Agenda
• What is Domain Driven Design?
• Strategic patterns
• Tactical patterns
• Toolkit
3
What is Domain Driven Design (DDD)
• Not a technology or methodology
• Set of principles & patterns for focusing the design effort where it matters
most
• It’s all about:
• Understanding of the domain (subject area) where the software will be applied
• Creating a highly expressive model of that domain
• Distilling “Ubiquitous Language”
• Prerequisite: on-going collaboration between developers + domain experts
• When to apply: complex problems, high expectations
4
Ubiquitous Language
5
Domain Expert
Analyst Developer
Developer
Ubiquitous
Language
Application
code
Test code
Specs and
Documentation
Whiteboard
discussions
Strategic Patterns: Bounded Context
6
Context Map(-ping)
7
Tactical patterns: Building Blocks
• Value Objects
• Entities
• Aggregate Roots
• Repositories
• Services
• Factories
• Domain Events
8
Value Objects vs Entities
Entities:
Objects with an identity and a state
State evolves as long as application lives
Generally with a DB counterpart
Identifier Equality
9
Value Objects:
Have no conceptual identity
Can be designed as immutable
Can be shared between different entities
Structural Equality
Aggregates
• Cluster of objects
• Consistency Boundary
• Master object = aggregate root
10
Example, part 1 (Alberto Brandolini)
User Story 1:
As a Customer
I want to place an order
In order to purchase some goods
11
Example, part 2 (Alberto Brandolini)
User story 2, Returning
Customer:
As a customer
I want to retrieve my profile
in order to place more orders
12
Example, part 3 (Alberto Brandolini)
User story 3, Different
shipping address:
As a customer
I want to specify a valid
shipping address
In order to ship to a different
destination
13
Example, part 4 (Alberto Brandolini)
User story 4, Editable
customer profile:
As a customer
I want to edit my profile
In order to update it if
needed
14
Example, part 5 (Alberto Brandolini)
User story 5, Specify Billing
and Shipping Address:
As a customer
I want to specify
independent billing and
shipping addresses
In order to deliver goods to
different locations
15
Example, part 6 (Alberto Brandolini)
User story 6, Track past
orders:
As a Legal Department
I want to track orders
In order to manage
litigations
16
Result of modeling to deeper insights
17
Toolkit
• Tactical patterns (discussed above)
• Property based testing
• CQRS (Command Query Responsibility Segregation)
• Event sourcing
• Hexagonal Architecture
• Refactoring (to domain objects)
• Event Storming
18
Domain Driven Design
19
Further reading
• Udi Dahan: http://udidahan.com
• On CQRS: http://udidahan.com/2009/12/09/clarified-cqrs/
• Martin Fowler: https://martinfowler.com/intro.html
• On Event Sourcing: https://martinfowler.com/eaaDev/EventSourcing.html
• Greg Young:
• On CQRS: https://cqrs.files.wordpress.com/2010/11/cqrs_documents.pdf
• Vaughn Vernon: https://vaughnvernon.co/
• On designing aggregates: https://vaughnvernon.co/?p=838
20
Further reading on property based testing
• http://blog.jessitron.com/2013/04/property-based-testing-what-is-it.html
• https://hypothesis.works/articles/what-is-property-based-testing/
• https://fsharpforfunandprofit.com/posts/property-based-testing/
• https://propertesting.com/book_foundations_of_property_based_testing.html
• http://www.erikschierboom.com/2016/02/22/property-based-testing/
21
Further reading
• Hexagonal Architecture:
• http://alistair.cockburn.us/Hexagonal+architecture
• https://www.infoq.com/news/2014/10/exploring-hexagonal-architecture
• Refactoring:
• https://refactoring.com/
22
Thank You
www.soapeople.com
info@soapeople.com
@SOAPEOPLE
Fred Verheul
Development Consultant
+31 6 3919 2986
fred.verheul@soapeople.com

More Related Content

Similar to Domain Driven Design

Raja_Prabhu_Temenos
Raja_Prabhu_TemenosRaja_Prabhu_Temenos
Raja_Prabhu_TemenosRajaprabhu S
 
Srikanth Gattu-SharePoint Developer
Srikanth Gattu-SharePoint DeveloperSrikanth Gattu-SharePoint Developer
Srikanth Gattu-SharePoint Developersrikanth gattu
 
Domain Driven Design @ NewStore
Domain Driven Design @ NewStoreDomain Driven Design @ NewStore
Domain Driven Design @ NewStoreBernardo Torres
 
MongoDB World 2018: Data Analytics with MongoDB
MongoDB World 2018: Data Analytics with MongoDBMongoDB World 2018: Data Analytics with MongoDB
MongoDB World 2018: Data Analytics with MongoDBMongoDB
 
10 tips for enabling data discovery and governance in your organization
10 tips for enabling data discovery and governance in your organization10 tips for enabling data discovery and governance in your organization
10 tips for enabling data discovery and governance in your organizationHostedbyConfluent
 
Applying Domain-Driven Design to craft Rich Domain Models
Applying Domain-Driven Design to craft Rich Domain ModelsApplying Domain-Driven Design to craft Rich Domain Models
Applying Domain-Driven Design to craft Rich Domain ModelsAlexander van Trijffel
 
GRUG 2.0 6 Digital Guerrilla Validation 20180503
GRUG 2.0 6 Digital Guerrilla Validation 20180503GRUG 2.0 6 Digital Guerrilla Validation 20180503
GRUG 2.0 6 Digital Guerrilla Validation 20180503Glasgow Revit User Group
 
Lavacon 2014: But will it fit in my bathroom? Creating a single interface for...
Lavacon 2014: But will it fit in my bathroom? Creating a single interface for...Lavacon 2014: But will it fit in my bathroom? Creating a single interface for...
Lavacon 2014: But will it fit in my bathroom? Creating a single interface for...Mark Peterson
 
FIWARE Wednesday Webinars - Cities as Enablers of the Data Economy: Smart Dat...
FIWARE Wednesday Webinars - Cities as Enablers of the Data Economy: Smart Dat...FIWARE Wednesday Webinars - Cities as Enablers of the Data Economy: Smart Dat...
FIWARE Wednesday Webinars - Cities as Enablers of the Data Economy: Smart Dat...FIWARE
 
Webinar: Leveraging New Technologies with Migration
Webinar: Leveraging New Technologies with MigrationWebinar: Leveraging New Technologies with Migration
Webinar: Leveraging New Technologies with Migrationpanagenda
 
Kaggle Vs Real-world Projects
Kaggle Vs Real-world ProjectsKaggle Vs Real-world Projects
Kaggle Vs Real-world ProjectsAnkit Rathi
 
Introduction to Smart Data Models
Introduction to Smart Data ModelsIntroduction to Smart Data Models
Introduction to Smart Data ModelsFIWARE
 
Building a modern in-house analytics pipeline
Building a modern in-house analytics pipelineBuilding a modern in-house analytics pipeline
Building a modern in-house analytics pipelineSergey Burkov
 
Solving Real World Challenges with Enterprise Search
Solving Real World Challenges with Enterprise SearchSolving Real World Challenges with Enterprise Search
Solving Real World Challenges with Enterprise SearchSPC Adriatics
 
Webinar: How to Drive Business Value in Financial Services with MongoDB
Webinar: How to Drive Business Value in Financial Services with MongoDBWebinar: How to Drive Business Value in Financial Services with MongoDB
Webinar: How to Drive Business Value in Financial Services with MongoDBMongoDB
 
Creating a Documentation Portal
Creating a Documentation PortalCreating a Documentation Portal
Creating a Documentation PortalSteve Anderson
 
O'Reilly SACon San Jose, CA - 2019 - API design tutorial
O'Reilly SACon San Jose, CA - 2019 - API design tutorialO'Reilly SACon San Jose, CA - 2019 - API design tutorial
O'Reilly SACon San Jose, CA - 2019 - API design tutorialTom Hofte
 

Similar to Domain Driven Design (20)

Raja_Prabhu_Temenos
Raja_Prabhu_TemenosRaja_Prabhu_Temenos
Raja_Prabhu_Temenos
 
Srikanth Gattu-SharePoint Developer
Srikanth Gattu-SharePoint DeveloperSrikanth Gattu-SharePoint Developer
Srikanth Gattu-SharePoint Developer
 
Domain Driven Design @ NewStore
Domain Driven Design @ NewStoreDomain Driven Design @ NewStore
Domain Driven Design @ NewStore
 
MongoDB World 2018: Data Analytics with MongoDB
MongoDB World 2018: Data Analytics with MongoDBMongoDB World 2018: Data Analytics with MongoDB
MongoDB World 2018: Data Analytics with MongoDB
 
10 tips for enabling data discovery and governance in your organization
10 tips for enabling data discovery and governance in your organization10 tips for enabling data discovery and governance in your organization
10 tips for enabling data discovery and governance in your organization
 
Applying Domain-Driven Design to craft Rich Domain Models
Applying Domain-Driven Design to craft Rich Domain ModelsApplying Domain-Driven Design to craft Rich Domain Models
Applying Domain-Driven Design to craft Rich Domain Models
 
GRUG 2.0 6 Digital Guerrilla Validation 20180503
GRUG 2.0 6 Digital Guerrilla Validation 20180503GRUG 2.0 6 Digital Guerrilla Validation 20180503
GRUG 2.0 6 Digital Guerrilla Validation 20180503
 
MongoDB Basics
MongoDB BasicsMongoDB Basics
MongoDB Basics
 
Introduction to DDD
Introduction to DDDIntroduction to DDD
Introduction to DDD
 
Lavacon 2014: But will it fit in my bathroom? Creating a single interface for...
Lavacon 2014: But will it fit in my bathroom? Creating a single interface for...Lavacon 2014: But will it fit in my bathroom? Creating a single interface for...
Lavacon 2014: But will it fit in my bathroom? Creating a single interface for...
 
FIWARE Wednesday Webinars - Cities as Enablers of the Data Economy: Smart Dat...
FIWARE Wednesday Webinars - Cities as Enablers of the Data Economy: Smart Dat...FIWARE Wednesday Webinars - Cities as Enablers of the Data Economy: Smart Dat...
FIWARE Wednesday Webinars - Cities as Enablers of the Data Economy: Smart Dat...
 
Webinar: Leveraging New Technologies with Migration
Webinar: Leveraging New Technologies with MigrationWebinar: Leveraging New Technologies with Migration
Webinar: Leveraging New Technologies with Migration
 
SharePoint Custom Development
SharePoint Custom DevelopmentSharePoint Custom Development
SharePoint Custom Development
 
Kaggle Vs Real-world Projects
Kaggle Vs Real-world ProjectsKaggle Vs Real-world Projects
Kaggle Vs Real-world Projects
 
Introduction to Smart Data Models
Introduction to Smart Data ModelsIntroduction to Smart Data Models
Introduction to Smart Data Models
 
Building a modern in-house analytics pipeline
Building a modern in-house analytics pipelineBuilding a modern in-house analytics pipeline
Building a modern in-house analytics pipeline
 
Solving Real World Challenges with Enterprise Search
Solving Real World Challenges with Enterprise SearchSolving Real World Challenges with Enterprise Search
Solving Real World Challenges with Enterprise Search
 
Webinar: How to Drive Business Value in Financial Services with MongoDB
Webinar: How to Drive Business Value in Financial Services with MongoDBWebinar: How to Drive Business Value in Financial Services with MongoDB
Webinar: How to Drive Business Value in Financial Services with MongoDB
 
Creating a Documentation Portal
Creating a Documentation PortalCreating a Documentation Portal
Creating a Documentation Portal
 
O'Reilly SACon San Jose, CA - 2019 - API design tutorial
O'Reilly SACon San Jose, CA - 2019 - API design tutorialO'Reilly SACon San Jose, CA - 2019 - API design tutorial
O'Reilly SACon San Jose, CA - 2019 - API design tutorial
 

Recently uploaded

Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Velvetech LLC
 
Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesŁukasz Chruściel
 
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Matt Ray
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作qr0udbr0
 
VK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web DevelopmentVK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web Developmentvyaparkranti
 
Cyber security and its impact on E commerce
Cyber security and its impact on E commerceCyber security and its impact on E commerce
Cyber security and its impact on E commercemanigoyal112
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Andreas Granig
 
CRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceCRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceBrainSell Technologies
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesPhilip Schwarz
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanyChristoph Pohl
 
Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Hr365.us smith
 
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdf
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdfInnovate and Collaborate- Harnessing the Power of Open Source Software.pdf
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdfYashikaSharma391629
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfAlina Yurenko
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEEVICTOR MAESTRE RAMIREZ
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsAhmed Mohamed
 
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Angel Borroy López
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfMarharyta Nedzelska
 
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...OnePlan Solutions
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...OnePlan Solutions
 
Precise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalPrecise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalLionel Briand
 

Recently uploaded (20)

Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...
 
Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New Features
 
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作
 
VK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web DevelopmentVK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web Development
 
Cyber security and its impact on E commerce
Cyber security and its impact on E commerceCyber security and its impact on E commerce
Cyber security and its impact on E commerce
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024
 
CRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceCRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. Salesforce
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a series
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
 
Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)
 
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdf
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdfInnovate and Collaborate- Harnessing the Power of Open Source Software.pdf
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdf
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEE
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML Diagrams
 
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdf
 
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
 
Precise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalPrecise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive Goal
 

Domain Driven Design

  • 3. Agenda • What is Domain Driven Design? • Strategic patterns • Tactical patterns • Toolkit 3
  • 4. What is Domain Driven Design (DDD) • Not a technology or methodology • Set of principles & patterns for focusing the design effort where it matters most • It’s all about: • Understanding of the domain (subject area) where the software will be applied • Creating a highly expressive model of that domain • Distilling “Ubiquitous Language” • Prerequisite: on-going collaboration between developers + domain experts • When to apply: complex problems, high expectations 4
  • 5. Ubiquitous Language 5 Domain Expert Analyst Developer Developer Ubiquitous Language Application code Test code Specs and Documentation Whiteboard discussions
  • 8. Tactical patterns: Building Blocks • Value Objects • Entities • Aggregate Roots • Repositories • Services • Factories • Domain Events 8
  • 9. Value Objects vs Entities Entities: Objects with an identity and a state State evolves as long as application lives Generally with a DB counterpart Identifier Equality 9 Value Objects: Have no conceptual identity Can be designed as immutable Can be shared between different entities Structural Equality
  • 10. Aggregates • Cluster of objects • Consistency Boundary • Master object = aggregate root 10
  • 11. Example, part 1 (Alberto Brandolini) User Story 1: As a Customer I want to place an order In order to purchase some goods 11
  • 12. Example, part 2 (Alberto Brandolini) User story 2, Returning Customer: As a customer I want to retrieve my profile in order to place more orders 12
  • 13. Example, part 3 (Alberto Brandolini) User story 3, Different shipping address: As a customer I want to specify a valid shipping address In order to ship to a different destination 13
  • 14. Example, part 4 (Alberto Brandolini) User story 4, Editable customer profile: As a customer I want to edit my profile In order to update it if needed 14
  • 15. Example, part 5 (Alberto Brandolini) User story 5, Specify Billing and Shipping Address: As a customer I want to specify independent billing and shipping addresses In order to deliver goods to different locations 15
  • 16. Example, part 6 (Alberto Brandolini) User story 6, Track past orders: As a Legal Department I want to track orders In order to manage litigations 16
  • 17. Result of modeling to deeper insights 17
  • 18. Toolkit • Tactical patterns (discussed above) • Property based testing • CQRS (Command Query Responsibility Segregation) • Event sourcing • Hexagonal Architecture • Refactoring (to domain objects) • Event Storming 18
  • 20. Further reading • Udi Dahan: http://udidahan.com • On CQRS: http://udidahan.com/2009/12/09/clarified-cqrs/ • Martin Fowler: https://martinfowler.com/intro.html • On Event Sourcing: https://martinfowler.com/eaaDev/EventSourcing.html • Greg Young: • On CQRS: https://cqrs.files.wordpress.com/2010/11/cqrs_documents.pdf • Vaughn Vernon: https://vaughnvernon.co/ • On designing aggregates: https://vaughnvernon.co/?p=838 20
  • 21. Further reading on property based testing • http://blog.jessitron.com/2013/04/property-based-testing-what-is-it.html • https://hypothesis.works/articles/what-is-property-based-testing/ • https://fsharpforfunandprofit.com/posts/property-based-testing/ • https://propertesting.com/book_foundations_of_property_based_testing.html • http://www.erikschierboom.com/2016/02/22/property-based-testing/ 21
  • 22. Further reading • Hexagonal Architecture: • http://alistair.cockburn.us/Hexagonal+architecture • https://www.infoq.com/news/2014/10/exploring-hexagonal-architecture • Refactoring: • https://refactoring.com/ 22
  • 23. Thank You www.soapeople.com info@soapeople.com @SOAPEOPLE Fred Verheul Development Consultant +31 6 3919 2986 fred.verheul@soapeople.com

Editor's Notes

  1. Source: https://martinfowler.com/bliki/BoundedContext.html
  2. Source: http://ziobrando.blogspot.com/2010/06/about-entities-aggregates-and-data.html
  3. Source: http://ziobrando.blogspot.com/2010/06/about-entities-aggregates-and-data.html
  4. Source: http://ziobrando.blogspot.com/2010/06/about-entities-aggregates-and-data.html
  5. Source: http://ziobrando.blogspot.com/2010/06/about-entities-aggregates-and-data.html
  6. Source: http://ziobrando.blogspot.com/2010/06/about-entities-aggregates-and-data.html
  7. Source: http://ziobrando.blogspot.com/2010/06/about-entities-aggregates-and-data.html
  8. Source: http://ziobrando.blogspot.com/2010/06/about-entities-aggregates-and-data.html