Domain Driven Design: A Precis

61

description

A summary of the book "Domain Driven Design"

Transcript of Domain Driven Design: A Precis

Page 1: Domain Driven Design: A Precis
Page 2: Domain Driven Design: A Precis

Domain Driven Design Eric Evans

(2004)

Page 3: Domain Driven Design: A Precis

Domain Driven Design Eric Evans

(2004)

Clean Code (2008)

Page 4: Domain Driven Design: A Precis

Domain Driven Design Eric Evans

(2004)

Clean Code (2008)

Extreme Programming (1999)

Page 5: Domain Driven Design: A Precis

Domain Driven Design Eric Evans

(2004)

Goal

Give you the tools to develop good software for a client

Page 6: Domain Driven Design: A Precis

T O P I C S C O V E R E D …

• Model-Driven Design

• DDD & Objects

• Clean Code

• Scaling Out

Page 7: Domain Driven Design: A Precis

M O D E L - D R I V E N D E S I G NPA R T O N E

Page 8: Domain Driven Design: A Precis
Page 9: Domain Driven Design: A Precis

“rigorously organized and selective abstraction of what’s in the domain expert’s head”

Page 10: Domain Driven Design: A Precis

A M O D E L I S N O T…

• Overly technical

• An indiscriminate minddump of domain knowledge

Page 11: Domain Driven Design: A Precis

S A M P L E M O D E L ( F I N A N C E & R I S K )

R I S K FA C T O R S

S C E N A R I O S

D R I V E R S

P O R T F O L I O

A S S E T S

Page 12: Domain Driven Design: A Precis

U B I Q U I T O U S L A N G U A G E

Page 13: Domain Driven Design: A Precis

U B I Q U I T O U S L A N G U A G E

• Easier communication between developer & business

• Easier communication between developers!

• Improve ‘agility’

• Leads to better UX

Page 14: Domain Driven Design: A Precis

D D D & O B J E C T SPA R T T W O

Page 15: Domain Driven Design: A Precis

D ATA O B J E C T S

Page 16: Domain Driven Design: A Precis

E N T I T I E S V S . VA L U E O B J E C T S

D A TA O B J E C T S

Page 17: Domain Driven Design: A Precis

PA I N T P I G M E N T SVA L U E O B J E C T S

Page 18: Domain Driven Design: A Precis

Z O O A N I M A L SE N T I T I E S

Page 19: Domain Driven Design: A Precis

C O N T E X T- D E P E N D E N TW A R N I N G !

Page 20: Domain Driven Design: A Precis

• N A M E • M E M B E R S

B A N D

Page 21: Domain Driven Design: A Precis

• N A M E • M E M B E R S

B A N D

Page 22: Domain Driven Design: A Precis

• N A M E • M E M B E R S

B A N D

Page 23: Domain Driven Design: A Precis

• N A M E • M E M B E R S

B A N D

Page 24: Domain Driven Design: A Precis

• N A M E • M E M B E R S

B A N D

Page 25: Domain Driven Design: A Precis

• N A M E • M E M B E R S

B A N D

• N A M E • M E M B E R S

B A N D

Page 26: Domain Driven Design: A Precis

• N A M E • M E M B E R S

B A N D

• N A M E • M E M B E R S

B A N D

Page 27: Domain Driven Design: A Precis

“ D O I N G ” O B J E C T S

Page 28: Domain Driven Design: A Precis

C O M M O N PAT T E R N S

• Factory

• Repositories

• Modules

Page 29: Domain Driven Design: A Precis

“ S E R V I C E S ”

D O I N G O B J E C T S

Page 30: Domain Driven Design: A Precis

“ S E R V I C E S ”

A C C O U N T 1 A C C O U N T 2

D E B I T ( £ 1 0 0 )

C R E D I T £ 1 0 0

Page 31: Domain Driven Design: A Precis

“ S E R V I C E S ”

A C C O U N T 1 A C C O U N T 2

D E B I T ( £ 1 0 0 )

C R E D I T £ 1 0 0

T R A N S A C T I O N H A N D L E R

Page 32: Domain Driven Design: A Precis

S A M P L E M O D E L ( F I N A N C E & R I S K )

R I S K FA C T O R S

S C E N A R I O S

D R I V E R S

P O R T F O L I O

A S S E T S

Page 33: Domain Driven Design: A Precis

T H E C L A S S E S …

• Entites

• Value Objects

• Services

• Factories

• Repositories

Page 34: Domain Driven Design: A Precis

C L E A N C O D EPA R T T H R E E

Page 35: Domain Driven Design: A Precis

C O N C E P T I N G V S .

C O D I N G

Page 36: Domain Driven Design: A Precis

R E A D C L E A N C O D EG O O D A D V I C E …

Page 37: Domain Driven Design: A Precis

D E C L A R AT I V E I N T E R FA C E S

Page 38: Domain Driven Design: A Precis

S TA N D A L O N E C L A S S E S

Page 39: Domain Driven Design: A Precis

N O S I D E - E F F E C T S

Page 40: Domain Driven Design: A Precis

A G G R E G AT E S

Page 41: Domain Driven Design: A Precis

A G G R E G AT E S

• Root/Boundary

• Root has global identity

• Nothing outside boundary can hold reference to anything inside.

• Delete operation must remove everything within the boundary.

Page 42: Domain Driven Design: A Precis

A G G R E G AT E S

C A R

T I R E S W H E E L D R I V E R

Page 43: Domain Driven Design: A Precis

A G G R E G AT E S

C A R

T I R E S W H E E L D R I V E R

Page 44: Domain Driven Design: A Precis

K E Y B A D S M E L L S

• Needing to look into implementations

• Large chains of dependencies

• Side Effects

• Worrying about relationships in entity state

Page 45: Domain Driven Design: A Precis

S C A L I N G O U TPA R T F O U R

Page 46: Domain Driven Design: A Precis

U B I Q U I T O U S M O D E L B E C O M E S F R A C T U R E D

T H E P R O B L E M

Page 47: Domain Driven Design: A Precis

B O U N D E D C O N T E X T S

T H E S O L U T I O N

Page 48: Domain Driven Design: A Precis

B O U N D E D C O N T E X T S

• Advertise through Context Maps

• Defend against unstable projects with facades

• Give up

Page 49: Domain Driven Design: A Precis

C A N ’ T S E E T H E B I G G E R P I C T U R E

T H E P R O B L E M

Page 50: Domain Driven Design: A Precis

D I S T I L L AT I O N

T H E S O L U T I O N

Page 51: Domain Driven Design: A Precis

P R O B L E M S …

• ‘Distilation’ was a form of reducing documentation from 200-ish pages to 7 pages.

Page 52: Domain Driven Design: A Precis

S A LVA G I N G D I S T I L L AT I O N

• Splitting out parts of your model into:

• Core Model

• Cohesive Mechanisms

• Generic

Page 53: Domain Driven Design: A Precis

C O D E B A S E T O O L A R G E T O D E V E L O P W I T H

T H E P R O B L E M

Page 54: Domain Driven Design: A Precis

L A R G E S C A L E S T R U C T U R E

S C A L I N G O U T

Page 55: Domain Driven Design: A Precis

“Should be applied when a structure can be found that greatly clarifies the system without

forcing unnatural constraints on model development.”

Page 56: Domain Driven Design: A Precis

P O S S I B L E “ L S S ” O P T I O N S

• System Metaphor

• Divide and Conquer

• Responsibility Layers

• Knowledge Level

• Pluggable Component Framework

Page 57: Domain Driven Design: A Precis

C O N C L U S I O N

Page 58: Domain Driven Design: A Precis

I S I T W O R T H R E A D I N G ?

Page 59: Domain Driven Design: A Precis

I S I T W O R T H R E A D I N G ?all

Page 60: Domain Driven Design: A Precis

T O P I C S C O V E R E D …

• Model-Driven Design

• DDD & Objects

• Clean Code

• Scaling Out

Page 61: Domain Driven Design: A Precis

Q U E S T I O N S ?