SlideShare a Scribd company logo
Up to Speed in
Domain Driven Design
Rick van der Arend
rvdarend@sogyo.nl
Agenda
 What is Domain Driven Design?
 An example of a domain model
 The building blocks of a domain model
 Refactoring towards deeper insight
 What has been learned since the book?
 Wrap-up
SOFTWARE INNOVATORS 2
SOFTWARE INNOVATORS 3
What is DDD?
“Putting the Domain Model to work”
DDD in one sentence
 Domain Driven Design is a style of software
development which focuses on removing translation
barriers between domain, development team and
design of working software using a ubiquitous
language supported by a well refined livingmodel.
Translation barriers
 Team talks to users and experts (if lucky)
 Write software that behaves as requested
 Names get translated back and forth
 Concepts diverge without anyone noticing
SOFTWARE INNOVATORS 5
?
Domain, Team and Model
Ubiquitous Language
Origins of the acronym DDD
 Eric Evans wrote the book that gave the
acronym DDD an impulse in 2005. Aptly named:
Domain Driven Design
“Tackling Complexity in the heart of software”
SOFTWARE INNOVATORS 8
An Example of a domain model
Domain model
SOFTWARE INNOVATORS 9
Parallel to the equator
Parallel to the earth axis
Orthogonal to the sun’s plain of movement Turning during the year
From Phased to Iterations
Analysis Design Build
Iteration Iteration
Test
Start with the Model, don’t stop
SOFTWARE INNOVATORS 11
Iteration Iteration
Domain Model
effort as part
of an iteration
SOFTWARE INNOVATORS 12
The building blocks of a
Model-Driven Design
Building blocks of MDD
Entities & Value objects
 Entities have an unmistakeable identity
 Value objects are indentified by.. their value
 a Person
 a Name
 an Address
 This depends on.. of course.. Context!
Factories , Repositories, Aggregates
 Factories create, Repositories store
 The unit of work they work on is an aggregate
 The thing they create of find and hand over will
be a reference to the aggregate root
Services
 Services encapsulate... well… Services
 They are not part of the core domain, but linked
 Objects change into other objects
Layers.. and more
 UI > domain model > Data access
SOFTWARE INNOVATORS 17
 Or.. domain model depends on nothing
SOFTWARE INNOVATORS 18
Refactoring towards deeper
insight
Refactoring towards deeper insight
 Use patterns when appropriate
 Make Unit Tests
 Better yet, do TDD
 Better yet, do BDD
 DRY and YAGNI
 But: all a bit technical
Making Implicit Concepts explicit
 Listen to Language
 Scrutinize Awkwardness
 Contemplate Contradictions
 Read the Book
 Try, Try again
 Model the less-than-obvious: constraints,
processes, commands, relations, etc.
SOFTWARE INNOVATORS 21
Strategic Design
Contents of chapter 4 as a model
Strategic Design: context rules!
 Be aware of different contexts
 Make a context map
 See how different bounded contexts relate
 Shared Kernel, Customer/Supplier development
teams, Conformist, Separate Ways, Partner
 Use an anti-corruption layer
Context Maps step-by-step
1. What models (or BBoM) do we know of? (draw
blob each and name it.)
2. Where does each apply? (Boundary in words.)
3. Where is information exchanged? (Connect)
4. What is the relationship?
(Upstream/downstream? Partner? Etc.)
SOFTWARE INNOVATORS 25
What has been learned since
the book?
Highlights that Evans learned
 Building blocks are overemphasized
 But domain events added as a new type of block
 General advice
▫ Don’t spread modeling too thin
▫ Focus on the core domain
▫ Clean, bounded context (CM steps available)
▫ Iterative process
▫ Don’t bore your domain experts
Domain events taken further
 Greg Young has been promoting the idea of
Command and Query separation
Techniques to explore
 Exploratory Modeling (xM)
 Model Driven Development environments
 Language Workbenches
 Naked Objects and other such platforms
SOFTWARE INNOVATORS 28
SOFTWARE INNOVATORS 29
Quick Wrap-up
Summary
 DDD highlights aspects of software design
 It focuses on the ‘core domain’ and uses a
ubiquitous language, based on a domain model
 The ubiquitous language brings out flaws
 A Domain Model is normally made up of certain
types of building blocks
 Thinks about context too: take control where and
whenever possible
Resources for Further study
 http://www.domaindrivendesign.org
 Numerous articles on http://www.infoq.com
 http://www.slideshare.net/devnology/unleash-
your-domain-with-greg-young
DDD in C#
 Jimmy Nilsson applied it to a C# context. His
book is has an informal tone, but a bit noisy.
Applying DDD and Patterns
With Examples in C# and .NET
SOFTWARE INNOVATORS 33
Contact
Rick van der Arend
rvdarend@sogyo.nl
030 - 220 22 16
Web: www.sogyo.nl
Blog: www.software–innovators.nl
Ad

More Related Content

What's hot (15)

Refactor your specs! Øredev 2013
Refactor your specs! Øredev 2013Refactor your specs! Øredev 2013
Refactor your specs! Øredev 2013
Cyrille Martraire
 
Cucumber in Practice(en)
Cucumber in Practice(en)Cucumber in Practice(en)
Cucumber in Practice(en)
Kyosuke MOROHASHI
 
Cucumber_Training_ForQA
Cucumber_Training_ForQACucumber_Training_ForQA
Cucumber_Training_ForQA
Meenakshi Singhal
 
Leveraging more then DDD Lite in the startup project
Leveraging more then DDD Lite in the startup projectLeveraging more then DDD Lite in the startup project
Leveraging more then DDD Lite in the startup project
Thomas Jaskula
 
Introduction to C# - Week 0
Introduction to C# - Week 0Introduction to C# - Week 0
Introduction to C# - Week 0
Jamshid Hashimi
 
Backend roadmap
Backend roadmapBackend roadmap
Backend roadmap
wassimbenfatma1
 
Brownfield Domain Driven Design
Brownfield Domain Driven DesignBrownfield Domain Driven Design
Brownfield Domain Driven Design
Nicolò Pignatelli
 
A Practical Guide to Domain Driven Design: Presentation Slides
A Practical Guide to Domain Driven Design: Presentation SlidesA Practical Guide to Domain Driven Design: Presentation Slides
A Practical Guide to Domain Driven Design: Presentation Slides
thinkddd
 
Baby steps to Domain-Driven Design
Baby steps to Domain-Driven DesignBaby steps to Domain-Driven Design
Baby steps to Domain-Driven Design
Žilvinas Kuusas
 
Ddd reboot (english version)
Ddd reboot (english version)Ddd reboot (english version)
Ddd reboot (english version)
Thomas Pierrain
 
eXtreme Programming
eXtreme ProgrammingeXtreme Programming
eXtreme Programming
Artem Tabalin
 
WordPress Coding Standards & WP Hooks
WordPress Coding Standards & WP HooksWordPress Coding Standards & WP Hooks
WordPress Coding Standards & WP Hooks
Eunus Hosen
 
Perfect Code
Perfect CodePerfect Code
Perfect Code
Artem Tabalin
 
What's DSL and what isn't
What's DSL and what isn'tWhat's DSL and what isn't
What's DSL and what isn't
Leandro Parazito
 
Detangling Your JavaScript
Detangling Your JavaScriptDetangling Your JavaScript
Detangling Your JavaScript
Chris Powers
 
Refactor your specs! Øredev 2013
Refactor your specs! Øredev 2013Refactor your specs! Øredev 2013
Refactor your specs! Øredev 2013
Cyrille Martraire
 
Leveraging more then DDD Lite in the startup project
Leveraging more then DDD Lite in the startup projectLeveraging more then DDD Lite in the startup project
Leveraging more then DDD Lite in the startup project
Thomas Jaskula
 
Introduction to C# - Week 0
Introduction to C# - Week 0Introduction to C# - Week 0
Introduction to C# - Week 0
Jamshid Hashimi
 
Brownfield Domain Driven Design
Brownfield Domain Driven DesignBrownfield Domain Driven Design
Brownfield Domain Driven Design
Nicolò Pignatelli
 
A Practical Guide to Domain Driven Design: Presentation Slides
A Practical Guide to Domain Driven Design: Presentation SlidesA Practical Guide to Domain Driven Design: Presentation Slides
A Practical Guide to Domain Driven Design: Presentation Slides
thinkddd
 
Baby steps to Domain-Driven Design
Baby steps to Domain-Driven DesignBaby steps to Domain-Driven Design
Baby steps to Domain-Driven Design
Žilvinas Kuusas
 
Ddd reboot (english version)
Ddd reboot (english version)Ddd reboot (english version)
Ddd reboot (english version)
Thomas Pierrain
 
WordPress Coding Standards & WP Hooks
WordPress Coding Standards & WP HooksWordPress Coding Standards & WP Hooks
WordPress Coding Standards & WP Hooks
Eunus Hosen
 
Detangling Your JavaScript
Detangling Your JavaScriptDetangling Your JavaScript
Detangling Your JavaScript
Chris Powers
 

Viewers also liked (20)

Scaling Out With Hadoop And HBase
Scaling Out With Hadoop And HBaseScaling Out With Hadoop And HBase
Scaling Out With Hadoop And HBase
Age Mooij
 
An Introduction to Functional Programming using Haskell
An Introduction to Functional Programming using HaskellAn Introduction to Functional Programming using Haskell
An Introduction to Functional Programming using Haskell
Michel Rijnders
 
1 10 pages from inf-08_03_viaggi_in_italia_e_estero_2005
1 10 pages from inf-08_03_viaggi_in_italia_e_estero_20051 10 pages from inf-08_03_viaggi_in_italia_e_estero_2005
1 10 pages from inf-08_03_viaggi_in_italia_e_estero_2005
guesta1caa70
 
Enterprise mobile strategy, Messaging the future
Enterprise mobile strategy, Messaging the futureEnterprise mobile strategy, Messaging the future
Enterprise mobile strategy, Messaging the future
Shay Rosen (שי רוזן)
 
Horse trail1
Horse trail1Horse trail1
Horse trail1
guest976b5d
 
Wilson Altruism
Wilson AltruismWilson Altruism
Wilson Altruism
clover66
 
TOSM 2011 -- Enterprise2.0
TOSM 2011 -- Enterprise2.0TOSM 2011 -- Enterprise2.0
TOSM 2011 -- Enterprise2.0
CSP Scarl
 
JACOB ZUMA - FINANCES • Hidden Empires | Investigating Money In Politics • Ta...
JACOB ZUMA - FINANCES • Hidden Empires | Investigating Money In Politics • Ta...JACOB ZUMA - FINANCES • Hidden Empires | Investigating Money In Politics • Ta...
JACOB ZUMA - FINANCES • Hidden Empires | Investigating Money In Politics • Ta...
Tawanda Kanhema
 
Dom 20160427 extra
Dom 20160427 extraDom 20160427 extra
Dom 20160427 extra
terezinhaneta
 
Founders Institute / Fall 2016 Mentor Deck
Founders Institute / Fall 2016 Mentor Deck Founders Institute / Fall 2016 Mentor Deck
Founders Institute / Fall 2016 Mentor Deck
Anupam Kundu
 
Breve repaso de Historia Contemporánea
Breve repaso de Historia Contemporánea Breve repaso de Historia Contemporánea
Breve repaso de Historia Contemporánea
Consejería de Educación de la Comunidad de Madrid
 
How to be a successful agile product manager
How to be a successful agile product managerHow to be a successful agile product manager
How to be a successful agile product manager
Anupam Kundu
 
Touch&play framework
Touch&play frameworkTouch&play framework
Touch&play framework
CSP Scarl
 
Sandro del petre
Sandro del petreSandro del petre
Sandro del petre
Giselle Goicovic
 
Σχηματοπλανήτης
ΣχηματοπλανήτηςΣχηματοπλανήτης
Σχηματοπλανήτης
Georgios Fesakis
 
Hp
HpHp
Hp
kitturashmikittu
 
ubd
ubdubd
ubd
clover66
 
Tripadvisor- PPT
Tripadvisor- PPTTripadvisor- PPT
Tripadvisor- PPT
Elisabeth
 
Requesting Informational Interviews & Meetings
Requesting Informational Interviews & MeetingsRequesting Informational Interviews & Meetings
Requesting Informational Interviews & Meetings
Todd Alan Sloane, MSEd - Protean Trainer and Coach
 
Csp@scuola2011 seminariointro perotti
Csp@scuola2011 seminariointro perottiCsp@scuola2011 seminariointro perotti
Csp@scuola2011 seminariointro perotti
CSP Scarl
 
Scaling Out With Hadoop And HBase
Scaling Out With Hadoop And HBaseScaling Out With Hadoop And HBase
Scaling Out With Hadoop And HBase
Age Mooij
 
An Introduction to Functional Programming using Haskell
An Introduction to Functional Programming using HaskellAn Introduction to Functional Programming using Haskell
An Introduction to Functional Programming using Haskell
Michel Rijnders
 
1 10 pages from inf-08_03_viaggi_in_italia_e_estero_2005
1 10 pages from inf-08_03_viaggi_in_italia_e_estero_20051 10 pages from inf-08_03_viaggi_in_italia_e_estero_2005
1 10 pages from inf-08_03_viaggi_in_italia_e_estero_2005
guesta1caa70
 
Enterprise mobile strategy, Messaging the future
Enterprise mobile strategy, Messaging the futureEnterprise mobile strategy, Messaging the future
Enterprise mobile strategy, Messaging the future
Shay Rosen (שי רוזן)
 
Wilson Altruism
Wilson AltruismWilson Altruism
Wilson Altruism
clover66
 
TOSM 2011 -- Enterprise2.0
TOSM 2011 -- Enterprise2.0TOSM 2011 -- Enterprise2.0
TOSM 2011 -- Enterprise2.0
CSP Scarl
 
JACOB ZUMA - FINANCES • Hidden Empires | Investigating Money In Politics • Ta...
JACOB ZUMA - FINANCES • Hidden Empires | Investigating Money In Politics • Ta...JACOB ZUMA - FINANCES • Hidden Empires | Investigating Money In Politics • Ta...
JACOB ZUMA - FINANCES • Hidden Empires | Investigating Money In Politics • Ta...
Tawanda Kanhema
 
Founders Institute / Fall 2016 Mentor Deck
Founders Institute / Fall 2016 Mentor Deck Founders Institute / Fall 2016 Mentor Deck
Founders Institute / Fall 2016 Mentor Deck
Anupam Kundu
 
How to be a successful agile product manager
How to be a successful agile product managerHow to be a successful agile product manager
How to be a successful agile product manager
Anupam Kundu
 
Touch&play framework
Touch&play frameworkTouch&play framework
Touch&play framework
CSP Scarl
 
Σχηματοπλανήτης
ΣχηματοπλανήτηςΣχηματοπλανήτης
Σχηματοπλανήτης
Georgios Fesakis
 
Tripadvisor- PPT
Tripadvisor- PPTTripadvisor- PPT
Tripadvisor- PPT
Elisabeth
 
Csp@scuola2011 seminariointro perotti
Csp@scuola2011 seminariointro perottiCsp@scuola2011 seminariointro perotti
Csp@scuola2011 seminariointro perotti
CSP Scarl
 
Ad

Similar to Up to speed in domain driven design (20)

DDD In Agile
DDD In Agile   DDD In Agile
DDD In Agile
Skills Matter
 
Importance Of Being Driven
Importance Of Being DrivenImportance Of Being Driven
Importance Of Being Driven
Antonio Terreno
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven Design
Harsh Jegadeesan
 
Domain Driven Design and Model Driven Software Development
Domain Driven Design and Model Driven Software DevelopmentDomain Driven Design and Model Driven Software Development
Domain Driven Design and Model Driven Software Development
Bahram Maravandi
 
DDD eXchange
DDD eXchangeDDD eXchange
DDD eXchange
Skills Matter
 
Introduction to Domain-Driven Design
Introduction to Domain-Driven DesignIntroduction to Domain-Driven Design
Introduction to Domain-Driven Design
R-P-Azevedo
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven Design
Lalit Kale
 
Code & Cannoli - Domain Driven Design
Code & Cannoli - Domain Driven DesignCode & Cannoli - Domain Driven Design
Code & Cannoli - Domain Driven Design
Frank Levering
 
Finding balance of DDD while your application grows
Finding balance of DDD while your application growsFinding balance of DDD while your application grows
Finding balance of DDD while your application grows
Carolina Karklis
 
SOAT Agile Day 2017 DDD
SOAT Agile Day 2017 DDDSOAT Agile Day 2017 DDD
SOAT Agile Day 2017 DDD
Gregory Boissinot
 
How to Implement Domain Driven Design in Real Life SDLC
How to Implement Domain Driven Design  in Real Life SDLCHow to Implement Domain Driven Design  in Real Life SDLC
How to Implement Domain Driven Design in Real Life SDLC
Abdul Karim
 
Writing good C# code for good cloud applications - Draft Oct 20, 2014
Writing good C# code for good cloud applications - Draft Oct 20, 2014Writing good C# code for good cloud applications - Draft Oct 20, 2014
Writing good C# code for good cloud applications - Draft Oct 20, 2014
Marco Parenzan
 
Domain Driven Design - Building Blocks
Domain Driven Design - Building BlocksDomain Driven Design - Building Blocks
Domain Driven Design - Building Blocks
Mark Windholtz
 
Envisioning the Future of Language Workbenches
Envisioning the Future of Language WorkbenchesEnvisioning the Future of Language Workbenches
Envisioning the Future of Language Workbenches
Markus Voelter
 
DSL, the absolute weapon for the development
DSL, the absolute weapon for the developmentDSL, the absolute weapon for the development
DSL, the absolute weapon for the development
ESUG
 
Dino Esposito. Polyglot Persistence: From Architecture to Solutions
Dino Esposito. Polyglot Persistence: From Architecture to SolutionsDino Esposito. Polyglot Persistence: From Architecture to Solutions
Dino Esposito. Polyglot Persistence: From Architecture to Solutions
CodeFest
 
Code Craftsmanship Checklist
Code Craftsmanship ChecklistCode Craftsmanship Checklist
Code Craftsmanship Checklist
Ryan Polk
 
Domain-Driven Design
Domain-Driven DesignDomain-Driven Design
Domain-Driven Design
Bradley Holt
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven Design
Mojammel Haque
 
Build your own Language - Why and How?
Build your own Language - Why and How?Build your own Language - Why and How?
Build your own Language - Why and How?
Markus Voelter
 
Importance Of Being Driven
Importance Of Being DrivenImportance Of Being Driven
Importance Of Being Driven
Antonio Terreno
 
Domain Driven Design and Model Driven Software Development
Domain Driven Design and Model Driven Software DevelopmentDomain Driven Design and Model Driven Software Development
Domain Driven Design and Model Driven Software Development
Bahram Maravandi
 
Introduction to Domain-Driven Design
Introduction to Domain-Driven DesignIntroduction to Domain-Driven Design
Introduction to Domain-Driven Design
R-P-Azevedo
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven Design
Lalit Kale
 
Code & Cannoli - Domain Driven Design
Code & Cannoli - Domain Driven DesignCode & Cannoli - Domain Driven Design
Code & Cannoli - Domain Driven Design
Frank Levering
 
Finding balance of DDD while your application grows
Finding balance of DDD while your application growsFinding balance of DDD while your application grows
Finding balance of DDD while your application grows
Carolina Karklis
 
How to Implement Domain Driven Design in Real Life SDLC
How to Implement Domain Driven Design  in Real Life SDLCHow to Implement Domain Driven Design  in Real Life SDLC
How to Implement Domain Driven Design in Real Life SDLC
Abdul Karim
 
Writing good C# code for good cloud applications - Draft Oct 20, 2014
Writing good C# code for good cloud applications - Draft Oct 20, 2014Writing good C# code for good cloud applications - Draft Oct 20, 2014
Writing good C# code for good cloud applications - Draft Oct 20, 2014
Marco Parenzan
 
Domain Driven Design - Building Blocks
Domain Driven Design - Building BlocksDomain Driven Design - Building Blocks
Domain Driven Design - Building Blocks
Mark Windholtz
 
Envisioning the Future of Language Workbenches
Envisioning the Future of Language WorkbenchesEnvisioning the Future of Language Workbenches
Envisioning the Future of Language Workbenches
Markus Voelter
 
DSL, the absolute weapon for the development
DSL, the absolute weapon for the developmentDSL, the absolute weapon for the development
DSL, the absolute weapon for the development
ESUG
 
Dino Esposito. Polyglot Persistence: From Architecture to Solutions
Dino Esposito. Polyglot Persistence: From Architecture to SolutionsDino Esposito. Polyglot Persistence: From Architecture to Solutions
Dino Esposito. Polyglot Persistence: From Architecture to Solutions
CodeFest
 
Code Craftsmanship Checklist
Code Craftsmanship ChecklistCode Craftsmanship Checklist
Code Craftsmanship Checklist
Ryan Polk
 
Domain-Driven Design
Domain-Driven DesignDomain-Driven Design
Domain-Driven Design
Bradley Holt
 
Build your own Language - Why and How?
Build your own Language - Why and How?Build your own Language - Why and How?
Build your own Language - Why and How?
Markus Voelter
 
Ad

Recently uploaded (20)

How Can I use the AI Hype in my Business Context?
How Can I use the AI Hype in my Business Context?How Can I use the AI Hype in my Business Context?
How Can I use the AI Hype in my Business Context?
Daniel Lehner
 
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Aqusag Technologies
 
HCL Nomad Web – Best Practices and Managing Multiuser Environments
HCL Nomad Web – Best Practices and Managing Multiuser EnvironmentsHCL Nomad Web – Best Practices and Managing Multiuser Environments
HCL Nomad Web – Best Practices and Managing Multiuser Environments
panagenda
 
Greenhouse_Monitoring_Presentation.pptx.
Greenhouse_Monitoring_Presentation.pptx.Greenhouse_Monitoring_Presentation.pptx.
Greenhouse_Monitoring_Presentation.pptx.
hpbmnnxrvb
 
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
SOFTTECHHUB
 
Rusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond SparkRusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond Spark
carlyakerly1
 
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptxDevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
Justin Reock
 
Big Data Analytics Quick Research Guide by Arthur Morgan
Big Data Analytics Quick Research Guide by Arthur MorganBig Data Analytics Quick Research Guide by Arthur Morgan
Big Data Analytics Quick Research Guide by Arthur Morgan
Arthur Morgan
 
What is Model Context Protocol(MCP) - The new technology for communication bw...
What is Model Context Protocol(MCP) - The new technology for communication bw...What is Model Context Protocol(MCP) - The new technology for communication bw...
What is Model Context Protocol(MCP) - The new technology for communication bw...
Vishnu Singh Chundawat
 
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
BookNet Canada
 
Drupalcamp Finland – Measuring Front-end Energy Consumption
Drupalcamp Finland – Measuring Front-end Energy ConsumptionDrupalcamp Finland – Measuring Front-end Energy Consumption
Drupalcamp Finland – Measuring Front-end Energy Consumption
Exove
 
Linux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdfLinux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdf
RHCSA Guru
 
TrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business ConsultingTrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business Consulting
Trs Labs
 
2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx
Samuele Fogagnolo
 
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
BookNet Canada
 
Technology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data AnalyticsTechnology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data Analytics
InData Labs
 
Heap, Types of Heap, Insertion and Deletion
Heap, Types of Heap, Insertion and DeletionHeap, Types of Heap, Insertion and Deletion
Heap, Types of Heap, Insertion and Deletion
Jaydeep Kale
 
Generative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in BusinessGenerative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in Business
Dr. Tathagat Varma
 
Electronic_Mail_Attacks-1-35.pdf by xploit
Electronic_Mail_Attacks-1-35.pdf by xploitElectronic_Mail_Attacks-1-35.pdf by xploit
Electronic_Mail_Attacks-1-35.pdf by xploit
niftliyevhuseyn
 
Special Meetup Edition - TDX Bengaluru Meetup #52.pptx
Special Meetup Edition - TDX Bengaluru Meetup #52.pptxSpecial Meetup Edition - TDX Bengaluru Meetup #52.pptx
Special Meetup Edition - TDX Bengaluru Meetup #52.pptx
shyamraj55
 
How Can I use the AI Hype in my Business Context?
How Can I use the AI Hype in my Business Context?How Can I use the AI Hype in my Business Context?
How Can I use the AI Hype in my Business Context?
Daniel Lehner
 
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Aqusag Technologies
 
HCL Nomad Web – Best Practices and Managing Multiuser Environments
HCL Nomad Web – Best Practices and Managing Multiuser EnvironmentsHCL Nomad Web – Best Practices and Managing Multiuser Environments
HCL Nomad Web – Best Practices and Managing Multiuser Environments
panagenda
 
Greenhouse_Monitoring_Presentation.pptx.
Greenhouse_Monitoring_Presentation.pptx.Greenhouse_Monitoring_Presentation.pptx.
Greenhouse_Monitoring_Presentation.pptx.
hpbmnnxrvb
 
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
SOFTTECHHUB
 
Rusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond SparkRusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond Spark
carlyakerly1
 
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptxDevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
Justin Reock
 
Big Data Analytics Quick Research Guide by Arthur Morgan
Big Data Analytics Quick Research Guide by Arthur MorganBig Data Analytics Quick Research Guide by Arthur Morgan
Big Data Analytics Quick Research Guide by Arthur Morgan
Arthur Morgan
 
What is Model Context Protocol(MCP) - The new technology for communication bw...
What is Model Context Protocol(MCP) - The new technology for communication bw...What is Model Context Protocol(MCP) - The new technology for communication bw...
What is Model Context Protocol(MCP) - The new technology for communication bw...
Vishnu Singh Chundawat
 
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
BookNet Canada
 
Drupalcamp Finland – Measuring Front-end Energy Consumption
Drupalcamp Finland – Measuring Front-end Energy ConsumptionDrupalcamp Finland – Measuring Front-end Energy Consumption
Drupalcamp Finland – Measuring Front-end Energy Consumption
Exove
 
Linux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdfLinux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdf
RHCSA Guru
 
TrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business ConsultingTrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business Consulting
Trs Labs
 
2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx
Samuele Fogagnolo
 
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
BookNet Canada
 
Technology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data AnalyticsTechnology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data Analytics
InData Labs
 
Heap, Types of Heap, Insertion and Deletion
Heap, Types of Heap, Insertion and DeletionHeap, Types of Heap, Insertion and Deletion
Heap, Types of Heap, Insertion and Deletion
Jaydeep Kale
 
Generative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in BusinessGenerative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in Business
Dr. Tathagat Varma
 
Electronic_Mail_Attacks-1-35.pdf by xploit
Electronic_Mail_Attacks-1-35.pdf by xploitElectronic_Mail_Attacks-1-35.pdf by xploit
Electronic_Mail_Attacks-1-35.pdf by xploit
niftliyevhuseyn
 
Special Meetup Edition - TDX Bengaluru Meetup #52.pptx
Special Meetup Edition - TDX Bengaluru Meetup #52.pptxSpecial Meetup Edition - TDX Bengaluru Meetup #52.pptx
Special Meetup Edition - TDX Bengaluru Meetup #52.pptx
shyamraj55
 

Up to speed in domain driven design

  • 1. Up to Speed in Domain Driven Design Rick van der Arend [email protected]
  • 2. Agenda  What is Domain Driven Design?  An example of a domain model  The building blocks of a domain model  Refactoring towards deeper insight  What has been learned since the book?  Wrap-up SOFTWARE INNOVATORS 2
  • 3. SOFTWARE INNOVATORS 3 What is DDD? “Putting the Domain Model to work”
  • 4. DDD in one sentence  Domain Driven Design is a style of software development which focuses on removing translation barriers between domain, development team and design of working software using a ubiquitous language supported by a well refined livingmodel.
  • 5. Translation barriers  Team talks to users and experts (if lucky)  Write software that behaves as requested  Names get translated back and forth  Concepts diverge without anyone noticing SOFTWARE INNOVATORS 5 ?
  • 6. Domain, Team and Model Ubiquitous Language
  • 7. Origins of the acronym DDD  Eric Evans wrote the book that gave the acronym DDD an impulse in 2005. Aptly named: Domain Driven Design “Tackling Complexity in the heart of software”
  • 8. SOFTWARE INNOVATORS 8 An Example of a domain model
  • 9. Domain model SOFTWARE INNOVATORS 9 Parallel to the equator Parallel to the earth axis Orthogonal to the sun’s plain of movement Turning during the year
  • 10. From Phased to Iterations Analysis Design Build Iteration Iteration Test
  • 11. Start with the Model, don’t stop SOFTWARE INNOVATORS 11 Iteration Iteration Domain Model effort as part of an iteration
  • 12. SOFTWARE INNOVATORS 12 The building blocks of a Model-Driven Design
  • 14. Entities & Value objects  Entities have an unmistakeable identity  Value objects are indentified by.. their value  a Person  a Name  an Address  This depends on.. of course.. Context!
  • 15. Factories , Repositories, Aggregates  Factories create, Repositories store  The unit of work they work on is an aggregate  The thing they create of find and hand over will be a reference to the aggregate root
  • 16. Services  Services encapsulate... well… Services  They are not part of the core domain, but linked  Objects change into other objects
  • 17. Layers.. and more  UI > domain model > Data access SOFTWARE INNOVATORS 17  Or.. domain model depends on nothing
  • 18. SOFTWARE INNOVATORS 18 Refactoring towards deeper insight
  • 19. Refactoring towards deeper insight  Use patterns when appropriate  Make Unit Tests  Better yet, do TDD  Better yet, do BDD  DRY and YAGNI  But: all a bit technical
  • 20. Making Implicit Concepts explicit  Listen to Language  Scrutinize Awkwardness  Contemplate Contradictions  Read the Book  Try, Try again  Model the less-than-obvious: constraints, processes, commands, relations, etc.
  • 22. Contents of chapter 4 as a model
  • 23. Strategic Design: context rules!  Be aware of different contexts  Make a context map  See how different bounded contexts relate  Shared Kernel, Customer/Supplier development teams, Conformist, Separate Ways, Partner  Use an anti-corruption layer
  • 24. Context Maps step-by-step 1. What models (or BBoM) do we know of? (draw blob each and name it.) 2. Where does each apply? (Boundary in words.) 3. Where is information exchanged? (Connect) 4. What is the relationship? (Upstream/downstream? Partner? Etc.)
  • 25. SOFTWARE INNOVATORS 25 What has been learned since the book?
  • 26. Highlights that Evans learned  Building blocks are overemphasized  But domain events added as a new type of block  General advice ▫ Don’t spread modeling too thin ▫ Focus on the core domain ▫ Clean, bounded context (CM steps available) ▫ Iterative process ▫ Don’t bore your domain experts
  • 27. Domain events taken further  Greg Young has been promoting the idea of Command and Query separation
  • 28. Techniques to explore  Exploratory Modeling (xM)  Model Driven Development environments  Language Workbenches  Naked Objects and other such platforms SOFTWARE INNOVATORS 28
  • 30. Summary  DDD highlights aspects of software design  It focuses on the ‘core domain’ and uses a ubiquitous language, based on a domain model  The ubiquitous language brings out flaws  A Domain Model is normally made up of certain types of building blocks  Thinks about context too: take control where and whenever possible
  • 31. Resources for Further study  http://www.domaindrivendesign.org  Numerous articles on http://www.infoq.com  http://www.slideshare.net/devnology/unleash- your-domain-with-greg-young
  • 32. DDD in C#  Jimmy Nilsson applied it to a C# context. His book is has an informal tone, but a bit noisy. Applying DDD and Patterns With Examples in C# and .NET
  • 33. SOFTWARE INNOVATORS 33 Contact Rick van der Arend [email protected] 030 - 220 22 16 Web: www.sogyo.nl Blog: www.software–innovators.nl

Editor's Notes

  • #28: Command and Query Responsibility Segregation or CQRS according to Greg Young himself nowadays.