Slide 1

Slide 1 text

DDD Basics - Kortrijk Edition June 10, 2014 - Belgium @DDDBE — http://domaindriven.be

Slide 2

Slide 2 text

Kindly hosted by

Slide 3

Slide 3 text

We’ve got some great (international) speakers, but we need locations! ping @DDDBE http://domaindriven.be

Slide 4

Slide 4 text

Aspects of Domain-Driven Design

Slide 5

Slide 5 text

Tactical DDD ! design patterns

Slide 6

Slide 6 text

Collaborative DDD ! model storming

Slide 7

Slide 7 text

Strategic DDD ! complexity, scale

Slide 8

Slide 8 text

Defining DDD (Yves) Ubiquitous Language (Jef) Bounded Contexts (Mathias) Context Mapping (Stijn) Modelling (Mathias) Starting/Selling DDD (Tom) Q&A / Lean Coffee

Slide 9

Slide 9 text

Bounded Contexts

Slide 10

Slide 10 text

“When something is wrong, something is too big.” — Leopold Kohr

Slide 11

Slide 11 text

Large complex systems: harder to reason about

Slide 12

Slide 12 text

Large complex systems: your mental model != my mental model

Slide 13

Slide 13 text

Large complex systems: subtle nuances in meaning

Slide 14

Slide 14 text

Avoid a big unified centralised model.

Slide 15

Slide 15 text

Classic example: What is a product?

Slide 16

Slide 16 text

Split into Bounded Contexts

Slide 17

Slide 17 text

Make Bounded Context explicit pure independent consistent within its boundary

Slide 18

Slide 18 text

Benefits: clarity model integrity freedom to evolve separately

Slide 19

Slide 19 text

Drawbacks: short term convenience choosing the boundaries how big is the problem?

Slide 20

Slide 20 text

Tricks

Slide 21

Slide 21 text

Inspired by departments teams life cycles business processes

Slide 22

Slide 22 text

What if this was an off-the-shelf solution?

Slide 23

Slide 23 text

How much communication goes on between Bounded Contexts?

Slide 24

Slide 24 text

Visualize! ! Context Mapping Model Storming

Slide 25

Slide 25 text

Modelling

Slide 26

Slide 26 text

Structural modelling describes state

Slide 27

Slide 27 text

Structural modelling inspired by persistence concerns

Slide 28

Slide 28 text

Relational Normalised CRUD Anaemic

Slide 29

Slide 29 text

“CRUD is our industry’s grand failure.” — Greg Young

Slide 30

Slide 30 text

Ask your Domain Expert about State Changes!

Slide 31

Slide 31 text

Why does it change? When does it change? How often? Who causes it? By which rules? What consequences?

Slide 32

Slide 32 text

! ! The moving parts are more interesting than the stable parts

Slide 33

Slide 33 text

! ! A Domain Model is about:

Slide 34

Slide 34 text

state + structure behaviour + change temporal roles + actors business rules + invariants causality + correlation interaction processes workflows + transitions intention + consequence failure …

Slide 35

Slide 35 text

Modelling: Make the implicit explicit

Slide 36

Slide 36 text

example ! Intentions: Command Objects Consequences: Domain Events

Slide 37

Slide 37 text

Intention Protection Interpretation Automation user sends Commands manage processes domain model sends Events, guards consistency create read models from Events DTO Commands Events

Slide 38

Slide 38 text

@mathiasverraes http://verraes.net