SlideShare a Scribd company logo
1 of 48
Download to read offline
Svaťa
Šimara
Přehled
Domain-Driven Design
DDD
• Přístup k vývoji software
DDD
• Přístup k vývoji software
• Zaměření na problematiku –
doménu
DDD
• Přístup k vývoji software
• Zaměření na problematiku –
doménu
• Soubor myšlenek, ne návod
DDD
• Přístup k vývoji software
• Zaměření na problematiku –
doménu
• Soubor myšlenek, ne návod
• Není spojen s frameworkem
DDD
• Přístup k vývoji software
• Zaměření na problematiku –
doménu
• Soubor myšlenek, ne návod
• Není spojen s frameworkem
• Není spojen s programovacím
jazykem ani paradigmatem
Ulehčuje život
• Pomáhá řešit složité problémy
Ulehčuje život
• Pomáhá řešit složité problémy
• Udržuje soustředění na důležité
Ulehčuje život
• Pomáhá řešit složité problémy
• Udržuje soustředění na důležité
• Vede k reálnému modelu
Ulehčuje život
• Pomáhá řešit složité problémy
• Udržuje soustředění na důležité
• Vede k reálnému modelu
• Zjednodušuje testování
Ulehčuje život
• Pomáhá řešit složité problémy
• Udržuje soustředění na důležité
• Vede k reálnému modelu
• Zjednodušuje testování
• Zjednodušuje integraci systémů
Principy
Principy
Doména
Doména
• Oblast
Doména
• Oblast
• Vlastní terminologie
Doména
• Oblast
• Vlastní terminologie
• Ohraničení
Doména
• Oblast
• Vlastní terminologie
• Ohraničení
• Příklady
– Účetní
– Hokejová
Doménový
jazyk
Doménový
jazyk
Doménový
jazyk
• Terminologie
Doménový
jazyk
• Terminologie
• Přirozený jazyk
Doménový
jazyk
• Terminologie
• Přirozený jazyk
• Příklady
– Doklad, faktura
– Střela, asistence
Všudypřítomný
jazyk
• Ubiquitous language
• Jazyk všech zúčastněných
• Formální verze doménového jazyka
• Příklady
– Výdejka, dodejka
– Zblokovaná střela, střela na
branku
Všudypřítomný
jazyk
Všudypřítomný
jazyk
• Ubiquitous language
Všudypřítomný
jazyk
• Ubiquitous language
• Jazyk všech zúčastněných
– Programátorů, uživatelů,
testerů, projekťáků, ...
Všudypřítomný
jazyk
• Ubiquitous language
• Jazyk všech zúčastněných
– Programátorů, uživatelů,
testerů, projekťáků, …
• Jazyk vyskytující se všude
– Konverzace, kód,
dokumentace
Ohraničený
kontext
• Bounded context
Ohraničený
kontext
• Bounded context
• Ohraničení, kde má
všudypřítomný jazyk smysl
Ohraničený
kontext
• Bounded context
• Ohraničení, kde má
všudypřítomný jazyk smysl
• Příklady
– Účetní oddělení
– Eshop, externí IS
Ohraničený
kontext
Ohraničený
kontext
Model
• Mentální reprezentace
Model
• Mentální reprezentace
• Vyjádřený jazykem
Model
• Mentální reprezentace
• Vyjádřený jazykem
• Platný v kontextu
Model
• Mentální reprezentace
• Vyjádřený jazykem
• Platný v kontextu
• Lze reprezentovat slovy,
diagramy, kódem
Pojďme si
zamodelovat
•Cestutící: Pane námořníku, jak
daleko je nejbližší země?
•Námořník: 3 míle.
•Cestující: Kterým směrem?
•Námořník: Dolů
Kód
• PHP
Kód
• PHP
• OOP
Kód
• PHP
• OOP
• Entity obsahující logiku
Kód
• PHP
• OOP
• Entity obsahující logiku
• Žádný anemický model
Kód
• PHP
• OOP
• Entity obsahující logiku
• Žádný anemický model
• Snadné testování
Příklad
Testování
Vrstvy
• Oddělení doménové vrstvy
Vrstvy
• Oddělení doménové vrstvy
• Extrakce klíčových problémů
Vrstvy
• Oddělení doménové vrstvy
• Extrakce klíčových problémů
• Doménová vrstva nezávislá na
frameworku, databázi, ...
Vrstvy
Jak bude
probíhat kurz
• Teoretické materiály
• Přednášky – zopakování teorie,
příklady
• Praktické ukázky workshopovým
stylem
– Já v roli doménového experta
– Vy se mě budete dotazovat
– Společně budete sestavovat use-
case, modelovat, programovat, ...
Domain-Driven
Design Svaťa Šimara
svatasimara.cz
simara-svatopluk
@svatasimara

More Related Content

More from Svatopluk Šimara

Focus on the essece with Domain-Driven Design
Focus on the essece with Domain-Driven DesignFocus on the essece with Domain-Driven Design
Focus on the essece with Domain-Driven DesignSvatopluk Šimara
 
DDD kurz - 5. Persistence + Doctrine
DDD kurz - 5. Persistence + DoctrineDDD kurz - 5. Persistence + Doctrine
DDD kurz - 5. Persistence + DoctrineSvatopluk Šimara
 
Monorepo: How We Started to Save Our Developers Time
Monorepo: How We Started to Save Our Developers TimeMonorepo: How We Started to Save Our Developers Time
Monorepo: How We Started to Save Our Developers TimeSvatopluk Šimara
 
Domain-Driven Design Sraz 6.6.2018
Domain-Driven Design Sraz 6.6.2018Domain-Driven Design Sraz 6.6.2018
Domain-Driven Design Sraz 6.6.2018Svatopluk Šimara
 

More from Svatopluk Šimara (8)

Focus on the essece with Domain-Driven Design
Focus on the essece with Domain-Driven DesignFocus on the essece with Domain-Driven Design
Focus on the essece with Domain-Driven Design
 
DDD + Doctrine
DDD + DoctrineDDD + Doctrine
DDD + Doctrine
 
Read model & CQRS
Read model & CQRSRead model & CQRS
Read model & CQRS
 
DDD kurz - 5. Persistence + Doctrine
DDD kurz - 5. Persistence + DoctrineDDD kurz - 5. Persistence + Doctrine
DDD kurz - 5. Persistence + Doctrine
 
DDD kurz - 4. Implementace
DDD kurz - 4. ImplementaceDDD kurz - 4. Implementace
DDD kurz - 4. Implementace
 
DDD kurz - 3. model
DDD kurz - 3. modelDDD kurz - 3. model
DDD kurz - 3. model
 
Monorepo: How We Started to Save Our Developers Time
Monorepo: How We Started to Save Our Developers TimeMonorepo: How We Started to Save Our Developers Time
Monorepo: How We Started to Save Our Developers Time
 
Domain-Driven Design Sraz 6.6.2018
Domain-Driven Design Sraz 6.6.2018Domain-Driven Design Sraz 6.6.2018
Domain-Driven Design Sraz 6.6.2018
 

DDD kurz - 1. přehled