Upload
mathiasverraes
View
4.014
Download
3
Embed Size (px)
DESCRIPTION
Why Domain-Driven Design Matters In the software industry, the life expectancy of ideas, methodologies, and technologies, is extremely short. And yet, after ten years, Domain-Driven Design is still growing bigger. From it’s original roots in OOP, it has now expanded into Functional Programming, Reactive Programming and Event Sourcing, and architectural styles such as Hexagonal and CQRS. Clearly something about Domain-Driven Design makes it such an appealing choice to build systems for complex domains. In this session, we’ll discuss what DDD is: from design patterns and modelling techniques, to the more philosophical ideas about how we deal with complexity. We explore why it has made such a profound impact, and how to decide whether it’s right for your project. We’ll have lots of room for open discussion, to make sure all your questions are answered. -- Mathias Verraes is a recovering music composer turned programmer, consultant, blogger, speaker, and podcaster. He advises companies on how to build enterprise web applications for complex business domains . For some weird reason, he enjoys working on large legacy projects: the kind where there’s half a million lines of spaghetti code, and nobody knows how to get the codebase under control. He’s the founder of the Domain-Driven Design Belgium community. When he’s not working, he’s at home in Kortrijk, Belgium, helping his two sons build crazy Lego train tracks.
Citation preview
@MATHIASVERRAES
DESIGNMATTERS
DOMAIN-DRIVENWHY
Mathias VerraesStudent of Systems Meddler of Models Labourer of Legacy
verraes.net mathiasverraes
SET OF DESIGN PATTERNS?
SET OF DESIGN PATTERNS? METHODOLOGY?
SET OF DESIGN PATTERNS? METHODOLOGY?
TOTAL APPROACH TO DEALING WITH COMPLEXITY?
SET OF DESIGN PATTERNS? METHODOLOGY?
TOTAL APPROACH TO DEALING WITH COMPLEXITY?
PHILOSOPHY?
INFLUENCEORGANISATION!
⬇!
SOFTWARE
INFLUENCEORGANISATION!
⬇SOFTWARE
ORGANISATION
!
⬇
INFLUENCE- ORGANISATION -
- SOFTWARE - HARDWARE - - RESPONSIVENESS TO BUGS -
- CONTRACTS - THIRD PARTIES - - DEVELOPER HAPPINESS - TOOLS -
- TESTS - SKILLS - COMMUNICATION -
“IT IS AN AXIOM THAT INFLUENCE IS BOTH A
CAUSE AND AN EFFECT. NOTHING IS EVER
INFLUENCED IN JUST ONE DIRECTION.”
CHARLEY PETERS
“THE CAUSATION FALLACY:
!
EVERY EFFECT HAS A CAUSE AND WE CAN
TELL WHICH IS WHICH.”
GERALD M. WEINBERG
SYSTEMSGENERALTHINKING
“EVERYTHING IS A SYSTEM.
EVERYTHING IS PART OF A SYSTEM.”
GERALD M. WEINBERG
SYSTEMS!
Thinking about systems as dynamic, evolving patterns of
interaction and feedback.
“JUST CALLING IT ‘FEEDBACK’ DOESN'T MEAN THAT IS HAD
ACTUALLY FED BACK. IT HASN'T FED BACK UNTIL THE SYSTEM CHANGES COURSE.”
JOHN GALL
“IGNORING FEEDBACK MERELY MEANS THAT THE SYSTEM WILL EVENTUALLY
EXPERIENCE A MASSIVE UNPLEASANT SURPRISE (RATHER THAN A SMALL
UNPLEASANT SURPRISE).”
JOHN GALL
“IT MAY LOOK LIKE A CRISIS, BUT IT'S ONLY
THE END OF AN ILLUSION.”
GERALD M. WEINBERG
“SYSTEMS TEND TO OPPOSE THEIR
OWN PROPER FUNCTION.”
HENRI LOUIS LE CHATELIER
“SYSTEMS INHERENTLY
RESIST CHANGE.”
SCOTT PECK
“THE MORE ADAPTED AN ORGANISM IS TO
PRESENT CONDITIONS, THE LESS ADAPTABLE IT
TENDS TO BE TO UNKNOWN FUTURE
CONDITIONS.”SIR RONALD FISHER
“IT'S CALLED ‘SOFTWARE’ FOR A
REASON. IT'S SUPPOSED TO BE
EASY TO CHANGE.”UNCLE BOB?
DESIGNSOFTWAREHAS A SLOWFEEDBACK CYCLE
FAST ITERATIONLEAN STARTUP AGILE TDD BDD KANBAN
FAST ITERATIONLEAN STARTUP VALIDATED LEARNING
FAST ITERATIONAGILE COLLABORATE
FAST ITERATIONTDD DESIGN SMALL
FAST ITERATIONBDD COMMUNICATE
FAST ITERATIONKANBAN IMPROVE CONTINUOUSLY
(broad generalisations)
DESIGNGOES DEEPERDOMAIN-DRIVEN
DOMAINPROBLEM SPACE
DOMAIN MODELSOLUTION SPACE
DOMAIN&
DOMAIN MODELIN SYNC
KEEP
UBIQUITOUSLANGUAGE
DESIGNTACKLES
DOMAIN-DRIVEN
COMPLEXITY
ACCIDENTAL COMPLEXITY ESSENTIAL
COMPLEXITY
DESIGN PATTERNS
“DESIGN PATTERNS ARE A GATEWAY DRUG
TO DOMAIN-DRIVEN DESIGN”
ROSS TUCK
SUPPLE DESIGN
DECLARATIVE DESIGN
REFACTORING
BOUNDED CONTEXTS
DISTILLATION
LARGE SCALE STRUCTURE
MODELLING WHIRLPOOL
MODEL STORMING
DESIGNMATTER ?
DOMAIN-DRIVENSo WHY DOES
INFLUENCE FEEDBACK PATTERNS SYSTEMS
COMPLEXITY ITERATIONS
WHY CAN’T IT BE SIMPLE?
“A LARGE SYSTEM, PRODUCED BY EXPANDING
THE DIMENSIONS OF A SMALL SYSTEM,
DOES NOT BEHAVE LIKE THE SMALLER
SYSTEM”JOHN GALL
verraes.netmathiasverraes
verraes.netmathiasverraes