not all of a large system will be well designed
DESCRIPTION
Not all of a large system will be well designed. Strategic Design. Making Models Work in Large Projects Eric Evans Domain Language, Inc. Eric Evans. Partnered in Scandinavia with. Not all of a large system will be well designed. Ground Up Rebuild. Ground Up Rebuild. Ground Up Rebuild. - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: Not all of a large system will be well designed](https://reader036.vdocuments.net/reader036/viewer/2022062723/56813f57550346895daa245e/html5/thumbnails/1.jpg)
Not all of a large system will be well designed.
![Page 2: Not all of a large system will be well designed](https://reader036.vdocuments.net/reader036/viewer/2022062723/56813f57550346895daa245e/html5/thumbnails/2.jpg)
Strategic Design
Partnered in Scandinavia with
Eric Evans
Making Models Work in Large Projects
Eric Evans
Domain Language, Inc.
![Page 3: Not all of a large system will be well designed](https://reader036.vdocuments.net/reader036/viewer/2022062723/56813f57550346895daa245e/html5/thumbnails/3.jpg)
Not all of a large system will be well designed.
![Page 4: Not all of a large system will be well designed](https://reader036.vdocuments.net/reader036/viewer/2022062723/56813f57550346895daa245e/html5/thumbnails/4.jpg)
Ground Up Rebuild
![Page 5: Not all of a large system will be well designed](https://reader036.vdocuments.net/reader036/viewer/2022062723/56813f57550346895daa245e/html5/thumbnails/5.jpg)
Ground Up Rebuild
![Page 6: Not all of a large system will be well designed](https://reader036.vdocuments.net/reader036/viewer/2022062723/56813f57550346895daa245e/html5/thumbnails/6.jpg)
Ground Up Rebuild
![Page 7: Not all of a large system will be well designed](https://reader036.vdocuments.net/reader036/viewer/2022062723/56813f57550346895daa245e/html5/thumbnails/7.jpg)
Ground Up Rebuild
Year 1
Year 2
Year 3
Legacy Replaced
Exciting New Features
![Page 8: Not all of a large system will be well designed](https://reader036.vdocuments.net/reader036/viewer/2022062723/56813f57550346895daa245e/html5/thumbnails/8.jpg)
Let’s Refactor
![Page 9: Not all of a large system will be well designed](https://reader036.vdocuments.net/reader036/viewer/2022062723/56813f57550346895daa245e/html5/thumbnails/9.jpg)
Let’s Refactor
![Page 10: Not all of a large system will be well designed](https://reader036.vdocuments.net/reader036/viewer/2022062723/56813f57550346895daa245e/html5/thumbnails/10.jpg)
domain A sphere of knowledge, influence, or activity.
Define Domain
![Page 11: Not all of a large system will be well designed](https://reader036.vdocuments.net/reader036/viewer/2022062723/56813f57550346895daa245e/html5/thumbnails/11.jpg)
domain A sphere of knowledge, influence, or activity.
The subject area to which the user applies a program is the domain of the software.
Define Domain
![Page 12: Not all of a large system will be well designed](https://reader036.vdocuments.net/reader036/viewer/2022062723/56813f57550346895daa245e/html5/thumbnails/12.jpg)
Why bother with models?
![Page 13: Not all of a large system will be well designed](https://reader036.vdocuments.net/reader036/viewer/2022062723/56813f57550346895daa245e/html5/thumbnails/13.jpg)
The critical complexity of most software
projects is in understanding the domain
itself.
Critical Complexity Is
![Page 14: Not all of a large system will be well designed](https://reader036.vdocuments.net/reader036/viewer/2022062723/56813f57550346895daa245e/html5/thumbnails/14.jpg)
What is a model?
![Page 15: Not all of a large system will be well designed](https://reader036.vdocuments.net/reader036/viewer/2022062723/56813f57550346895daa245e/html5/thumbnails/15.jpg)
origindestinationcustoms clearance (opt)
Route Specification
Itinerary
{ordered}
*
0..1
{Itinerary must satisfy specification}
Routing Servicea Route Specification
an Itinerary satisfyingthe RouteSpecification
Cargo
vessel Voyage IDload dateload locationunload dateunload location
Leg
![Page 16: Not all of a large system will be well designed](https://reader036.vdocuments.net/reader036/viewer/2022062723/56813f57550346895daa245e/html5/thumbnails/16.jpg)
Chinese Map
![Page 17: Not all of a large system will be well designed](https://reader036.vdocuments.net/reader036/viewer/2022062723/56813f57550346895daa245e/html5/thumbnails/17.jpg)
Mercator Map
![Page 18: Not all of a large system will be well designed](https://reader036.vdocuments.net/reader036/viewer/2022062723/56813f57550346895daa245e/html5/thumbnails/18.jpg)
model A system of abstractions that describes selected aspects of a domain and can be used to solve problems related to that domain.
Define Model
![Page 19: Not all of a large system will be well designed](https://reader036.vdocuments.net/reader036/viewer/2022062723/56813f57550346895daa245e/html5/thumbnails/19.jpg)
model A system of abstractions that describes selected aspects of a domain and can be used to solve problems related to that domain.
Define Model
![Page 20: Not all of a large system will be well designed](https://reader036.vdocuments.net/reader036/viewer/2022062723/56813f57550346895daa245e/html5/thumbnails/20.jpg)
model A system of abstractions that describes selected aspects of a domain and can be used to solve problems related to that domain.
Define Model
![Page 21: Not all of a large system will be well designed](https://reader036.vdocuments.net/reader036/viewer/2022062723/56813f57550346895daa245e/html5/thumbnails/21.jpg)
A Model Serves a Particular Use.
![Page 22: Not all of a large system will be well designed](https://reader036.vdocuments.net/reader036/viewer/2022062723/56813f57550346895daa245e/html5/thumbnails/22.jpg)
A Model Serves a Particular Use.
• Not “as realistic as possible”
![Page 23: Not all of a large system will be well designed](https://reader036.vdocuments.net/reader036/viewer/2022062723/56813f57550346895daa245e/html5/thumbnails/23.jpg)
A Model Serves a Particular Use.
• Not “as realistic as possible”
• Useful relative to specific set of domain scenarios
![Page 24: Not all of a large system will be well designed](https://reader036.vdocuments.net/reader036/viewer/2022062723/56813f57550346895daa245e/html5/thumbnails/24.jpg)
ubiquitous languageA language structured around the domain model and used by all team members to connect all the activities of the team with the software.
Define Ubiquitous Language
![Page 25: Not all of a large system will be well designed](https://reader036.vdocuments.net/reader036/viewer/2022062723/56813f57550346895daa245e/html5/thumbnails/25.jpg)
context The setting in which a word or statement appears that determines its meaning.
Define Context
![Page 26: Not all of a large system will be well designed](https://reader036.vdocuments.net/reader036/viewer/2022062723/56813f57550346895daa245e/html5/thumbnails/26.jpg)
There are always multiple models.
![Page 27: Not all of a large system will be well designed](https://reader036.vdocuments.net/reader036/viewer/2022062723/56813f57550346895daa245e/html5/thumbnails/27.jpg)
![Page 28: Not all of a large system will be well designed](https://reader036.vdocuments.net/reader036/viewer/2022062723/56813f57550346895daa245e/html5/thumbnails/28.jpg)
![Page 29: Not all of a large system will be well designed](https://reader036.vdocuments.net/reader036/viewer/2022062723/56813f57550346895daa245e/html5/thumbnails/29.jpg)
![Page 30: Not all of a large system will be well designed](https://reader036.vdocuments.net/reader036/viewer/2022062723/56813f57550346895daa245e/html5/thumbnails/30.jpg)
![Page 31: Not all of a large system will be well designed](https://reader036.vdocuments.net/reader036/viewer/2022062723/56813f57550346895daa245e/html5/thumbnails/31.jpg)
![Page 32: Not all of a large system will be well designed](https://reader036.vdocuments.net/reader036/viewer/2022062723/56813f57550346895daa245e/html5/thumbnails/32.jpg)
Rowing 8
![Page 33: Not all of a large system will be well designed](https://reader036.vdocuments.net/reader036/viewer/2022062723/56813f57550346895daa245e/html5/thumbnails/33.jpg)
“Context Map”
![Page 34: Not all of a large system will be well designed](https://reader036.vdocuments.net/reader036/viewer/2022062723/56813f57550346895daa245e/html5/thumbnails/34.jpg)
communications commitment/capability of team(s)
cont
rol o
f all
asso
ciat
ed s
yste
ms
SEPARATE WAYS
ANTI-CORRUPTION
LAYER
Single BOUNDED
CONTEXT
CUSTOMER/
SUPPLIER TEAMS
SHARED KERNEL
CONFORMIST
OPEN HOST
SERVICE
![Page 35: Not all of a large system will be well designed](https://reader036.vdocuments.net/reader036/viewer/2022062723/56813f57550346895daa245e/html5/thumbnails/35.jpg)
communications commitment/capability of team(s)
cont
rol o
f all
asso
ciat
ed s
yste
ms
SEPARATE WAYS
ANTI-CORRUPTION
LAYER
Single BOUNDED
CONTEXT
CUSTOMER/
SUPPLIER TEAMS
SHARED KERNEL
CONFORMIST
OPEN HOST
SERVICE
cooperative upstream/downstream
![Page 36: Not all of a large system will be well designed](https://reader036.vdocuments.net/reader036/viewer/2022062723/56813f57550346895daa245e/html5/thumbnails/36.jpg)
![Page 37: Not all of a large system will be well designed](https://reader036.vdocuments.net/reader036/viewer/2022062723/56813f57550346895daa245e/html5/thumbnails/37.jpg)
communications commitment/capability of team(s)
cont
rol o
f all
asso
ciat
ed s
yste
ms
SEPARATE WAYS
ANTI-CORRUPTION
LAYER
Single BOUNDED
CONTEXT
CUSTOMER/
SUPPLIER TEAMS
SHARED KERNEL
CONFORMIST
OPEN HOST
SERVICE
uncooperative upstream/downstream
![Page 38: Not all of a large system will be well designed](https://reader036.vdocuments.net/reader036/viewer/2022062723/56813f57550346895daa245e/html5/thumbnails/38.jpg)
![Page 39: Not all of a large system will be well designed](https://reader036.vdocuments.net/reader036/viewer/2022062723/56813f57550346895daa245e/html5/thumbnails/39.jpg)
![Page 40: Not all of a large system will be well designed](https://reader036.vdocuments.net/reader036/viewer/2022062723/56813f57550346895daa245e/html5/thumbnails/40.jpg)
Custom House Currency Exchange System
early 2006
![Page 41: Not all of a large system will be well designed](https://reader036.vdocuments.net/reader036/viewer/2022062723/56813f57550346895daa245e/html5/thumbnails/41.jpg)
Custom House Context Map
SPOT
TBS
![Page 42: Not all of a large system will be well designed](https://reader036.vdocuments.net/reader036/viewer/2022062723/56813f57550346895daa245e/html5/thumbnails/42.jpg)
Custom House Context Map
SPOT
TBS
D
U
![Page 43: Not all of a large system will be well designed](https://reader036.vdocuments.net/reader036/viewer/2022062723/56813f57550346895daa245e/html5/thumbnails/43.jpg)
Custom House Context Map
SPOT
TBS
D
U
![Page 44: Not all of a large system will be well designed](https://reader036.vdocuments.net/reader036/viewer/2022062723/56813f57550346895daa245e/html5/thumbnails/44.jpg)
Custom House “SPOT” Modelof Currency Exchange Deal
![Page 45: Not all of a large system will be well designed](https://reader036.vdocuments.net/reader036/viewer/2022062723/56813f57550346895daa245e/html5/thumbnails/45.jpg)
Object Interpretation of Implicit “TBS” Model
![Page 46: Not all of a large system will be well designed](https://reader036.vdocuments.net/reader036/viewer/2022062723/56813f57550346895daa245e/html5/thumbnails/46.jpg)
Explicit Translation
![Page 47: Not all of a large system will be well designed](https://reader036.vdocuments.net/reader036/viewer/2022062723/56813f57550346895daa245e/html5/thumbnails/47.jpg)
Custom House Currency Exchange System
late 2006
![Page 48: Not all of a large system will be well designed](https://reader036.vdocuments.net/reader036/viewer/2022062723/56813f57550346895daa245e/html5/thumbnails/48.jpg)
Map What Is
![Page 49: Not all of a large system will be well designed](https://reader036.vdocuments.net/reader036/viewer/2022062723/56813f57550346895daa245e/html5/thumbnails/49.jpg)
Push Translation to the Borders
![Page 50: Not all of a large system will be well designed](https://reader036.vdocuments.net/reader036/viewer/2022062723/56813f57550346895daa245e/html5/thumbnails/50.jpg)
Single, Unified Model within Any One Context
![Page 51: Not all of a large system will be well designed](https://reader036.vdocuments.net/reader036/viewer/2022062723/56813f57550346895daa245e/html5/thumbnails/51.jpg)
Single, Unified Model within Any One Context
(Where careful design is going on.)
![Page 52: Not all of a large system will be well designed](https://reader036.vdocuments.net/reader036/viewer/2022062723/56813f57550346895daa245e/html5/thumbnails/52.jpg)
Single, Unified Model within Any One Context
No duplication...
![Page 53: Not all of a large system will be well designed](https://reader036.vdocuments.net/reader036/viewer/2022062723/56813f57550346895daa245e/html5/thumbnails/53.jpg)
Single, Unified Model within Any One Context
No duplication...within a context!
Duplication between...
![Page 54: Not all of a large system will be well designed](https://reader036.vdocuments.net/reader036/viewer/2022062723/56813f57550346895daa245e/html5/thumbnails/54.jpg)
Single, Unified Model within Any One Context
No duplication...within a context!
Duplication between...AOK!
![Page 55: Not all of a large system will be well designed](https://reader036.vdocuments.net/reader036/viewer/2022062723/56813f57550346895daa245e/html5/thumbnails/55.jpg)
![Page 56: Not all of a large system will be well designed](https://reader036.vdocuments.net/reader036/viewer/2022062723/56813f57550346895daa245e/html5/thumbnails/56.jpg)
Ground Up Rebuild
![Page 57: Not all of a large system will be well designed](https://reader036.vdocuments.net/reader036/viewer/2022062723/56813f57550346895daa245e/html5/thumbnails/57.jpg)
Let’s Refactor
![Page 58: Not all of a large system will be well designed](https://reader036.vdocuments.net/reader036/viewer/2022062723/56813f57550346895daa245e/html5/thumbnails/58.jpg)
The Enterprise Model
One Ring to rule them all, One Ring to find them, One Ring to
bring them all, and in the darkness bind them
![Page 59: Not all of a large system will be well designed](https://reader036.vdocuments.net/reader036/viewer/2022062723/56813f57550346895daa245e/html5/thumbnails/59.jpg)
Not all of a large system will be well designed.
![Page 60: Not all of a large system will be well designed](https://reader036.vdocuments.net/reader036/viewer/2022062723/56813f57550346895daa245e/html5/thumbnails/60.jpg)
Distilling the Core Domain
![Page 61: Not all of a large system will be well designed](https://reader036.vdocuments.net/reader036/viewer/2022062723/56813f57550346895daa245e/html5/thumbnails/61.jpg)
Distilling the Core Domain
Generic Subdomains
![Page 62: Not all of a large system will be well designed](https://reader036.vdocuments.net/reader036/viewer/2022062723/56813f57550346895daa245e/html5/thumbnails/62.jpg)
Distilling the Core Domain
Generic Subdomains
Supporting Subdomains
![Page 63: Not all of a large system will be well designed](https://reader036.vdocuments.net/reader036/viewer/2022062723/56813f57550346895daa245e/html5/thumbnails/63.jpg)
Distilling the Core Domain
Generic Subdomains
Supporting Subdomains
Core Domain
![Page 64: Not all of a large system will be well designed](https://reader036.vdocuments.net/reader036/viewer/2022062723/56813f57550346895daa245e/html5/thumbnails/64.jpg)
Distilling the Core Domain
– What makes your system worth writing?
![Page 65: Not all of a large system will be well designed](https://reader036.vdocuments.net/reader036/viewer/2022062723/56813f57550346895daa245e/html5/thumbnails/65.jpg)
Distilling the Core Domain
– What makes your system worth writing?
– Why not buy it off the shelf?
![Page 66: Not all of a large system will be well designed](https://reader036.vdocuments.net/reader036/viewer/2022062723/56813f57550346895daa245e/html5/thumbnails/66.jpg)
Distilling the Core Domain
– What makes your system worth writing?
– Why not buy it off the shelf?
– Why not outsource it?
![Page 67: Not all of a large system will be well designed](https://reader036.vdocuments.net/reader036/viewer/2022062723/56813f57550346895daa245e/html5/thumbnails/67.jpg)
Distilling the Core Domain
– What makes your system worth writing?
– Why not buy it off the shelf?
– Why not outsource it?
![Page 68: Not all of a large system will be well designed](https://reader036.vdocuments.net/reader036/viewer/2022062723/56813f57550346895daa245e/html5/thumbnails/68.jpg)
Effort Distribution
![Page 69: Not all of a large system will be well designed](https://reader036.vdocuments.net/reader036/viewer/2022062723/56813f57550346895daa245e/html5/thumbnails/69.jpg)
Effort Distribution
![Page 70: Not all of a large system will be well designed](https://reader036.vdocuments.net/reader036/viewer/2022062723/56813f57550346895daa245e/html5/thumbnails/70.jpg)
Effort Distribution
![Page 71: Not all of a large system will be well designed](https://reader036.vdocuments.net/reader036/viewer/2022062723/56813f57550346895daa245e/html5/thumbnails/71.jpg)
Effort Distribution
![Page 72: Not all of a large system will be well designed](https://reader036.vdocuments.net/reader036/viewer/2022062723/56813f57550346895daa245e/html5/thumbnails/72.jpg)
Ground Up Rebuild
Year 1
Year 2
Year 3
Legacy Replaced
Exciting New Features
![Page 73: Not all of a large system will be well designed](https://reader036.vdocuments.net/reader036/viewer/2022062723/56813f57550346895daa245e/html5/thumbnails/73.jpg)
Which Part is Core?
![Page 74: Not all of a large system will be well designed](https://reader036.vdocuments.net/reader036/viewer/2022062723/56813f57550346895daa245e/html5/thumbnails/74.jpg)
Which Part is Core?
![Page 75: Not all of a large system will be well designed](https://reader036.vdocuments.net/reader036/viewer/2022062723/56813f57550346895daa245e/html5/thumbnails/75.jpg)
Responsibility Traps
…Or, Why do irresponsible programmers become heroes?
![Page 76: Not all of a large system will be well designed](https://reader036.vdocuments.net/reader036/viewer/2022062723/56813f57550346895daa245e/html5/thumbnails/76.jpg)
Let’s Hack
![Page 77: Not all of a large system will be well designed](https://reader036.vdocuments.net/reader036/viewer/2022062723/56813f57550346895daa245e/html5/thumbnails/77.jpg)
Let’s Hack
![Page 78: Not all of a large system will be well designed](https://reader036.vdocuments.net/reader036/viewer/2022062723/56813f57550346895daa245e/html5/thumbnails/78.jpg)
Which Parts are Core?
![Page 79: Not all of a large system will be well designed](https://reader036.vdocuments.net/reader036/viewer/2022062723/56813f57550346895daa245e/html5/thumbnails/79.jpg)
Which Parts are Core?
![Page 80: Not all of a large system will be well designed](https://reader036.vdocuments.net/reader036/viewer/2022062723/56813f57550346895daa245e/html5/thumbnails/80.jpg)
Responsibility Traps
• Building a platform to make other (lesser) programmers more productive.
• Cleaning up other people’s mess.
![Page 81: Not all of a large system will be well designed](https://reader036.vdocuments.net/reader036/viewer/2022062723/56813f57550346895daa245e/html5/thumbnails/81.jpg)
What’s a responsible designer to do?!!
![Page 82: Not all of a large system will be well designed](https://reader036.vdocuments.net/reader036/viewer/2022062723/56813f57550346895daa245e/html5/thumbnails/82.jpg)
How could we just build the core part?
![Page 83: Not all of a large system will be well designed](https://reader036.vdocuments.net/reader036/viewer/2022062723/56813f57550346895daa245e/html5/thumbnails/83.jpg)
Build Platform Based on Model
![Page 84: Not all of a large system will be well designed](https://reader036.vdocuments.net/reader036/viewer/2022062723/56813f57550346895daa245e/html5/thumbnails/84.jpg)
Build Platform Based on Model
![Page 85: Not all of a large system will be well designed](https://reader036.vdocuments.net/reader036/viewer/2022062723/56813f57550346895daa245e/html5/thumbnails/85.jpg)
Strategy
• Draw a Context Map.
• Work with business leadership to define Core Domain.
• Design a platform that supports work in the Core Domain.
• Work with management to give freedom to the Core Domain Platform Context.
• Develop and model in the Core Domain.
![Page 86: Not all of a large system will be well designed](https://reader036.vdocuments.net/reader036/viewer/2022062723/56813f57550346895daa245e/html5/thumbnails/86.jpg)
Strategy
• Keep an eye on your Context Map.• Keep working with business leadership as
Core Domain narrows and shifts.• Guard your platform that supports work in the
Core Domain.• Keep working with management to maintain
freedom of the Core Domain Platform Context.• Keep developing and evolving the model in the
Core Domain.
![Page 87: Not all of a large system will be well designed](https://reader036.vdocuments.net/reader036/viewer/2022062723/56813f57550346895daa245e/html5/thumbnails/87.jpg)
Strategic DDD Resources
www.domaindrivendesign.org
Domain-Driven Design
by Eric Evans
PART 4!
www.domainlanguage.com