Domain Driven Design - projektowanie modeli złożonych domen (część 1)

Warsztat ekspercki to coś więcej niż szkolenie. To praca w kontekście konkretnych problemów.

Kod: DDD-DDD
Kategoria: Domain Driven Design
Forma: 60% wykłady / 40% warsztaty
Czas trwania: 3 dni
Grupa docelowa: analitycy
developerzy
architekci
Logistyka: W siedzibie klienta lub w innym dowolnym miejscu.
Data i dokładny zakres do ustalenia podczas analizy przed-szkoleniowej.

Autorski program oparty na 7 latach doświadczenia w stosowaniu i nauczaniu DDD.

Zarys DDD

Domain Driven Design jest obecnie jedyną metodyką, która w sposób kompleksowy wspiera od strony technicznej zwinne podejście do wytwarzania oprogramowania.

Kompleksowe podejście DDD obejmuje: modelowanie złożonych domen we współpracy z Ekspertem Domenowym, zalecane architektury i projektowanie z wykorzystaniem sprawdzonych Building Blocks aż po techniki tworzenia testowalnego kodu, który z założenia jest otwarty na iteracyjny proces rozbudowy i kruszenia wiedzy (Knowledge Crunching).

Korzyści płynące z wykorzystania DDD

  • Techniki i wzorce strategiczne, których celem jest rozwiązanie typowych problemów organizacyjnych
    • efektywne techniki prowadzenia sesji modelowania z uczestnictwem Ekspertów Domenowych
    • skupienie wysiłku na Core Domain: inwestycja najlepszych ludzi i technik DDD jedynie w krytyczne moduły
    • techniki separacji osobnych domen (Bounded Context) wyznaczanych przez granice wiedzy Ekspertów Domenowych, redukcja ryzyka związanego z tworzeniem monolitów
    • techniki integracji modułów otwartych na zmiany i skalowanie wydajnościowe
    • strategie współpracy zespołów (w tym w modelu outsourcing) pracujących nad osobnymi modułami
  • Techniki i wzorce taktyczne, których celem jest rozwiązanie typowych problemów technicznych i jakościowych
    • język wzorców dla tworzenia modelu - Building Blocks
    • architektury odpowiednie do tworzenia rozszerzalnych systemów
    • podejścia wspierające i ułatwiające testowanie automatyczne
  • Płynna integracja ze Scrum dzięki podejściu Modeling Whirlpool

Zakres

Techniki modelowania problemów biznesowych
  • techniki z poziomu Wzorców Taktycznych: Building Blocks DDD wraz z najlepszymi praktykami oraz elementami rozszerzonymi.
  • techniki z poziomu Wzorców Strategicznych: Domain Distillation, Bounded Context,
  • poznasz praktyczne podejścia i sposoby prowadzenia sesji modelowania.

Implementacja DDD

Techniki implementacji DDD (architektura aplikacyjna i systemowa, wykrzyknienie IoC i ORM) są omawiane na szkoleniu DDD-implementacja, które powinno nastąpić w drugiej kolejności, po szkoleniu z zakresu modelowania.

Forma

Przyrostowe stosowanie wiedzy w praktyce

Szkolenie prowadzone jest w formie, która łączy następujące po sobie na przemian wykłady, warsztaty i dyskusje.

Podczas wykładów trener prezentuje kolejne rozdziały wiedzy merytorycznej, uzupełniając je o komentarze na podstawie własnych doświadczeń.

Podczas warsztatów tworzymy dwa moduły systemu klasy ERP. Kolejne zadania polegają na przyrostowym dodawaniu nowych funkcjonalności w sposób ilustrujący zagadnienia teoretyczne poznane podczas poprzedzającego je wykładu.

Podczas dyskusji uczestnicy mają dostęp do wiedzy eksperckiej trenera oraz mają możliwość zweryfikowania swoich rozwiązań z wypracowanymi przez innych uczestników szkolenia.

Realna sesja modelowania Modelling Whirlpool

W pierwszej fazie warsztatów uczestnicy rozwiązują postawione przed nimi problemy pracując nad modelem w grupach - faza ta ma na celu nabranie biegłości w posługiwaniu się technikami DDD.

Po zapoznaniu się z technikami DDD przychodzi czasu na przeprowadzenie realnej sesji Modelling Whirlpool gdzie członkowie każdej grupy grają role: Ekspert Domenowy, Modelarz, Koordynator - faza to ma ba celu ugruntowanie się wiedzy gotowej do stosowania w codziennej praktyce.

Projekt referencyjny

Sprawdź naszą implementację przykładowego projektu DDD+CqRS: Sample Leaven.

Materiały wstępne

Przed szkoleniem możesz zapoznać się z naszymi artykułami i prezentacjami w sekcji "materiały"

Wyróżniki warsztatu

Podczas zajęć możesz oczekiwać szczególnych akcentów położonych na poniższe aspekty:

  • Uświadomisz sobie kompetencje miękkie jakie powinien posiadać Modelarz
  • Techniki modelowania: lingwistyczne i wizualne
  • Prezentacja alternatywnych podejść wraz z omówieniem konsekwencji

Program Warsztatu eksperckiego

Program jest ramą w jakiej możemy się poruszać merytorycznie - program dla konkretnego szkolenia dedykowanego ustalamy z grupą na podstawie analizy przed-szkoleniowej.

  1. Wstęp do Domain Driven Design - unifikacja analizy i projektowania
    1. Stosowalność DDD
      1. Klasa złożoności systemu
      2. Głębokość systemu - co system robi "pod maską"
      3. Systemy sterujące światem vs systemy zbierające dane
      4. Kiedy nie stosować DDD
      5. Podejście DDD Lite - zwiększenie jakości technicznej
    2. Role w procesie - odpowiedzialność i cechy osobowości i umiejętności
      1. Ekspert domenowy - źródło wiedzy, walidator modelu
      2. Modelarz (architekt domeny) - twórca modelu
      3. Facilitator - koordynator procesu we wstępnej fazie
    3. Wprowadzenie Ubiquitous Language
      1. Wspólna płaszczyzna porozumienia pomiędzy Ekspertami Domenowymi i zespołem developerskim
  2. Proces i techniki modelowania
    1. Podejście "od procesu" vs podejście "od domeny"
    2. Zwinny Proces Modelowania "Model Exploration Whirlpool"
      1. Fazy
      2. Artefakty
      3. Walidacja modelu
    3. Techniki lingwistyczne
      1. User Story vs Domain Story
      2. Techniki pełnych zdań zamiast zbierania rzeczowników
      3. Eksploracja domeny przy pomocy zdań podmiot.orzeczenie(dopełnienie, przydawka)
      4. Gibberish Game - usuwanie dwuznaczności i odkrywanie nowych koncepcji domenowych
      5. Słowo-Znaczenie(Kontekst)-Reguły
        1. Odwrócenie kolejności w celu odkrywania ukrytych koncepcji domenowych
    4. Techniki wizualizacji
      1. Grupowanie operacji wokół niezmienników
      2. Metafory wizualne realnych Agregatów
      3. Poziomy modelu
      4. Separacja modelu pod kątem podatności na zmiany i niestabilności
    5. Przełożenie Use Case/User Story na warstwę aplikacji
    6. Przełożenie modelu biznesowego na building blocks warstwy domenowej
  3. Wzorce Taktyczne - Building Blocks
    1. Koncepcja języka Wzorców DDD
      1. Potrzeba większej ilości building blocks niż serwis i encja (procedura i struktura danych)
    2. Encje
      1. Obiekty do który możemy odnieść się w formie "ten obiekt"
    3. Agregaty
      1. Hermetyzacja i otwarcie na rozbudowę
      2. Strategie określania granicy agregatu
      3. Modelowanie niezmienników
      4. Techniki lingwistyczne
        1. Pełne zdania: podmiot.orzeczenie(dopełnienie, przydawka)
        2. Odwrócenie kolejności: Słowo-Znaczenie(Kontekst)-Reguły
    4. Value objects
      1. Obiekty do który możemy odnieść się w formie "taki obiekt"
      2. Zwiększenie siły wyrazu
      3. Styl funkcyjny
    5. Serwisy Domenowe
      1. Model procedur biznesowych
    6. Repozytoria
      1. Abstrakcja magazynu danych
      2. Orientacja na model domenowy zamiast na model danych
    7. Fabryki
      1. Walidacja
      2. Logika biznesowa podczas składania obiektów
      3. Wsparcie dla testability
    8. Polityki (strategie)
      1. Modelowanie w stylu funkcyjnym
      2. Open Close Principle (SOLID) w praktyce
      3. Podejście Supple Design
      4. Dekorowanie
      5. Umiejscowienie w 4 poziomach modelu
    9. Zdarzenia biznesowe
      1. Decoupling Bounded Context
      2. Anticorruption Layer
    10. Specyfikacje
      1. Modelowanie złożonych warunków biznesowych
    11. Dodatkowe wzorce - rozszerzenia Building Blocks
      1. Sagi - modelowanie złożonych procesów biznesowych
      2. Dekoratory Polityk - Supple Design
      3. Agregat jako maszyna stanów
      4. Łańcuch odpowiedzialności
      5. Budowniczy
    12. Praktyczne przykłady modelowania biznesowego z wykorzystaniem Building Blocks
  4. Wzorce Strategiczne
    1. Domain distillation - techniki wyłaniania
      1. Core Domain
      2. Supporting Domain
      3. Generic Domain
    2. Bounded Context - separacja i integracja
    3. Shared Kernel - najlepsze praktyki
    4. Conformist - kiedy warto stosować
    5. Cztery poziomy modelu dużej skali
      1. Capability
      2. Operations
      3. Policy
      4. Decision Support
  5. Architektura aplikacji - uwspólnienie modelu analitycznego i projektowego
    1. Zwiększanie poziomu czytelności kodu poprzez Domain Specific Language
    2. Podział logiki na aplikacyjną i domenową
    3. Podejście warstwowe - rozmieszczenie building blocks na warstwach
      1. Warstwa interfejsów (prezentacji)
      2. Warstwa logiki - rozwarstwienie na dwie warstwy logiki
        1. Logika aplikacyjna (API)
        2. Model tego CO system powinien robić (User Case lub User Story)
        3. Zapis Domain Story w formie czytelnej prozy
        4. Logika domenowa (Building Blocks DDD)
        5. Model tego JAK i DLACZEGO system powinien się tak zachowywać
      3. Warstwa infrastruktury
        1. Dostęp do danych
        2. Infrastruktura techniczna
    4. Przełożenie Use Case/User Story na warstwę aplikacji
    5. Przełożenie modelu biznesowego na building blocks warstwy domenowej
    6. Modelowanie Bounded Context
      1. Decoupling
      2. Integracja
  6. Architektura systemu
    1. Strategiczne projektowanie
      1. Określenie Core Domain
      2. Integracja z domenami Generic i Supporting
    2. Zarys architektury integracji modułów
      1. Event Driven Architecture
      2. SOA


Pobierz program w formacie PDF

Trenerzy

Poznaj ekspertów, którzy mogą poprowadzić Twój Warsztat.

Materiały związane z warsztatem

Idea renesansowej pracowni - Bottegi zakłada nieustanną pracę jej członków i dzielenie się jej wynikami.

Wymagania przed warsztatem

Podczas szkolenia będą potrzebne:
  • flipchart
  • projektor
  • pomieszczenie umożliwiające pracę poza stołami (np przy ścianach)

Zapytaj o warsztat

Imię i nazwisko:
Firma:
E-mail/Nr tel:
Temat:
Wiadomość:

Jeżeli preferujesz osobisty kontakt to zawsze możesz zadzwonić.

Iwona Sobótka

Koordynatorka szkoleń