Slide 1

Slide 1 text

Strategic Domain-Driven Design

Slide 2

Slide 2 text

Requirements Telephone

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

Why Domain-Driven Design (DDD)? ● A domain model and ubiquitous language provide a mechanism for shared understanding ● The whole team gains a useful mental model for discussion & refinement, which leads to greater understanding of our business ● Domain experts can contribute to software design, leading to a better representation of how the business works ● Since pure models can be late bound to implementation details, they are easier to test, which leads to more correct implementations

Slide 5

Slide 5 text

Domains, Bounded Contexts & Ubiquitous Language

Slide 6

Slide 6 text

Problem Domains and Solution Contexts

Slide 7

Slide 7 text

No content

Slide 8

Slide 8 text

No content

Slide 9

Slide 9 text

Publishing Core Domain ● Conceptualizing and proposing a book ● Contracting with authors ● Managing the book’s authorship and editorial process ● Designing the book layout, including illustrations ● Translating the book into other languages ● Producing the physical print and/or electronic editions ● Marketing the book ● Selling the book to resellers and/or directly to consumers ● Shipping a physical book to resellers and consumers

Slide 10

Slide 10 text

Ubiquitous Language

Slide 11

Slide 11 text

NOPE

Slide 12

Slide 12 text

Context Maps

Slide 13

Slide 13 text

Conway’s Law “Organizations which design systems ... are constrained to produce designs which are copies of the communication structures of these organizations.”

Slide 14

Slide 14 text

Big Ball of Mud

Slide 15

Slide 15 text

Partnerships

Slide 16

Slide 16 text

Shared Kernel

Slide 17

Slide 17 text

Customer-Supplier

Slide 18

Slide 18 text

Conformist

Slide 19

Slide 19 text

Anti-Corruption Layer

Slide 20

Slide 20 text

Open Host Service

Slide 21

Slide 21 text

Published Language

Slide 22

Slide 22 text

Separate Ways

Slide 23

Slide 23 text

No content

Slide 24

Slide 24 text

No content

Slide 25

Slide 25 text

No content

Slide 26

Slide 26 text

No content

Slide 27

Slide 27 text

Architectures

Slide 28

Slide 28 text

Layered Architecture

Slide 29

Slide 29 text

Layered Architecture using Dependency Inversion

Slide 30

Slide 30 text

Clean Architecture

Slide 31

Slide 31 text

Event-driven

Slide 32

Slide 32 text

Grid-based Distributed Computing

Slide 33

Slide 33 text

Pipes and Filters

Slide 34

Slide 34 text

Representational State Transfer (REST) ● Uniform Interface ● Client-Server ● Stateless ● Cacheable ● Layered System ● Code-on-demand (optional)

Slide 35

Slide 35 text

Key Takeaways ● Shared understanding is a non-negotiable goal ● The structure of the organization contributes to the structure of the codebase ● Architecture is not implementation details, like which database or framework you are using, instead it is the structure of your system