Domain-Driven Design Basics

25
DDD Basics February 11, 2014 - Olen, Belgium wifi: ITR-Events / domaindriven

description

DDD Basics session with the Domain-Driven Design Belgium community. We only covered Strategic DDD, and split up the work amongst the five founders of the group: @yreynhout (Defining Domain-Driven Design) @JefClaes (Ubiquitous Language) @ONE75 (Context Mapping) @ToJans (Selling Domain-Driven Design to the business) @mathiasverraes (Bounded Contexts and Modelling). More at http://verraes.net/ or http://twitter.com/mathiasverraes

Transcript of Domain-Driven Design Basics

Page 1: Domain-Driven Design Basics

DDD BasicsFebruary 11, 2014 - Olen, Belgium

wifi: ITR-Events / domaindriven

Page 2: Domain-Driven Design Basics

Kindly hosted by

Page 3: Domain-Driven Design Basics

Community TalksCall for Proposals

domaindriven.be/cfp

Page 4: Domain-Driven Design Basics

Defining DDD (Yves) Ubiquitous Language (Jef)

Bounded Contexts (Mathias) Context Mapping (Stijn)

Modelling (Mathias) Starting/Selling DDD (Tom)

Q&A / Lean Coffee

Page 5: Domain-Driven Design Basics

Bounded Contexts

Page 6: Domain-Driven Design Basics

Large complex systems:

increased cognitive load

Page 7: Domain-Driven Design Basics

Large complex systems:

divergence in mental model

Page 8: Domain-Driven Design Basics

Large complex systems:

subtle nuances in meaning

Page 9: Domain-Driven Design Basics

Avoid a big

unified centralised

model.

Page 10: Domain-Driven Design Basics

Split into Bounded Contexts

Page 11: Domain-Driven Design Basics

Benefits: clarity

model integrity freedom to

evolve separately

Page 12: Domain-Driven Design Basics

Inspired by departments

teams life cycles

business processes …

Page 13: Domain-Driven Design Basics

Make Bounded Context explicit pure

independent consistent within its

boundary

Page 14: Domain-Driven Design Basics

Modelling

Page 15: Domain-Driven Design Basics

Structural modelling

Ontological

Page 16: Domain-Driven Design Basics

Structural modelling

inspired by persistence concerns

Page 17: Domain-Driven Design Basics

Relational Normalised

CRUD Anaemic

Page 18: Domain-Driven Design Basics

Ask your Domain Expert

about State Changes!

Page 19: Domain-Driven Design Basics

Why does it change? When does it change?

How often? Who causes it? By which rules?

What consequences?

Page 20: Domain-Driven Design Basics

!

!

The moving parts are more interesting than the

stable parts

Page 21: Domain-Driven Design Basics

!

!

A Domain Model is about:

Page 22: Domain-Driven Design Basics

state + structure behaviour + change

temporal roles + actors

business rules + invariants causality + correlation

interaction processes

workflows + transitions intention + consequence

failure …

Page 23: Domain-Driven Design Basics

Modelling: Make the implicit explicit

Page 24: Domain-Driven Design Basics

example !

Intentions: Command Objects

Consequences: Domain Events

Page 25: Domain-Driven Design Basics

@mathiasverraes http://verraes.net