the art of software design
TRANSCRIPT
![Page 1: The art of Software Design](https://reader031.vdocuments.site/reader031/viewer/2022030210/58a5cec21a28ab6c2a8b5dcf/html5/thumbnails/1.jpg)
THE ART OF (SOFTWARE) DESIGNJérémie GRODZISKI - Thomas PIERRAIN
DDD Meetup - February 2017
![Page 2: The art of Software Design](https://reader031.vdocuments.site/reader031/viewer/2022030210/58a5cec21a28ab6c2a8b5dcf/html5/thumbnails/2.jpg)
HAS 'AGILE' KILLED DESIGN IN SOFTWARE?
![Page 3: The art of Software Design](https://reader031.vdocuments.site/reader031/viewer/2022030210/58a5cec21a28ab6c2a8b5dcf/html5/thumbnails/3.jpg)
PROBABLY BUT…
![Page 4: The art of Software Design](https://reader031.vdocuments.site/reader031/viewer/2022030210/58a5cec21a28ab6c2a8b5dcf/html5/thumbnails/4.jpg)
’AGILE' WANTED TO KILL BIG UPFRONT DESIGN ONLY
![Page 5: The art of Software Design](https://reader031.vdocuments.site/reader031/viewer/2022030210/58a5cec21a28ab6c2a8b5dcf/html5/thumbnails/5.jpg)
BIG UPFRONT DESIGN
DESIGN≠
![Page 6: The art of Software Design](https://reader031.vdocuments.site/reader031/viewer/2022030210/58a5cec21a28ab6c2a8b5dcf/html5/thumbnails/6.jpg)
LACK OF DESIGN
EMERGENT DESIGN≠
![Page 7: The art of Software Design](https://reader031.vdocuments.site/reader031/viewer/2022030210/58a5cec21a28ab6c2a8b5dcf/html5/thumbnails/7.jpg)
DON'T THROW THE BABY WITH
THE BATHWATER
DON’T THROW THE DESIGN « BABY » WITH…
![Page 8: The art of Software Design](https://reader031.vdocuments.site/reader031/viewer/2022030210/58a5cec21a28ab6c2a8b5dcf/html5/thumbnails/8.jpg)
WHAT IS DESIGN?
![Page 9: The art of Software Design](https://reader031.vdocuments.site/reader031/viewer/2022030210/58a5cec21a28ab6c2a8b5dcf/html5/thumbnails/9.jpg)
DESIGN IS MAKING DECISIONS
![Page 10: The art of Software Design](https://reader031.vdocuments.site/reader031/viewer/2022030210/58a5cec21a28ab6c2a8b5dcf/html5/thumbnails/10.jpg)
MAKING DECISIONS TO
BUILD SOMETHING
![Page 11: The art of Software Design](https://reader031.vdocuments.site/reader031/viewer/2022030210/58a5cec21a28ab6c2a8b5dcf/html5/thumbnails/11.jpg)
EVERYONE IS MAKING DECISIONS
![Page 12: The art of Software Design](https://reader031.vdocuments.site/reader031/viewer/2022030210/58a5cec21a28ab6c2a8b5dcf/html5/thumbnails/12.jpg)
EVERYONE IS MAKING DECISIONS…
BUT WITH DIFFERENT IMPACTS
![Page 13: The art of Software Design](https://reader031.vdocuments.site/reader031/viewer/2022030210/58a5cec21a28ab6c2a8b5dcf/html5/thumbnails/13.jpg)
BUILDING SOMETHING
OK, BUT WHY?
![Page 14: The art of Software Design](https://reader031.vdocuments.site/reader031/viewer/2022030210/58a5cec21a28ab6c2a8b5dcf/html5/thumbnails/14.jpg)
WHY?WHY?
WHY?WHY?
WHY?
BUILDING SOMETHING
OK, BUT WHY?
![Page 15: The art of Software Design](https://reader031.vdocuments.site/reader031/viewer/2022030210/58a5cec21a28ab6c2a8b5dcf/html5/thumbnails/15.jpg)
SOLUTION SPACE
PROBLEM SPACE
WHY
WHAT
![Page 16: The art of Software Design](https://reader031.vdocuments.site/reader031/viewer/2022030210/58a5cec21a28ab6c2a8b5dcf/html5/thumbnails/16.jpg)
HOW
SOLUTION SPACE
![Page 17: The art of Software Design](https://reader031.vdocuments.site/reader031/viewer/2022030210/58a5cec21a28ab6c2a8b5dcf/html5/thumbnails/17.jpg)
PROBLEM SPACE
Problem Usages Languages Domain Requirements Constraints People
![Page 18: The art of Software Design](https://reader031.vdocuments.site/reader031/viewer/2022030210/58a5cec21a28ab6c2a8b5dcf/html5/thumbnails/18.jpg)
PROBLEM SPACE
Problem Usages Languages Domain Requirements Constraints People
DOMAIN ( noun, do·main)
Set of concepts
That through usages
Help to solve problems
![Page 19: The art of Software Design](https://reader031.vdocuments.site/reader031/viewer/2022030210/58a5cec21a28ab6c2a8b5dcf/html5/thumbnails/19.jpg)
PROBLEM SPACE
Problem Usages Languages Domain Requirements Constraints People
DOMAIN Solve Problems
![Page 20: The art of Software Design](https://reader031.vdocuments.site/reader031/viewer/2022030210/58a5cec21a28ab6c2a8b5dcf/html5/thumbnails/20.jpg)
SOLUTION SPACE
Software Model
Design Patterns
Heuristics Feedback
![Page 21: The art of Software Design](https://reader031.vdocuments.site/reader031/viewer/2022030210/58a5cec21a28ab6c2a8b5dcf/html5/thumbnails/21.jpg)
Driven
PROBLEM SPACE
Problem Usages Languages Domain Requirements Constraints People
SOLUTION SPACE
Software Model
Design Patterns
Heuristics Feedback
![Page 22: The art of Software Design](https://reader031.vdocuments.site/reader031/viewer/2022030210/58a5cec21a28ab6c2a8b5dcf/html5/thumbnails/22.jpg)
PROBLEM SPACE
Domain
SOLUTION SPACE
Design- Driven
![Page 23: The art of Software Design](https://reader031.vdocuments.site/reader031/viewer/2022030210/58a5cec21a28ab6c2a8b5dcf/html5/thumbnails/23.jpg)
HEURISTICS?practical method not guaranteed to be
optimal or perfect, but sufficient for the immediate goals.
![Page 24: The art of Software Design](https://reader031.vdocuments.site/reader031/viewer/2022030210/58a5cec21a28ab6c2a8b5dcf/html5/thumbnails/24.jpg)
PATTERNS
FAVORITES ALGORITHMS
…
FAVORITES SOLUTIONS
FAVORITES APPROACHES
OUR MENTAL MODELS
![Page 25: The art of Software Design](https://reader031.vdocuments.site/reader031/viewer/2022030210/58a5cec21a28ab6c2a8b5dcf/html5/thumbnails/25.jpg)
HOUSTON?
![Page 26: The art of Software Design](https://reader031.vdocuments.site/reader031/viewer/2022030210/58a5cec21a28ab6c2a8b5dcf/html5/thumbnails/26.jpg)
TRAPPED BY YOUR OWN HEURISTICS?
![Page 27: The art of Software Design](https://reader031.vdocuments.site/reader031/viewer/2022030210/58a5cec21a28ab6c2a8b5dcf/html5/thumbnails/27.jpg)
SYSTEMATIC LAYERS
ORMFRAMEWORKSANEMIC
BEHAVIORS…IOC
![Page 28: The art of Software Design](https://reader031.vdocuments.site/reader031/viewer/2022030210/58a5cec21a28ab6c2a8b5dcf/html5/thumbnails/28.jpg)
FROM HEURISTICS TO SOLUTION-FIRST BIAS
![Page 29: The art of Software Design](https://reader031.vdocuments.site/reader031/viewer/2022030210/58a5cec21a28ab6c2a8b5dcf/html5/thumbnails/29.jpg)
![Page 30: The art of Software Design](https://reader031.vdocuments.site/reader031/viewer/2022030210/58a5cec21a28ab6c2a8b5dcf/html5/thumbnails/30.jpg)
MOST DEVELOPERS LIKES…
SOLUTIONS
![Page 31: The art of Software Design](https://reader031.vdocuments.site/reader031/viewer/2022030210/58a5cec21a28ab6c2a8b5dcf/html5/thumbnails/31.jpg)
OUR USERS ARE TIRED OF C.R.U.D.
APPLICATIONS
![Page 32: The art of Software Design](https://reader031.vdocuments.site/reader031/viewer/2022030210/58a5cec21a28ab6c2a8b5dcf/html5/thumbnails/32.jpg)
C.R.U.D. APPLICATIONS
![Page 33: The art of Software Design](https://reader031.vdocuments.site/reader031/viewer/2022030210/58a5cec21a28ab6c2a8b5dcf/html5/thumbnails/33.jpg)
THE C.R.U.D. BURDEN CRUD app #1
CRUD app #2
CRUD app #3
![Page 34: The art of Software Design](https://reader031.vdocuments.site/reader031/viewer/2022030210/58a5cec21a28ab6c2a8b5dcf/html5/thumbnails/34.jpg)
Create
THE C.R.U.D. BURDEN CRUD app #1
CRUD app #2
CRUD app #3
![Page 35: The art of Software Design](https://reader031.vdocuments.site/reader031/viewer/2022030210/58a5cec21a28ab6c2a8b5dcf/html5/thumbnails/35.jpg)
Ctrl-C
THE C.R.U.D. BURDEN CRUD app #1
CRUD app #2
CRUD app #3
![Page 36: The art of Software Design](https://reader031.vdocuments.site/reader031/viewer/2022030210/58a5cec21a28ab6c2a8b5dcf/html5/thumbnails/36.jpg)
Update
THE C.R.U.D. BURDEN CRUD app #1
CRUD app #2
CRUD app #3
![Page 37: The art of Software Design](https://reader031.vdocuments.site/reader031/viewer/2022030210/58a5cec21a28ab6c2a8b5dcf/html5/thumbnails/37.jpg)
Ctrl-V
THE C.R.U.D. BURDEN CRUD app #1
CRUD app #2
CRUD app #3
![Page 38: The art of Software Design](https://reader031.vdocuments.site/reader031/viewer/2022030210/58a5cec21a28ab6c2a8b5dcf/html5/thumbnails/38.jpg)
Create
THE C.R.U.D. BURDEN CRUD app #1
CRUD app #2
CRUD app #3
![Page 39: The art of Software Design](https://reader031.vdocuments.site/reader031/viewer/2022030210/58a5cec21a28ab6c2a8b5dcf/html5/thumbnails/39.jpg)
Ctrl-V
THE C.R.U.D. BURDEN CRUD app #1
CRUD app #2
CRUD app #3
![Page 40: The art of Software Design](https://reader031.vdocuments.site/reader031/viewer/2022030210/58a5cec21a28ab6c2a8b5dcf/html5/thumbnails/40.jpg)
Update
THE C.R.U.D. BURDEN CRUD app #1
CRUD app #2
CRUD app #3
![Page 41: The art of Software Design](https://reader031.vdocuments.site/reader031/viewer/2022030210/58a5cec21a28ab6c2a8b5dcf/html5/thumbnails/41.jpg)
Ctrl-V
THE C.R.U.D. BURDEN CRUD app #1
CRUD app #2
CRUD app #3
![Page 42: The art of Software Design](https://reader031.vdocuments.site/reader031/viewer/2022030210/58a5cec21a28ab6c2a8b5dcf/html5/thumbnails/42.jpg)
…
THE C.R.U.D. BURDEN CRUD app #1
CRUD app #2
CRUD app #3
![Page 43: The art of Software Design](https://reader031.vdocuments.site/reader031/viewer/2022030210/58a5cec21a28ab6c2a8b5dcf/html5/thumbnails/43.jpg)
I’m doing all the job actually…
THE C.R.U.D. BURDEN CRUD app #1
CRUD app #2
CRUD app #3
![Page 44: The art of Software Design](https://reader031.vdocuments.site/reader031/viewer/2022030210/58a5cec21a28ab6c2a8b5dcf/html5/thumbnails/44.jpg)
THE C.R.U.D. BURDEN CRUD app #1
CRUD app #2
CRUD app #3
![Page 45: The art of Software Design](https://reader031.vdocuments.site/reader031/viewer/2022030210/58a5cec21a28ab6c2a8b5dcf/html5/thumbnails/45.jpg)
Damn it!
THE C.R.U.D. BURDEN CRUD app #1
CRUD app #2
CRUD app #3
![Page 46: The art of Software Design](https://reader031.vdocuments.site/reader031/viewer/2022030210/58a5cec21a28ab6c2a8b5dcf/html5/thumbnails/46.jpg)
Damn I.T!
THE C.R.U.D. BURDEN CRUD app #1
CRUD app #2
CRUD app #3
![Page 47: The art of Software Design](https://reader031.vdocuments.site/reader031/viewer/2022030210/58a5cec21a28ab6c2a8b5dcf/html5/thumbnails/47.jpg)
WHY?!?
![Page 48: The art of Software Design](https://reader031.vdocuments.site/reader031/viewer/2022030210/58a5cec21a28ab6c2a8b5dcf/html5/thumbnails/48.jpg)
MANY REASONS BUT…
![Page 49: The art of Software Design](https://reader031.vdocuments.site/reader031/viewer/2022030210/58a5cec21a28ab6c2a8b5dcf/html5/thumbnails/49.jpg)
DATA MODELS INSTEAD OF
DOMAIN MODELS
![Page 50: The art of Software Design](https://reader031.vdocuments.site/reader031/viewer/2022030210/58a5cec21a28ab6c2a8b5dcf/html5/thumbnails/50.jpg)
LAZINESS
« Laziness is nothing more than the habit of resting before you get tired. » (Jules Renard)
![Page 51: The art of Software Design](https://reader031.vdocuments.site/reader031/viewer/2022030210/58a5cec21a28ab6c2a8b5dcf/html5/thumbnails/51.jpg)
A DDD ALTERNATIVE?
THE APP REALLY HELPS WITH A SPECIFIC & CONSISTANT USER JOURNEY
![Page 52: The art of Software Design](https://reader031.vdocuments.site/reader031/viewer/2022030210/58a5cec21a28ab6c2a8b5dcf/html5/thumbnails/52.jpg)
OTHER BIASES?
![Page 53: The art of Software Design](https://reader031.vdocuments.site/reader031/viewer/2022030210/58a5cec21a28ab6c2a8b5dcf/html5/thumbnails/53.jpg)
BEWARE OF FADS
micro-services, blockchains, …
![Page 54: The art of Software Design](https://reader031.vdocuments.site/reader031/viewer/2022030210/58a5cec21a28ab6c2a8b5dcf/html5/thumbnails/54.jpg)
THE ABSTRACTION-FIRST PITFALL
![Page 55: The art of Software Design](https://reader031.vdocuments.site/reader031/viewer/2022030210/58a5cec21a28ab6c2a8b5dcf/html5/thumbnails/55.jpg)
CONCRETE THINGS FIRST!
![Page 56: The art of Software Design](https://reader031.vdocuments.site/reader031/viewer/2022030210/58a5cec21a28ab6c2a8b5dcf/html5/thumbnails/56.jpg)
THE CV-DRIVEN DEVELOPMENT
PANDEMIC
![Page 57: The art of Software Design](https://reader031.vdocuments.site/reader031/viewer/2022030210/58a5cec21a28ab6c2a8b5dcf/html5/thumbnails/57.jpg)
I.T. AS SEEN BY
THE BUSINESS
![Page 58: The art of Software Design](https://reader031.vdocuments.site/reader031/viewer/2022030210/58a5cec21a28ab6c2a8b5dcf/html5/thumbnails/58.jpg)
WE MUST FOCUS MORE ON
THE BUSINESS CONCERNS!
![Page 59: The art of Software Design](https://reader031.vdocuments.site/reader031/viewer/2022030210/58a5cec21a28ab6c2a8b5dcf/html5/thumbnails/59.jpg)
DESIGN IS CONSCIOUS
CHOICES(Banksy)
![Page 60: The art of Software Design](https://reader031.vdocuments.site/reader031/viewer/2022030210/58a5cec21a28ab6c2a8b5dcf/html5/thumbnails/60.jpg)
ALWAYS CONNECT YOUR DECISIONS
TO YOUR BUSINESS OBJECTIVES
![Page 61: The art of Software Design](https://reader031.vdocuments.site/reader031/viewer/2022030210/58a5cec21a28ab6c2a8b5dcf/html5/thumbnails/61.jpg)
DESIGN IS THE ART OF TRADE-OFF
![Page 62: The art of Software Design](https://reader031.vdocuments.site/reader031/viewer/2022030210/58a5cec21a28ab6c2a8b5dcf/html5/thumbnails/62.jpg)
design = f(requirements + constraints)trade-off
![Page 63: The art of Software Design](https://reader031.vdocuments.site/reader031/viewer/2022030210/58a5cec21a28ab6c2a8b5dcf/html5/thumbnails/63.jpg)
DESIGN SOFTWARE?
![Page 64: The art of Software Design](https://reader031.vdocuments.site/reader031/viewer/2022030210/58a5cec21a28ab6c2a8b5dcf/html5/thumbnails/64.jpg)
ALIGNMENT & EFFICIENCY
solution space
problem space
![Page 65: The art of Software Design](https://reader031.vdocuments.site/reader031/viewer/2022030210/58a5cec21a28ab6c2a8b5dcf/html5/thumbnails/65.jpg)
SOME CONSTRAINTS
(the mythical man-month)
![Page 66: The art of Software Design](https://reader031.vdocuments.site/reader031/viewer/2022030210/58a5cec21a28ab6c2a8b5dcf/html5/thumbnails/66.jpg)
THERMODYNAMICS OF SOFTWARE
![Page 67: The art of Software Design](https://reader031.vdocuments.site/reader031/viewer/2022030210/58a5cec21a28ab6c2a8b5dcf/html5/thumbnails/67.jpg)
HEXAGONAL ARCHITECTURE
DOMAINCODE
(domain first)
![Page 68: The art of Software Design](https://reader031.vdocuments.site/reader031/viewer/2022030210/58a5cec21a28ab6c2a8b5dcf/html5/thumbnails/68.jpg)
HEXAGONAL ARCHITECTURE
DOMAINCODE
DO NOT MESS BUSINESS CODE
INFRA CODE
(infra later)
![Page 69: The art of Software Design](https://reader031.vdocuments.site/reader031/viewer/2022030210/58a5cec21a28ab6c2a8b5dcf/html5/thumbnails/69.jpg)
STANDARD SOFTWARE DESIGN
(take all your favorite heuristics with you ;-(
![Page 70: The art of Software Design](https://reader031.vdocuments.site/reader031/viewer/2022030210/58a5cec21a28ab6c2a8b5dcf/html5/thumbnails/70.jpg)
CONSCIOUS (SOFTWARE) DESIGN
(take only what you need for the usages/contraints)
![Page 71: The art of Software Design](https://reader031.vdocuments.site/reader031/viewer/2022030210/58a5cec21a28ab6c2a8b5dcf/html5/thumbnails/71.jpg)
CONSCIOUS (SOFTWARE) DESIGN
USAGES FIRST - INFRA LATER HEXAGONAL ARCHITECTURE
EXAMPLES & BEHAVIOURS (TESTS) DRIVEN EXPLICIT (AND BOUNDED) CONTEXTS
![Page 72: The art of Software Design](https://reader031.vdocuments.site/reader031/viewer/2022030210/58a5cec21a28ab6c2a8b5dcf/html5/thumbnails/72.jpg)
SOFTWARE DESIGN VS.
REAL WORLD DESIGN?
![Page 73: The art of Software Design](https://reader031.vdocuments.site/reader031/viewer/2022030210/58a5cec21a28ab6c2a8b5dcf/html5/thumbnails/73.jpg)
DUPLICATION OF
CODE AND DATA AT ALMOST NO
COST
![Page 74: The art of Software Design](https://reader031.vdocuments.site/reader031/viewer/2022030210/58a5cec21a28ab6c2a8b5dcf/html5/thumbnails/74.jpg)
SCALING
![Page 75: The art of Software Design](https://reader031.vdocuments.site/reader031/viewer/2022030210/58a5cec21a28ab6c2a8b5dcf/html5/thumbnails/75.jpg)
EASY MODULARIZATION AND INTERFACING
![Page 76: The art of Software Design](https://reader031.vdocuments.site/reader031/viewer/2022030210/58a5cec21a28ab6c2a8b5dcf/html5/thumbnails/76.jpg)
BEWARE OF THE BUILDING
METAPHOR
![Page 77: The art of Software Design](https://reader031.vdocuments.site/reader031/viewer/2022030210/58a5cec21a28ab6c2a8b5dcf/html5/thumbnails/77.jpg)
WRAP UP
![Page 78: The art of Software Design](https://reader031.vdocuments.site/reader031/viewer/2022030210/58a5cec21a28ab6c2a8b5dcf/html5/thumbnails/78.jpg)
MINDSETAPPROACH
![Page 79: The art of Software Design](https://reader031.vdocuments.site/reader031/viewer/2022030210/58a5cec21a28ab6c2a8b5dcf/html5/thumbnails/79.jpg)
MINDSETAPPROACH
![Page 80: The art of Software Design](https://reader031.vdocuments.site/reader031/viewer/2022030210/58a5cec21a28ab6c2a8b5dcf/html5/thumbnails/80.jpg)
ALWAYS MAKE CONSCIOUS DECISIONS
{ Value | Constraint }
(Banksy)
![Page 81: The art of Software Design](https://reader031.vdocuments.site/reader031/viewer/2022030210/58a5cec21a28ab6c2a8b5dcf/html5/thumbnails/81.jpg)
FOSTER CONSCIOUS
DESIGN!
![Page 82: The art of Software Design](https://reader031.vdocuments.site/reader031/viewer/2022030210/58a5cec21a28ab6c2a8b5dcf/html5/thumbnails/82.jpg)
STAY CONSCIOUS OF YOUR
BIAS
![Page 83: The art of Software Design](https://reader031.vdocuments.site/reader031/viewer/2022030210/58a5cec21a28ab6c2a8b5dcf/html5/thumbnails/83.jpg)
MINDSETAPPROACH
![Page 84: The art of Software Design](https://reader031.vdocuments.site/reader031/viewer/2022030210/58a5cec21a28ab6c2a8b5dcf/html5/thumbnails/84.jpg)
MINDSETAPPROACH
![Page 85: The art of Software Design](https://reader031.vdocuments.site/reader031/viewer/2022030210/58a5cec21a28ab6c2a8b5dcf/html5/thumbnails/85.jpg)
USAGES FIRST …INFRA LATER
![Page 86: The art of Software Design](https://reader031.vdocuments.site/reader031/viewer/2022030210/58a5cec21a28ab6c2a8b5dcf/html5/thumbnails/86.jpg)
BE ADAPTABLE RATHER THAN PREDICTABLE
![Page 87: The art of Software Design](https://reader031.vdocuments.site/reader031/viewer/2022030210/58a5cec21a28ab6c2a8b5dcf/html5/thumbnails/87.jpg)
THANK YOU! JOIN US @DDDREBOOT