Slide 1

Slide 1 text

DOMAIN DRIVEN DESIGN DDD

Slide 2

Slide 2 text

BY ERIC EVANS

Slide 3

Slide 3 text

150 PAGES

Slide 4

Slide 4 text

WHAT IS DOMAIN? • Business or whatever activity we are trying to assist with the software

Slide 5

Slide 5 text

• Assembly parts != Car • Vision • Specification • Architecture

Slide 6

Slide 6 text

• Communication between experts & developers • Develop model together

Slide 7

Slide 7 text

UBIQUITOUS LANGUAGE • Model driven: Based on the Domain Model • Building up a common, rigorous language between developers and users • UML • Software doesn't cope well with ambiguity

Slide 8

Slide 8 text

BOUNDED CONTEXT • Model gets bigger • Bound context • Domain & sub domain Domain Sub Domain Service Sub Domain Service Sub Domain Service

Slide 9

Slide 9 text

• Product in Catalog domain • Product in Stock Management domain Product image, title, price product code, storage

Slide 10

Slide 10 text

• Subdomain has its own model • Each model has bounded context

Slide 11

Slide 11 text

BUILDING BLOCKS Model Driven Development

Slide 12

Slide 12 text

LAYERED ARCHITECTURE

Slide 13

Slide 13 text

ENTITY • Not defined by their attributes • Continuity • Identity

Slide 14

Slide 14 text

VALUE OBJECT • These objects describe characteristics of a thing. • Immutable during lifecycle

Slide 15

Slide 15 text

SERVICE • oo manger • significant process or transformation in the domain is not a responsibility of an ENTITY or VALUE OBJECT, add SERVICE • The interface is defined in terms of other elements in the domain model • Stateless

Slide 16

Slide 16 text

MODULE • Highly cohesive • Low coupling • Derived from the Ubiquitous Language

Slide 17

Slide 17 text

AGGREGATE • Logical boundary for things that can change in a business transaction of a given context. • Reduce many to many relationship • Root: outside objects holds references to

Slide 18

Slide 18 text

AGGREGATE

Slide 19

Slide 19 text

FACTORY • Produces complicated aggregates or sometimes also entities and value objects

Slide 20

Slide 20 text

REPOSITORY • Interfaces for storing and retrieving Aggregate Roots

Slide 21

Slide 21 text

• Refactoring • Maintaining model integrity • …

Slide 22

Slide 22 text

THANK YOU!