SlideShare a Scribd company logo
Thinking in DDD
Grégory BOISSINOT
2017 April 25
DDD
IS AN APPROACH
TO SOFTWARE DESIGN
FOR COMPLEX NEEDS
Outline
• Software Design activity
• Software Projects issues
• DDD approach
• Explore the problem space with Collaborative Design
• Implement the solution space with Strategic Design & Tactical
Design
SOFTWARE DESIGN
DESIGN IS MAKING DECISIONS
CONTEXT MATTERSCONTEXT MATTERS
MAKING DECISIONS
TO BUILD USEFUL
PRODUCTS
AGILE IS HOW YOU ORGANIZE
TO GET THE WORK DONE
AGILE IS HOW YOU ORGANIZE
TO GET THE WORK DONE
GETTING WORK DONE IS TO
DESIGN
LOTS OF FAILURES HAPPENING
ON SOFTWARE PROJECTS
SCRUM PRODUCT BACKLOG AS PROCESS EXCELLENCE
PRESSURE TO DELIVER
SOFTWARE RELEASES
ON A RELENTLESS
SCHEDULE
A LACK OF DESIGN
Language
Framework
Library
Infra
JUMP INTO SPACE SOLUTION
TOO QUICKLY
RESUME-DRIVEN DESIGN
POOR COLLABORATION
ANALYSIS MODEL CODE	MODEL
POOR SYNCHRONIZATION
BETWEEN MODELS
Initial product incarnation
fast to produce
without care and
consideration
It works but no one knows how
A lack of organization
DATA MODELS
INSTEAD OF
DOMAIN MODELS
Database centric Architecture
CLIENT CONTACT
Code created without a common language
Different terms
VS
ROOM
- name
ROOM
- building
- floor
- capacity
- lighting
- air conditioner
Code created without a common language
The same term but with different meaning
VS
OUR ORGANISATIONAL
AND TECHNICAL DESIGNS
DO NOT ALIGN WITH
THE PROBLEM DOMAIN
AN ALIGNMENT CRISIS
BIG BALL OF MUD
SOAT Agile Day 2017 DDD
SOAT Agile Day 2017 DDD
DOMAIN
DRIVEN
DESIGN
SOAT Agile Day 2017 DDD
THE MOST SIGNIFICANT COMPLEXITY
IN SOFTWARE DESIGN IS NOT
TECHNICAL
“Critical Complexity of most
software projects
is in understanding
the domain itself “
Eric Evans
THE DOMAIN
THE PROBLEM AREA
The reality
PROBLEM
SPACE
THE DOMAIN
IS A
SPHERE OF KNOWLEDGE
SOFTWARE
COMPLEXITY
DOMAIN
LOGIC
COMPLEXITY
LEGACY
CODE
COMPLEXITY
+
COMPLEXITY
FROM
TECHNICAL
SOLUTION
DOMAINS ARE BASED ON A MODEL
THE DOMAIN MODEL
Domain
Knowledge
Rich in
Domain Model
SOLUTION
SPACE
Domain
Domain Model
The reality
An abstraction of reality
designed to manage
complexity for specific
business cases
A projection
of the Real Domain
THE PROBLEM SPACE THE SOLUTION SPACE
DDD
as a
bridge
PROBLEM
SPACE
SOLUTION
SPACE
DDD CREATES
HIGH ALIGNMENT
DDD IS ABOUT CREATING SHARED
UNDERSTANDING
OF THE PROBLEM SPACE
MAKE THE IMPLICIT EXPLICIT
BOUND BY
LANGUAGE
EXPRESSED AS
DIAGRAMS
EXPRESSED IN
CONVERSATION
EXPRESSED AS
DOCUMENTATION
EXPRESSED AS
CODE
A UBIQUITOUS LANGUAGE
IS AT THE HEART OF GOOD DESIGN
BUSINESS GLOSSARY
BUSINESS GLOSSARY
OF THE UBIQUITOUS TERMS
BUSINESS GLOSSARY
AS A SHARED DOCUMENT
USED AND MAINTAINED BY
THE WHOLE PRODUCT TEAM
ANALYSIS MODEL CODE	MODEL
GOOD SYNCHRONIZATION
BETWEEN MODELS
Ubiquitous
Language
COLLABORATIVE
MODELING
STRATEGIC
DESIGN
TACTICAL
DESIGN
COLLABORATIVE
MODELING
STRATEGIC
DESIGN
TACTICAL
DESIGN
THE PROBLEM SPACE
EXPLORE THE PROBLEM SPACE
DISCOVERING
THE PRODUCT MISSION
SOAT Agile Day 2017 DDD
STAY IN SYNERGY
WITH THE VALUES OF
THE SOFTWARE AND THE BUSINESS
BUSINESS MODEL CANVAS
TAKE ALL TEAMS ON BOARD
MANY EXPLORATING
TECHNIQUES
BUSINESS USERS ARE BUSY PEOPLE
Jeff
Patton
Alberto
Brandolini
Eric Evans
COLLABORATION
AND CONSTRUCTION
OF UBIQUITOUS LANGUAGE
THAT MAKES DDD SO POWERFUL
Event Storming
Domain
Event
Command
Actor Question ?
Event Storming Mechanisms
CLARIFYING QUESTIONS
‣ What do you mean by … ?
‣ What might lead someone to do / need .. ?
‣ What else might happen ...?
BREAK
THE PROBLEM & THE COMPLEXITY
DOWN
NOT ALL THE PARTS OF THE
PROBLEM ARE EQUAL
UNDERSTANDING BOUNDARIES
“There are no rules for determining
service boundaries“
Udi Dahan
FINDING
NATURAL BOUNDARIES
DOMAIN TERMINOLOGY BOUNDARIES
BEEF CUTS
LINGUISTIC BOUNDARIES
AUTONOMY BOUNDARIES
OTHER HEURISTICS BOUNDARIES
Data
Uniqueness
Existing
Team
Boundaries
Business
Experts
Bottlenecks
Exclusive
Domain
Experts
BREAK DOWN
INTO SMALLER DDD SUBDOMAINS
A car system subdomains
Subdomains of a book e-commerce platform
LibraryMembership
Payments
Customer
Support
Shipping
Marketing
YOU CAN'T EQUALLY SPREAD
EFFORT AND QUALITY
THROUGHOUT THE ENTIRE SYSTEM
‣ WHAT ARE THE PARTS OF THE PRODUCT
THAT WILL MAKE IT A SUCCESS ?
‣ WHY ARE THESE PARTS OF THE SYSTEM
IMPORTANT ?
‣ WHY CAN’T THEY BE BOUGHT OFF THE
SHELF ?
YOU NEED TO UNDERSTAND THE
BUSINESS STRATEGY
SOAT Agile Day 2017 DDD
Domain
Knowledge
Supporting
Subdomains
Generic
Subdomains
Core
Domains
relationships
relationships
Distilled
into
CONTRACTING
“SECRET SOURCE”
GENERIC
SUBDOMAIN
SUPPORTING
SUBDOMAIN
CORE
SUBDOMAIN
OFF-THE-SHELF
PACKAGES
(OSS LIBS, COTS)
Paper justifying why the
product is a good idea
Whiteboard
with salient points
Shared understanding
of what is core
CAPTURE THE CORE DOMAINS VISION
A car system subdomains
Partitioned subdomains of
a book e-commerce platform
BookMembership
Payments
Customer
Support
Shipping
Marketing
(Core Domain)
(Generic Domain)
(Supporting Domain)
(Generic Domain)
(Supporting Domain)
(Core Domain)
TREAT YOUR CORE DOMAIN
AS A PRODUCT
THE CORE DOMAIN
REQUIRES YOUR
BEST DEVELOPERS
DESGIN THE PRODUCT
IN THE SOLUTION SPACE
Ideally, one-to-one mapping
between domain models and subdomains
BookMembership
Payments
Customer
Support
Shipping
Marketing
(Core Domain)
(Generic Domain)
(Supporting Domain)
(Generic Domain)
(Supporting Domain)
(Core Domain)
Regular
shipping
Priority
shipping
MODEL-DRIVEN DESIGN IS HARD
MULTIPLE MODELS
CRUD
Domain
Model
Transaction
script Anemic
CQRS
Rich object-oriented
model
CHOOSE
THE RIGHT MODEL
KEEP THE CODE MODEL CLEAN
OF TECHNICAL CONCERNS
AND FOCUS ON THE DOMAIN
THE PRODUCT VIEW WITH DDD
The Domain Model
The application layer
is the client of the
domain layer and
represent the use
case of the product
The logic layer (application Service)
represents the logic processes and
concepts of the domain
infrastructure
UI
CUSTOMER
<< Authentication
Context >>
User/Mdp
<< Orders Context >>
Method of payment
<< Reviewer
Context>>
Nb of stars
BUSINESS
USE CASE BUSINESS
USE CASE
BUSINESS
USE CASE
LARGE AMBIGIOUS MODEL
DOMAIN
MODEL
BOUNDED
CONTEXT
USER
AUTHENTICATION
BOUNDED CONTEXT
CUSTOMER
ORDERS
BOUNDED CONTEXT
REVIEWER
EVALUATION
BOUNDED CONTEXT
DIVIDE LARGE AND COMPLEX MODEL
INTO BOUNDED CONTEXTS
SERVICE
PRIORITY
BOUNDED CONTEXT
SERVICE
PAYMENT
BOUNDED CONTEXT
SERVICE
REGULAR
BOUNDED CONTEXT
SERVICE
PROMOTION
BOUNDED CONTEXT
ALIGNMENT WITH THE BUSINESS VISION FOR THE E-BOOK PLATFORM
COLLABORATIVE
MODELING
STRATEGIC
DESIGN
TACTICAL
DESIGN
SOAT Agile Day 2017 DDD
USER INTERFACE
BOUNDED CONTEXT A BOUNDED CONTEXT B
BOUNDED CONTEXT
USERINTERFACE
OUR SYSTEM AS A COLLECTION OF BOUNDED CONTEXTS
A TEAM OF PROFESSIONALS
WHICH OWNS THE CONTEXT
WILL MAKE GOOD CHOICES
BOUNDED CONTEXT
IS OWNED ENTIRELY
BY ONE PRODUCT TEAM
UI
+
SERVICE
DB
PRIORITY
BOUNDED CONTEXT
UI
+
SERVICE
DB
PAYMENT
BOUNDED CONTEXT
UI
+
SERVICE
DB
REGULAR
BOUNDED CONTEXT
UI
+
SERVICE
DB
PROMOTION
BOUNDED CONTEXT
Aligning with the business vision & BC segregation
AUTONOMY CONTEXT
AUTONOMY CONTEXT
ENCOURAGES LEADERSHIP,
INNOVATION
SIMPLE RULES FOR COMMUNICATION
BETWEEN BOUNDED CONTEXTS
DDD
MAXIMISES OUR ABILITY TO
DELIVERY VALUE TO COSTUMERS
DDD
MAXIMISES OUR ABILITY TO
DELIVERY VALUE TO CUSTOMERS
AND REDUCES COST
ARCHITECTURE TOOLS THAT
SUPPORT DDD
Cusomer
Support
Shipment
Payment
Marketing
Book
Membership
Marketing Book
Payment
Shipping
Membership
Customer
Support
Reporting
Custom functional
delivery team
Flow of information
Cross cutting
Context Map
Third Party
Context
Shipping
Context
Pricing
Context
Legacy
Context
Listing
Book
Context
Loyalty
Subdomain
Open Host
Service
Downstream
Partenership
Upstream
Upstream
DownstreamUpstream
Anti Corruption
Layer
Context Map with integration strategies
MICROSERVICES
UI
+
SERVICE
DB
PRIORITY
MICROSERVICE
UI
+
SERVICE
DB
PAYMENT
MICROSERVICE
UI
+
SERVICE
DB
REGULAR
MICROSERVICE
UI
+
SERVICE
DB
PROMOTION
MICROSERVICE
AUTONOMY CONTEXTS ARE MICROSERVICES
CONCLUSION
‣ Design is the art of trade-off
‣ DDD enhances synergy and alignment between teams
‣ DDD focus on main concepts :
‣ Ubiquitous Language,
‣ Bounded Context,
‣ Core Domains
CONCLUSION
QUESTIONS

More Related Content

PDF
DevDay2017 ESGI Essential DDD
PDF
Domain Driven Design
PPTX
A Practical Guide to Domain Driven Design: Presentation Slides
PDF
Strategic Domain-Driven Design by Nick Tune at #AgileIndia2019
PPTX
Domain Driven Design Introduction
PPTX
Domain Driven Design: Zero to Hero
PDF
Domain-Driven Design (Artur Trosin Product Stream)
PDF
Desenhando a arquitetura do software!
DevDay2017 ESGI Essential DDD
Domain Driven Design
A Practical Guide to Domain Driven Design: Presentation Slides
Strategic Domain-Driven Design by Nick Tune at #AgileIndia2019
Domain Driven Design Introduction
Domain Driven Design: Zero to Hero
Domain-Driven Design (Artur Trosin Product Stream)
Desenhando a arquitetura do software!

What's hot (20)

PPTX
Domain Driven Design in an Agile World
PPTX
How to Implement Domain Driven Design in Real Life SDLC
PPTX
Domain-Driven Design: The "What" and the "Why"
PPT
Domain Driven Design Demonstrated
PDF
Modelling a complex domain with Domain-Driven Design
PDF
Introduction to Domain Driven Design
KEY
ZendCon 2011 UnCon Domain-Driven Design
PPTX
Domain driven design
PDF
Domain-Driven Design
PDF
Domain Driven Design - Building Blocks
PDF
DDD Basics - Context mapping
PDF
Sunny Tech 2019 - Craft Forever
PPTX
Domain Driven Design(DDD) Presentation
PPTX
Domain Driven Design Quickly
PDF
Domain Driven Design Development Spring Portfolio
PDF
Code & Cannoli - Domain Driven Design
PPTX
Domain driven design
PDF
Domain Driven Design Communication Techniques
PDF
Domain Driven Design and Hexagonal Architecture
PPTX
Domain Driven Design - DDDSydney 2011
Domain Driven Design in an Agile World
How to Implement Domain Driven Design in Real Life SDLC
Domain-Driven Design: The "What" and the "Why"
Domain Driven Design Demonstrated
Modelling a complex domain with Domain-Driven Design
Introduction to Domain Driven Design
ZendCon 2011 UnCon Domain-Driven Design
Domain driven design
Domain-Driven Design
Domain Driven Design - Building Blocks
DDD Basics - Context mapping
Sunny Tech 2019 - Craft Forever
Domain Driven Design(DDD) Presentation
Domain Driven Design Quickly
Domain Driven Design Development Spring Portfolio
Code & Cannoli - Domain Driven Design
Domain driven design
Domain Driven Design Communication Techniques
Domain Driven Design and Hexagonal Architecture
Domain Driven Design - DDDSydney 2011
Ad

Similar to SOAT Agile Day 2017 DDD (20)

PPTX
Finding balance of DDD while your application grows
PPTX
Up to speed in domain driven design
PPTX
BizSpark SF Lightning Talk: "Design Patterns for Designers" by Stephan Orme
PPTX
Domain driven design simplified
PDF
Domain Driven Design: Made Easy employing Systemic Approach
PDF
Domain Driven Design: Made Easy employing Systemic Approach
PDF
Introduction to Domain-Driven Design
PDF
The Modern Software Architect
PDF
Org Design for Design Orgs - The Workshop
PPTX
Event Storming #10 DDDGreece
PPT
Methodology for Information System Project Management
PPTX
DOMAIN DRIVER DESIGN
PDF
IPC07 Talk - Beautiful Code with AOP and DI
PDF
DDD pour une meilleure qualité du produit
PPT
01 the big_idea
PDF
Design Systems: Enterprise UX Evolution
PPT
Improving software economics
PDF
AlphaSimple product pitch
PPTX
Exploring a Designer and Developer Workflow
Finding balance of DDD while your application grows
Up to speed in domain driven design
BizSpark SF Lightning Talk: "Design Patterns for Designers" by Stephan Orme
Domain driven design simplified
Domain Driven Design: Made Easy employing Systemic Approach
Domain Driven Design: Made Easy employing Systemic Approach
Introduction to Domain-Driven Design
The Modern Software Architect
Org Design for Design Orgs - The Workshop
Event Storming #10 DDDGreece
Methodology for Information System Project Management
DOMAIN DRIVER DESIGN
IPC07 Talk - Beautiful Code with AOP and DI
DDD pour une meilleure qualité du produit
01 the big_idea
Design Systems: Enterprise UX Evolution
Improving software economics
AlphaSimple product pitch
Exploring a Designer and Developer Workflow
Ad

More from Gregory Boissinot (20)

PDF
Practical Software Architecture DDD
PDF
DDD Introduction
PDF
Beyond Relational Databases
PDF
Paris Redis Meetup Introduction
PDF
Paris Redis Meetup Starting
PDF
PZ_Microservices101_20150210
PDF
Spring Integration JUG SummerCamp 2013
PDF
gradle_nantesjug
PDF
gradle_lavajug
PDF
Jenkins-meetup
PDF
JENKINS_BreizhJUG_20111003
PDF
JENKINS_OWF11_OSDC_PARIS20110924
PDF
Gradle_Paris2010
PDF
Gradle_LyonJUG
PDF
Gradle_NormandyJUG
PDF
Gradle_BreizJUG
PDF
Gradle_BordeauxJUG
PDF
Gradle_ToulouseJUG
PDF
Jenkins_UserMeetup_Paris_201105
PDF
Gradle_ToursJUG
Practical Software Architecture DDD
DDD Introduction
Beyond Relational Databases
Paris Redis Meetup Introduction
Paris Redis Meetup Starting
PZ_Microservices101_20150210
Spring Integration JUG SummerCamp 2013
gradle_nantesjug
gradle_lavajug
Jenkins-meetup
JENKINS_BreizhJUG_20111003
JENKINS_OWF11_OSDC_PARIS20110924
Gradle_Paris2010
Gradle_LyonJUG
Gradle_NormandyJUG
Gradle_BreizJUG
Gradle_BordeauxJUG
Gradle_ToulouseJUG
Jenkins_UserMeetup_Paris_201105
Gradle_ToursJUG

Recently uploaded (20)

PPTX
CHAPTER 12 - CYBER SECURITY AND FUTURE SKILLS (1) (1).pptx
PDF
System and Network Administration Chapter 2
PPTX
ManageIQ - Sprint 268 Review - Slide Deck
PPTX
Lecture 3: Operating Systems Introduction to Computer Hardware Systems
PDF
Design an Analysis of Algorithms II-SECS-1021-03
PDF
Upgrade and Innovation Strategies for SAP ERP Customers
PDF
PTS Company Brochure 2025 (1).pdf.......
PPTX
ai tools demonstartion for schools and inter college
PDF
Nekopoi APK 2025 free lastest update
PPTX
CHAPTER 2 - PM Management and IT Context
PPTX
Agentic AI : A Practical Guide. Undersating, Implementing and Scaling Autono...
PPTX
L1 - Introduction to python Backend.pptx
PDF
Raksha Bandhan Grocery Pricing Trends in India 2025.pdf
PDF
Navsoft: AI-Powered Business Solutions & Custom Software Development
PDF
Claude Code: Everyone is a 10x Developer - A Comprehensive AI-Powered CLI Tool
PDF
Design an Analysis of Algorithms I-SECS-1021-03
PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
PPT
Introduction Database Management System for Course Database
PDF
Why TechBuilder is the Future of Pickup and Delivery App Development (1).pdf
PDF
T3DD25 TYPO3 Content Blocks - Deep Dive by André Kraus
CHAPTER 12 - CYBER SECURITY AND FUTURE SKILLS (1) (1).pptx
System and Network Administration Chapter 2
ManageIQ - Sprint 268 Review - Slide Deck
Lecture 3: Operating Systems Introduction to Computer Hardware Systems
Design an Analysis of Algorithms II-SECS-1021-03
Upgrade and Innovation Strategies for SAP ERP Customers
PTS Company Brochure 2025 (1).pdf.......
ai tools demonstartion for schools and inter college
Nekopoi APK 2025 free lastest update
CHAPTER 2 - PM Management and IT Context
Agentic AI : A Practical Guide. Undersating, Implementing and Scaling Autono...
L1 - Introduction to python Backend.pptx
Raksha Bandhan Grocery Pricing Trends in India 2025.pdf
Navsoft: AI-Powered Business Solutions & Custom Software Development
Claude Code: Everyone is a 10x Developer - A Comprehensive AI-Powered CLI Tool
Design an Analysis of Algorithms I-SECS-1021-03
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
Introduction Database Management System for Course Database
Why TechBuilder is the Future of Pickup and Delivery App Development (1).pdf
T3DD25 TYPO3 Content Blocks - Deep Dive by André Kraus

SOAT Agile Day 2017 DDD