Why Domain-Driven Design Matters

  • View
    4.011

  • Download
    3

  • Category

    Design

Preview:

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