Domain-Driven Design Basics

Preview:

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

Citation preview

DDD BasicsFebruary 11, 2014 - Olen, Belgium

wifi: ITR-Events / domaindriven

Kindly hosted by

Community TalksCall for Proposals

domaindriven.be/cfp

Defining DDD (Yves) Ubiquitous Language (Jef)

Bounded Contexts (Mathias) Context Mapping (Stijn)

Modelling (Mathias) Starting/Selling DDD (Tom)

Q&A / Lean Coffee

Bounded Contexts

Large complex systems:

increased cognitive load

Large complex systems:

divergence in mental model

Large complex systems:

subtle nuances in meaning

Avoid a big

unified centralised

model.

Split into Bounded Contexts

Benefits: clarity

model integrity freedom to

evolve separately

Inspired by departments

teams life cycles

business processes …

Make Bounded Context explicit pure

independent consistent within its

boundary

Modelling

Structural modelling

Ontological

Structural modelling

inspired by persistence concerns

Relational Normalised

CRUD Anaemic

Ask your Domain Expert

about State Changes!

Why does it change? When does it change?

How often? Who causes it? By which rules?

What consequences?

!

!

The moving parts are more interesting than the

stable parts

!

!

A Domain Model is about:

state + structure behaviour + change

temporal roles + actors

business rules + invariants causality + correlation

interaction processes

workflows + transitions intention + consequence

failure …

Modelling: Make the implicit explicit

example !

Intentions: Command Objects

Consequences: Domain Events

@mathiasverraes http://verraes.net