50
@MATHIASVERRAES DESIGN MATTERS DOMAIN-DRIVEN WHY

Why Domain-Driven Design Matters

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

Page 1: Why Domain-Driven Design Matters

@MATHIASVERRAES

DESIGNMATTERS

DOMAIN-DRIVENWHY

Page 2: Why Domain-Driven Design Matters

Mathias VerraesStudent of Systems Meddler of Models Labourer of Legacy

verraes.net mathiasverraes

Page 3: Why Domain-Driven Design Matters

SET OF DESIGN PATTERNS?

Page 4: Why Domain-Driven Design Matters

SET OF DESIGN PATTERNS? METHODOLOGY?

Page 5: Why Domain-Driven Design Matters

SET OF DESIGN PATTERNS? METHODOLOGY?

TOTAL APPROACH TO DEALING WITH COMPLEXITY?

Page 6: Why Domain-Driven Design Matters

SET OF DESIGN PATTERNS? METHODOLOGY?

TOTAL APPROACH TO DEALING WITH COMPLEXITY?

PHILOSOPHY?

Page 7: Why Domain-Driven Design Matters

INFLUENCEORGANISATION!

⬇!

SOFTWARE

Page 8: Why Domain-Driven Design Matters

INFLUENCEORGANISATION!

⬇SOFTWARE

ORGANISATION

!

Page 9: Why Domain-Driven Design Matters

INFLUENCE- ORGANISATION -

- SOFTWARE - HARDWARE - - RESPONSIVENESS TO BUGS -

- CONTRACTS - THIRD PARTIES - - DEVELOPER HAPPINESS - TOOLS -

- TESTS - SKILLS - COMMUNICATION -

Page 10: Why Domain-Driven Design Matters

“IT IS AN AXIOM THAT INFLUENCE IS BOTH A

CAUSE AND AN EFFECT. NOTHING IS EVER

INFLUENCED IN JUST ONE DIRECTION.”

CHARLEY PETERS

Page 11: Why Domain-Driven Design Matters

“THE CAUSATION FALLACY:

!

EVERY EFFECT HAS A CAUSE AND WE CAN

TELL WHICH IS WHICH.”

GERALD M. WEINBERG

Page 12: Why Domain-Driven Design Matters

SYSTEMSGENERALTHINKING

Page 13: Why Domain-Driven Design Matters

“EVERYTHING IS A SYSTEM.

EVERYTHING IS PART OF A SYSTEM.”

GERALD M. WEINBERG

Page 14: Why Domain-Driven Design Matters

SYSTEMS!

Thinking about systems as dynamic, evolving patterns of

interaction and feedback.

Page 15: Why Domain-Driven Design Matters

“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

Page 16: Why Domain-Driven Design Matters

“IGNORING FEEDBACK MERELY MEANS THAT THE SYSTEM WILL EVENTUALLY

EXPERIENCE A MASSIVE UNPLEASANT SURPRISE (RATHER THAN A SMALL

UNPLEASANT SURPRISE).”

JOHN GALL

Page 17: Why Domain-Driven Design Matters

“IT MAY LOOK LIKE A CRISIS, BUT IT'S ONLY

THE END OF AN ILLUSION.”

GERALD M. WEINBERG

Page 18: Why Domain-Driven Design Matters

“SYSTEMS TEND TO OPPOSE THEIR

OWN PROPER FUNCTION.”

HENRI LOUIS LE CHATELIER

Page 19: Why Domain-Driven Design Matters

“SYSTEMS INHERENTLY

RESIST CHANGE.”

SCOTT PECK

Page 20: Why Domain-Driven Design Matters

“THE MORE ADAPTED AN ORGANISM IS TO

PRESENT CONDITIONS, THE LESS ADAPTABLE IT

TENDS TO BE TO UNKNOWN FUTURE

CONDITIONS.”SIR RONALD FISHER

Page 21: Why Domain-Driven Design Matters

“IT'S CALLED ‘SOFTWARE’ FOR A

REASON. IT'S SUPPOSED TO BE

EASY TO CHANGE.”UNCLE BOB?

Page 22: Why Domain-Driven Design Matters

DESIGNSOFTWAREHAS A SLOWFEEDBACK CYCLE

Page 23: Why Domain-Driven Design Matters

FAST ITERATIONLEAN STARTUP AGILE TDD BDD KANBAN

Page 24: Why Domain-Driven Design Matters

FAST ITERATIONLEAN STARTUP VALIDATED LEARNING

Page 25: Why Domain-Driven Design Matters

FAST ITERATIONAGILE COLLABORATE

Page 26: Why Domain-Driven Design Matters

FAST ITERATIONTDD DESIGN SMALL

Page 27: Why Domain-Driven Design Matters

FAST ITERATIONBDD COMMUNICATE

Page 28: Why Domain-Driven Design Matters

FAST ITERATIONKANBAN IMPROVE CONTINUOUSLY

Page 29: Why Domain-Driven Design Matters

(broad generalisations)

Page 30: Why Domain-Driven Design Matters

DESIGNGOES DEEPERDOMAIN-DRIVEN

Page 31: Why Domain-Driven Design Matters

DOMAINPROBLEM SPACE

DOMAIN MODELSOLUTION SPACE

Page 32: Why Domain-Driven Design Matters

DOMAIN&

DOMAIN MODELIN SYNC

KEEP

Page 33: Why Domain-Driven Design Matters

UBIQUITOUSLANGUAGE

Page 34: Why Domain-Driven Design Matters

DESIGNTACKLES

DOMAIN-DRIVEN

COMPLEXITY

Page 35: Why Domain-Driven Design Matters

ACCIDENTAL COMPLEXITY ESSENTIAL

COMPLEXITY

Page 36: Why Domain-Driven Design Matters

DESIGN PATTERNS

Page 37: Why Domain-Driven Design Matters

“DESIGN PATTERNS ARE A GATEWAY DRUG

TO DOMAIN-DRIVEN DESIGN”

ROSS TUCK

Page 38: Why Domain-Driven Design Matters

SUPPLE DESIGN

Page 39: Why Domain-Driven Design Matters

DECLARATIVE DESIGN

Page 40: Why Domain-Driven Design Matters

REFACTORING

Page 41: Why Domain-Driven Design Matters

BOUNDED CONTEXTS

Page 42: Why Domain-Driven Design Matters

DISTILLATION

Page 43: Why Domain-Driven Design Matters

LARGE SCALE STRUCTURE

Page 44: Why Domain-Driven Design Matters

MODELLING WHIRLPOOL

Page 45: Why Domain-Driven Design Matters

MODEL STORMING

Page 46: Why Domain-Driven Design Matters

DESIGNMATTER ?

DOMAIN-DRIVENSo WHY DOES

Page 47: Why Domain-Driven Design Matters

INFLUENCE FEEDBACK PATTERNS SYSTEMS

COMPLEXITY ITERATIONS

WHY CAN’T IT BE SIMPLE?

Page 48: Why Domain-Driven Design Matters

“A LARGE SYSTEM, PRODUCED BY EXPANDING

THE DIMENSIONS OF A SMALL SYSTEM,

DOES NOT BEHAVE LIKE THE SMALLER

SYSTEM”JOHN GALL

Page 49: Why Domain-Driven Design Matters

verraes.netmathiasverraes

Page 50: Why Domain-Driven Design Matters

verraes.netmathiasverraes