Slide 1

Slide 1 text

Mastering the Basics of DDD Domain-Driven Design with Java Otávio Santana, Founder [email protected]

Slide 2

Slide 2 text

Software Development Failure? Hyper-Focused Planning And Design Unexpected Complexities Poor Collaboration Between The Product And Engineering Teams Unclear Or Undefined Client Expectations

Slide 3

Slide 3 text

The Complexity Paradox The More Answers We Find, the More Questions We Have Developer experience is a market Trade-offs The hype effect

Slide 4

Slide 4 text

DDD? The biggest misunderstanding in the software industry! It is a framework! Repository, Entity Microservices Code only Java Complex

Slide 5

Slide 5 text

DDD! Handling and focus to the Business Domains Transfer Knowledge Tactics Strategy

Slide 6

Slide 6 text

Strategic DDD The biggest mistake when implementing DDD Domains and Subdomains Ubiquitous language Context Mapping Bounded Contexts

Slide 7

Slide 7 text

Domains Central area of a company’s operations Subdomain Type Role Business Differentiation Complexity of Business Logic Core Subdomain Unique to the company, defining its identity and competitive advantage High High Generic Subdomain Common across all companies, standard business activities Low High Supporting Subdomain Supports core business activities without providing direct competitive advantage Medium Varies

Slide 8

Slide 8 text

Domains The subdomains types

Slide 9

Slide 9 text

Ubiquitous Language The core's communication Define common terminology The common language between experts and the engineering team. The same word can vary from context

Slide 10

Slide 10 text

Bounded Contexts Subset of the ubiquitous language

Slide 11

Slide 11 text

Context Mapping The relationships between these contexts Shared Kernel Customer-Supplier Conformist Anticorruption Layer Published Language Separate Ways Open Host Service

Slide 12

Slide 12 text

Domain Storytelling A Collaborative, and Visual Way to Build DDD

Slide 13

Slide 13 text

Tactic DDD The second step Entity Service Repository Aggregates Value Object Factories Events

Slide 14

Slide 14 text

Strategic and Tactical Focus on tactics is the start of a huge mistake Get something done Working code isn't enough Tactical tornado Strategic Tactical Time Total progress

Slide 15

Slide 15 text

Architecture vs Design The boundaries to DDD

Slide 16

Slide 16 text

Architecture DDD Using Layers to abstraction Presentation Layer Application Layer Infrastructure Layer Domain Layer

Slide 17

Slide 17 text

The Architecture styles There is a world beyond microservices and Hexagon model

Slide 18

Slide 18 text

Clean Architecture How to Combine it with DDD?

Slide 19

Slide 19 text

Software Architecture There is no space, the business is the goal!

Slide 20

Slide 20 text

Show me the code Let’s show the code structure

Slide 21

Slide 21 text

Context Code Design Documentation Software Architecture Software Engineering Test The principle of the ultimate sophistication Engineer Persistence Leadership

Slide 22

Slide 22 text

Software Engineer & Architect Expert Otavio Santana Java Champion, Oracle ACE Book and blog writer Duke Choice Award Jakarta EE and MicroProfile JCP-EC-EG-EGL Apache and Eclipse Committer JCP Award

Slide 23

Slide 23 text

Thank you! Otávio Santana OS Expert Founder, Software Engineer & Architect [email protected] https://www.linkedin.com/in/otaviojava/ https://www.youtube.com/@otaviojava https://twitter.com/otaviojava