Domain-Driven Design

Poznaj kompleksowo DDD. Odkrywaj domeny, przygotuj elastyczny model dziedziny i twórz oprogramowanie systemu zgodnie z najlepszymi praktykami.

Czas: 3-4 dni
Uczestnicy: do 16 osób (1-2 trenerów)

O szkoleniu

Dzięki tym warsztatom zrozumiesz, że Domain-Driven Desing to nie tylko tworzenie klas zgodnych z OOP, stosowanie wzorców projektowych i pisanie kodu dla niego samego. Poznasz cele i główne zalety podążania za Domian-Driven Design, a także cenne wskazówki, na które aspekty modelowania należy położyć nacisk.

Przejdziesz cały proces, który skutecznie pozwoli Ci poznać problem, który następnie precyzyjnie zaadresujesz konkretnym rozwiązaniem.

Wspólnie z ekspertami domenowymi wykształcisz język wszędobylski, który stanie się Twoim orężem do skutecznej komunikacji z mitycznym “biznesem”. Korzystając z piktograficznych technik eksploracji domeny (jak np. Event Storming, Example Mapping, Domain Storytelling) wspólnie z zespołem odkryjesz meandry procesów biznesowych i doświadczysz jak istotną rolę odgrywa analiza w całym procesie wytwarzania oprogramowania. Nie sztuką jest bowiem “narąbać” tysiące linii kodu, które przy wykorzystaniu masy wzorców projektowych pozornie poprawiają “elastyczność” systemu. Elastyczność bowiem nie wynika jedynie z umiejętności programowania, ale także z przewidywania kierunku rozwoju organizacji i przede wszystkim… z dogłębnego zrozumienia istoty problemu, który nasz system ma adresować. Po przejściu przez proces eksploracji domeny zrozumiesz, że najlepszy kod to taki, który nigdy nie powstał.

Za pomocą szeregu heurystyk wydzielisz subdomeny biznesowe systemu, które po odpowiednim sklasyfikowaniu, dostarczą Ci niezbędnej wiedzy do skutecznego zaprojektowania Bounded Contextów. Nauczysz się technik ich skutecznej integracji oraz stworzeniu odpowiednich wzorców współpracy pomiędzy zespołami projektowymi przy wykorzystaniu map kontekstów. To dzięki temu etapowi Twój system nie będzie cierpieć w przyszłości z powodu słabo zdefiniowanych granic, co może mieć negatywny wpływ na jakość oraz elastyczność rozwiązania.

Zwieńczeniem naszej pracy będzie przejście na poziom taktyczny — poznasz wszystkie wzorce, ich przeznaczenie oraz praktyczne przykłady użyte w kodzie. Zobaczysz, jak model domeny jest budowany od podstaw poza kodem i jak zostaje następnie przeniesiony się do faktycznej implementacji.

To szkolenie nie jest tylko kolejnym przewodnikiem po implementacji fabryk, polityk i agregatów. Jest to kompleksowy program, którego celem jest przede wszystkim nauczenie myślenia o kodzie w sposób domenowy i wyposażenie w szereg narzędzi (nieosadzonych w kodzie, ale w głowie), które skutecznie wydobywają esencję z labiryntu często niejasnych i „sztucznych” wymagań biznesowych.

Czego nauczy się uczestnik?

  • Pryncypiów oraz celów wykorzystania Domain-Driven Design
  • Fundamentów i technik pozyskiwania wiedzy domenowej przy wykorzystaniu technik jak np. Event Storming czy Domain Storytelling
  • Sposobów odkrywania, destylacji i klasyfikacji subdomen biznesowych
  • Projektowania Bounded Contextów w oparciu o szereg heurystyk
  • Integracji Bounded Contextów w oparciu o Domain Message Flow Modeling
  • Tworzenia modeli współpracy pomiędzy zespołami projektowymi przy wykorzystaniu map kontekstów
  • Tworzenia efektywnego modelu diedziny
  • Taktycznego DDD (agregaty, encje, obiekty wartościowe etc.)
  • Zastosowania DDD w architekturze systemowej

Program szkolenia

Dzień 1/2

  • Wprowadzenie do domeny, którą będziemy eksplorować
  • Zagadnienia fundamentalne DDD
  • Język wszędobylski
  • Techniki kooperacji z ekspertami domenowymi
  • Grupowe warsztaty Discovery

Dzień 3

  • Destylacja i odkrywanie subdomen biznesowych
  • Klasyfikacja subdomen biznesowych
  • Projektowanie bounded contextów
  • Integracja pomiędzy bounded contextami
  • Topologie zespołów projektowych

Dzień 4

  • Czym jest model domeny?
  • Techniki tworzenia skutecznego modelu
  • Wzorce taktyczne DDD
  • Implementacja modelu dziedziny w kodzie

Grupa Docelowa

Każdy programista skorzysta z tych warsztatów! Zaczynając od fundamentalnych zagadnień, przechodzimy przez wszystkie aspekty zarówno strategicznego, jak i taktycznego DDD. Przykładowy kod będzie wymagać podstawowej znajomości C#/ASP.NET Core.

Trenerzy

Dariusz Pawlukiewicz

Współzałożyciel DevMentors.io, konsultant, inżynier oprogramowania, architekt w EcoVadis. Entuzjasta Domain-Driven Design oraz systemów rozproszonych. Ex-Microsof MVP oraz prelegent na konferencjach branżowych.

Michał Wilczyński

Współtwórca DevMentors.io, konsultant, inżynier oprogramowania, architekt w EcoVadis. Entuzjasta Domain-Driven Design oraz systemów rozproszonych.