ESSENTIAL DDD
@gboissinot
Dev	Day	ESGI
2017	February	23
SOFTWARE
DESIGN
DOMAIN
DRIVEN
DESIGN
DDD
DDD
IS AN APPROACH
DDD
IS AN APPROACH
TO SOFTWARE DESIGN
DDD
IS AN APPROACH
TO SOFTWARE DESIGN
FOR COMPLEX
BUSINESS NEEDS
THE MOST SIGNIFICANT
COMPLEXITY
OF MANY APPLICATIONS
IS NOT TECHNICAL
WE MUST
FOCUS MORE ON
THE BUSINESS CONCERNS
“Critical Complexity of most
software projects
is in understanding
the domain itself “
Eric Evans
THE DOMAIN
THE PROBLEM
AREA
The reality
THE DOMAIN
IS A
SPHERE OF KNOWLEDGE
THE DOMAIN
IS A SET OF
CONCEPTS EXPRESSING
DISTILLED KNOWLEDGE
THE	DOMAIN	
IS	A	SET	OF
CONCEPTS	EXPRESSING	
DISTILLED	KNOWLEDGE,	RULES,
ASSUMPTIONS, CONCEPTS	
ABOUT	A	BUSINESS	MODEL
THERE ARE
NO BORING
DOMAINS
COMPLEXITY
FROM THE
DOMAIN IS
INHERENT
COMPLEXITY
FROM THE
TECHNICAL
IS ACCIDENTAL
SOLVING COMPLEX
PROBLEMS BY USING
MODELS
A MODEL
A MODEL
REPRESENTS
A VIEW
A MODEL
DESCRIBES THE
OUTSIDE WORLD
A MODEL
IS ABOUT USEFULNESS
AROUND A SPECIFIC
SET OF PROBLEMS
A MODEL
IS ADAPTED
TO AN USAGE
ABSTRACTION
ABSTRACTION
IS TO FORGET THE
NON SIGNIFICANT DETAILS
ABSTRACTION
IS TO FORGET THE
NON SIGNIFICANT DETAILS
AND FOCUS ON
THE ESSENTIALS
AN ABSTRACTION
OF REALITY,
NOT A REFLECTION OF REAL
LIFE
PARIS	TOURIST	MAP
PARIS	METRO	MAP
WRONG MODELS
WRONG MODELS
CAUSE MASSIVE
ACCIDENTAL COMPLEXITY
WHAT
ARE ITS
USAGE ?
PARIS	TOURIST	AND	TRANSPORT	MAP	?
A MODEL
CONTAINS ONLY
WHAT IS RELEVANT
MODELS ARE NEITHER
“RIGHT” OR “WRONG”
BUT SOME ARE
USEFUL THAN OTHERS
DESIGN IS
MAKING
DECISIONS
DESIGN
IS THE ART OF
TRADE-OFF
THE DOMAIN MODEL
THE DOMAIN MODEL
IS AN ABSTRACTION
OF THE
PROBLEM DOMAIN
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
SOFTWARE
DEVELOPMENT
AND ITS PROBLEMS
SCRUM PRODUCT BACKLOG
PRESSURE TO DELIVER
SOFTWARE RELEASES
ON A RELENTLESS
SCHEDULE
LACK	
OF	DESIGN
FOCUS ON SOLUTION SPACE
Language Framework
LibrariesInfra
CV
DRIVEN
APPROACH
POOR
COLLABORATION
UML JAVA / C#
POOR SYNCHRONIZATION
BETWEEN MODELS
Broken,	slow	and	locking	the	database
WRONG
LEVEL OF
ABSTRACTION
WHAT DOES
THE APPLICATION
DO ?
WHAT IS THE
APPLICATION
ABOUT ?
COMPLEX	DOMAINS
CAN	BECOME	
DIFFICULT	TO	MANAGE
It works but no one
knows how
Initial software
incarnation fast to
produce
time
without	care	and	
consideration
DATA
MODELS
INSTEAD OF
DOMAIN
MODELS
MOST DEVELOPERS
HAVE NEVER SEEN
A DOMAIN MODEL
THEY’VE ONLY SEEN
DATA MODELS
Database centric Architecture
BIG BALL OF MUD
IMPROVE YOUR CRAFT
IMPROVE YOUR CRAFT
AND INCREASE
YOUR SUCCESS ON
PROJECTS
CREATE BETTER SOFTWARE
MORE EASILY
CREATE BETTER SOFTWARE
MORE EASILY
BY FOCUSING ON THE
DOMAIN INSTEAD OF
THE TECHNOLOGY
TO FOCUS ON
BUSINESS VALUE
DDD
as	a	
bridge
PROBLEM	
SPACE
SOLUTION
SPACE
A TOOLSET : A COLLECTION OF PATTERNS, PRINCIPLES & PRACTICES
COLLABORATIVE
MODELING
STRATEGIC
DESIGN
(Context Mapping)
TACTICAL
DESIGN
(Building Blocks,
patterns)
DDD BREAKDOWN
PROBLEM SPACE
DOMAIN
COLLABORATIVE
DESIGN
CREATING
A USEFUL MODEL
IS A
COLLABORATIVE
EXPERIENCE
MANY
KNOWLEDGE CRUNCHING
TECHNIQUES
MANY
KNOWLEDGE CRUNCHING
TECHNIQUES
TO EXPLORE DOMAINS
MANY
KNOWLEDGE CRUNCHING
TECHNIQUES
TO EXPLORE DOMAINS
AND LEARN THE INTENT OF
THE BUSINESS
KNOWLEDGE CRUNCHING
IS THE ART
OF DISTILLING
RELEVANT INFORMATION
KNOWLEDGE CRUNCHING
IS THE ART
OF DISTILLING
RELEVANT INFORMATION
FROM
THE PROBLEM DOMAIN
CLARIFYING QUESTIONS
• What do you mean by … ?
• What might lead someone to
do / need .. ?
• What else might happen ...?
THIS LEADS TO
THE DISCOVERY OF
IMPORTANT CONCEPTS
ALLOWS THE TEAM TO
UNDERSTAND
WHAT IS NOT IMPORTANT
AND CAN BE EXCLUDED
FROM THE MODEL
DDD
IS
EXPLORATORY
BUSINESS USERS
ARE BUSY
PEOPLE
BUSINESS USERS
CAN ALSO FIND TIRING
AND DEEM IT
UNPRODUCTIVE
MAKE YOUR
KNOWLEDGE CRUNCHING
SESSIONS
FUN AND INTERACTIVE
INTRODUCE
SOME
FACILITATION GAMES
INTRODUCE SOME
FACILITATION GAMES
AND OTHER
FORMS OF REQUIREMENTS
GATHERING TO ENGAGE
YOUR AUDIENCE
EVENT STORMING
EventCommand
Actor
Question	?
THE GOAL OF
EVENT STORMING
IS TO DISCOVER
THE GOAL OF
EVENT STORMING
IS TO DISCOVER
NOT TO MAKE
A DECISION
DRIVE KNOWLEDGE
CRUNCHING
AROUND THE MOST
IMPORTANT USE CASE
OF THE SYSTEM
Jeff	Patton Alberto	Brandolini Eric	Evans
EMPLOY
KNOWLEDGE CRUNCHING
TECHNIQUES
TO PRODUCE
EFFECTIVE MODELS
CHALLENGE
YOUR MODEL
DON’T STOP
AT YOUR
FIRST IDEA
YOU WON’T GET IT RIGHT
THE FIRST TIME
GOOD DESIGN
IS IMPERFECT DESIGN
THE ONLY WAY
TO LEARN A COMPLEX SYSTEM
IS TO LIVE AND TO INTERACT
WITH IT
EXPERTS
DOESN’T KNOW
EVERYTHING
DON’T WAIT PERFECT TEAM
DON’T WAIT PERFECT TEAM
DON’T WAIT PERFECT PEOPLE
USE BDD
TO FOCUS ON
THE BEHAVIOR OF THE
APPLICATION AROUND
CONCRETE SCENARIOS
UBIQUITOUS
LANGUAGE
UBIQUITOUS LANGUAGE
VARIOUS EXPRESSIONS
OF THE MODEL
ARE BOUND
BY THE SAME LANGUAGE
WHEN MODELING,
EVERYONE SHOULD APPLY
A SHARED LANGAGE RICH
IN DOMAIN SPECIFIC
TERMINOLOGY
UBIQUITOUS	LANGUAGE	
IS	A	
SHARED	LANGUAGE
UBIQUITOUS	LANGUAGE	
IS	A	
SHARED	LANGUAGE
USED	BY	ALL	TEAM	MEMBERS
UBIQUITOUS	LANGUAGE	
IS	A	
SHARED	LANGUAGE
USED	BY	ALL	TEAM	
MEMBERS	TO	CONNECT	
ALL	ACTIVITIES	OF	THE	
TEAM	WITH	THE	SOFTWARE
BOUND BY
LANGUAGE
EXPRESSED AS
DIAGRAMS
EXPRESSED IN
CONVERSATION
EXPRESSED AS
DOCUMENTATION
EXPRESSED AS
CODE
THE
DOMAIN
MODEL
UML JAVA / C#
Ubiquitous
Language
UBIQUITOUS LANGUAGE
IS A KEY TOOL
SUBDOMAINS
DOMAIN	
IS	OFTEN COMPLEX
THE	DOMAIN
NOT	ALL	THE	PART	
OF	THE	PROBLEM	
NEED	PERFECT SOLUTION
DISTILL	LARGE	PROBLEM
DOMAINS	TO	REVEAL
THE	CORE	OPPORTUNITY
DISTILL	IN	SUBDOMAINS
FOCUS	EFFORT	
WHERE	IT	MATTERS
IDENTIFY
THE	CORE	DOMAIN	
AND	THE	CORE	COMPLEXITY
OSS	Lib
COTS
Contarcting
“Secret	Source”
SOLUTION SPACE
MOVE BUSINESS
IN YOUR CODE
DDD IS A PROCESS
THAT ALIGNS
YOUR CODE
WITH THE REALITY OF
YOUR PROBLEM DOMAIN
MAKE
THE IMPLICIT EXPLICIT
THE CODE MODEL IS THE
PRIMARY EXPRESSION OF
THE DOMAIN MODEL
DDD
ONLY REQUIRES
THE MODEL
TO BE KEPT ISOLATED FROM
TECHNICAL COMPLEXITIES
CAR	TIRE	SOLD
Gauranteed
one	year
SEND	A	DISCOUNT	
COUPON	TO		THE	
CUSTOMER
Yes
public class GuaranteedOneYearDeliveryOffer
{
public void after(CarTireSold delivery)
{
if (delivery.TimeTimeTaken.Exceeded(oneYear)
{
sendCarBreakDiscountCouponTo(delivery.Customer) ;
}
}
}
Don’t focus on technical details …
…talk in domain terns.
DDD
IS	TECHNICALLY	AGNOSTIC
THE CODE
AND THE DOMAIN MODEL
ARE KEPT IN SYNERGY
THE CODE
IS THE MODEL
THE CODE
IS THE TRUTH
BOUNDED CONTEXT
DECOMPOSE
THE SOLUTION SPACE
FOR COMPLEX
OR LARGE MODELS
DECOMPOSE
THE SOLUTION SPACE
AND DEVELOP MULTIPLE
MODELS WITHIN EXPLICIT
BOUNDARIES
CUSTOMER
CONTEXT	
<<SALES>>
Center	of	
interest
CONTEXT	
<<Accounting>>
Method	of	
payment
CONTEXT	
<<Order	Shippment>>
Address	Availability
A SINGLE LARGE AMBIGUOUS MODEL
BUSINESS	
USE	CASE
BUSINESS	
USE	CASE
BUSINESS	
USE	CASE
CONTEXT	
MATTERS
CONTEXT
<<SALES>>
Customer: Center of
interest
CONTEXT
<<ACCOUNTING>>
Customer: Method of
payment
CONTEXT
<<ORDER SHIPMENT>>
Customer: Address
Availability
MULTIPLE SMALLER EXPLICIT MODELS
A	BOUNDED	CONTEXT
A	BOUNDED	CONTEXT	
IS	A	SEMANTIC	CONTEXTUAL	
BOUNDARY
A	BOUNDED	CONTEXT	
PROTECTS	THE	DOMAIN	
MODEL AND	DEFINES	THE	
APPLICABILITY	BOUNDARY
DOMAIN	
MODEL
Bounded	
Context
BOUNDED	CONTEXT	
IS	THE	CONDITIONS	
WHICH	
A	PARTICULAR	MODEL
IS	DEFINED AND	APPLICABLE
GENERALLY	
BOUNDED	CONTEXTS	
MATCH	
SUBDOMAINS
ALIGN	BOUNDED	CONTEXTS	TO	SUBDOMAINS
Bounded	
ContextBounded	
Context
Bounded	
Context
Bounded	
Context
ALIGN	TEAMS	
TO	
BOUNDED	CONTEXTS
ARCHITECTURE STYLE
DDD
DOESN’T DICTATE
ANY SPECIAL
ARCHITECTURAL PATTERNS
PATTERNS
USED TO IMPLEMENT
BOUNDED CONTEXTS
SHOULD BE APPROPRIATE
TO THE COMPLEXITY
MANY MODELS
• Rich Domain Model
• CRUD Model
• Anemic Model
• Transaction Script Model
• etc
CHOOSE
THE RIGHT
DOMAIN
MODEL
BOUNDED	CONTEXTS	with	MODELS
CRUD
RICH	
MODEL
ANEMIC ANEMIC
HEURISTICS
PRACTICAL METHOD
NOT GUARANTEED TO BE
OPTIMAL OR PERFECT
PRACTICAL METHOD
NOT GUARANTEED TO BE
OPTIMAL OR PERFECT
BUT SUFFICIENT FOR
IMMEDIATE GOALS
o Favorite	Algorithms
o Favorites	Solutions
o Favorites	Approaches
o Our	Mental	Models
o Patterns
o etc
DO NOT BE BLOCKED ON
YOUR HEURISTICS
• System Layers
• ORM
• IOC
• Anemic Behaviours
HEXAGONAL
ARCHITECTURE
INSIDE
OUTSIDE
DOMAIN
INFRA
(HTTP,	MoM,	Databases,	etc)
DOMAIN
INFRA
(Ports	&	Adapters,	DMZs)
Hexagonal	 /	Onion	/	Ports-And-Adapters	Architecture
STRATEGIC DESIGN
COMPOSE
BOUNDED CONTEXTS
TO CREATE APPLICATIONS
USER	INTERFACE
APPLICATION
BOUNDED	CONTEXT	A BOUNDED	CONTEXT	B
BOUNDED	CONTEXT	C
USER	INTERFACE
INTEGRATE	MODELS
Mapping
INTEGRATION
PATTERNS ENABLE
BOUNDED CONTEXTS
TO COMMUNICATE
TACTICAL PATTERNS
• Value Objects
• Entities
• Aggregates
• Repositories
• Domain Services
• Application
Services
• Domain Events
DDD
IS NOT
A PATTERN LANGUAGE
AGGREGATE
AGGREGATE
IS A CLUSTER OF DOMAIN
OBJECTS
AGGREGATE
IS A CLUSTER OF DOMAIN
OBJECTS
THAT CAN BE TREATED AS
A SINGLE UNIT
AGGREGATE
IS A COLLECTION OF DATA
THAT WE INTERACT WITH
AS A UNIT
CONCLUSION
ALWAYS	
CONNECT		YOUR	
DECISIONS
TO	YOUR	
BUSINESS	
OBJECTIVES
GO FURTHER
DevDay2017 ESGI Essential DDD
DevDay2017 ESGI Essential DDD
DevDay2017 ESGI Essential DDD

DevDay2017 ESGI Essential DDD