Pragmatyczna refaktoryzacja z użyciem technik Domain Driven Design i archetypów modeli

Tytuł: Pragmatyczna refaktoryzacja z użyciem technik Domain Driven Design i archetypów modeli
Kod: refactor-DDD-arch
Kategoria: Wzorce i Craftsmanship
Forma: 50% wykłady / 50% warsztaty
Czas trwania: 4 dni
Odbiorcy: architekci, developerzy
Zapisy: Indywidualne zamówienie i dopasowanie dla grupy.
Logistyka: W siedzibie klienta lub w innym dowolnym miejscu.

Przekształcenia “Extract Method”, “Replace If with Guardian” oraz “Extract Object” poprawiają czytelność kodu, ale nie ratują projektów, których bazowy model jest zły.

Jak w bezpieczny i pragmatyczny sposób dokonać refaktoryzacji, która przypomina wymianę kluczowej części systemu? Poniższy warsztat przedstawia szereg typowych problemów projektowych skategoryzowanych na bazie produkcyjnego, audytorskiego i konsultacyjnego doświadczenia z szeregu projektów z różnych dziedzin biznesowych.

Nie jest to kolejny warsztat, w którym krok po kroku przechodzimy po katalogu typowych “zapachów” kodu i sposobów ich eliminacji. Podczas zajęć analizujemy też architektoniczne problemy, których naprawa wykracza poza standardowe ramy refaktoryzacji, ale których bezpieczne wykonanie może owocować dostarczeniem wartości biznesowej bez 3-miesięcznego przestoju. Zdobywasz konkretną mapę nawigacyjną wraz z narzędziami pozwalającymi skutecznie identyfikować i eliminować wieloletnie problemy występujące w systemie. Wszystko to w sposób bezpieczny, poparty dobrymi praktykami inżynierskimi, Domain-Driven Design oraz możliwością odwrotu.

Podczas warsztatu poznasz także sposoby rozmowy z odbiorcami biznesowymi, którzy nie do końca są przekonani do podejścia refaktoryzacji. Pokażemy Ci konkretne metryki biznesowe, budujące wspólne zrozumienie pomiędzy zespołem deweloperskim, a interesariuszami biznesowymi.

Po warsztacie będziesz potrafić identyfikować i naprawiać problemy architektoniczne i implementacyjne wykorzystując podejście Domain-Driven Design, analizować historię repozytorium, metryki i stabilność kodu, także w kontekście podejścia Test-Driven Development, programowania obiektowego/funkcyjnego, modularyzacji i wielu innych.

Archetypy modeli biznesowych

Trzeciego dnia poznasz wachlarz gotowych modeli biznesowych, do których możesz dążyć/inspirować się podczas refaktoryzacji. Są to sprawdzone, generyczne modele, które upraszczają kod i otwierają go na rozbudowę. Poznasz również techniki, które pozwolą wzbogacać generyczne modele o specyfikę twojego projektu.

Program Szkolenia

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

  1. Typowe przypadki
    1. Co zrobić z duża i nieestetyczną klasą?
    2. Co zrobić z dużą i estetyczną klasą?
    3. Jak naprawić odwieczny problem - brak spójności danych?
    4. Moja klasa/moduł ma bardzo dużo zależności i bardzo dużo logiki biznesowej, jak to podzielić?
    5. Bazowy model mojego modułu jest niedopasowany do potrzeb biznesu, co zrobić?
    6. Jak naprawić niewydajne i bardzo złożone odczyty danych?
    7. W moim projekcie brak jasno wydzielonych granic, jak to naprawić?
  2. Sprawdzona Ścieżka Refaktoryzacji
    1. Odkrywanie i opisywanie problemu
      1. Drivery architektoniczne
    2. “Sprzedawanie” i marketing rozwiązań
      1. Odbiorca techniczny
        1. Egoless programming
      2. Odbiorca biznesowy
        1. Wektor nowej funkcji biznesowej
        2. Wektor nowej funkcji dla nowych klientów
        3. Wektor nowej funkcji dla jednego z nowych klientów
        4. Odwracanie zmian
    3. Lokalizacja prawdziwych problemów
      1. Zbieranie i interpretowanie metryk
      2. Wykrywanie punktów krytycznych
      3. Identyfikacja “zapachów”
      4. Kod stabilny vs kod zmieniany
      5. Analiza historii repozytorium
      6. Podejście Domain-Driven Design
    4. Planowanie zmian
      1. Efekt “Brzydkiego Kaczątka”
      2. Problem “You are never done”
    5. Wprowadzanie zmian
      1. Refaktoryzacja mechaniczna/taktyczna
      2. Refaktoryzacja architektoniczna/strategiczna
    6. Wdrażanie zmian
      1. Cykle i mikrocykle
    7. Obserwacja efektów
      1. Bezpieczny odwrót
  3. Refaktoring ciągły
    1. Wsparcie ze strony IDE
    2. Identyfikowanie szwów
      1. Wspólne zrozumienie i Edukacja
        1. Code Review
        2. ArchUnit i inne narzędzia
    3. Konwencje jako driver architektoniczny
    4. Refaktoring bez znajomości problemu biznesowego
      1. Jak to robić bezpiecznie?
  4. Refaktoring przygotowujący
    1. Nowe funkcje biznesowe
    2. Naprawa obecnych funkcji biznesowych
    3. Naprawa atrybutów jakościowych
    4. Budowanie zaufania
    5. Metryki biznesowe jako element marketingu refaktoryzacji
  5. Wdrażanie zmian
    1. Testy
      1. Odkrywanie szwów
      2. Technika ułatwiania testów poprzez obniżanie szwów
      3. Testy charakterystyki systemu
      4. Testy i szwy jako odkrywanie granic modułów i uwalnianie potencjałów biznesowych
    2. Problem Big Bang Release
    3. Technika Step by Step
    4. Parallel Models jako jedyny sposób bezpiecznej strategicznej refaktoryzacji
      1. Bezpieczny odwrót
      2. Logi
      3. Zaawansowane metryki
      4. Samoleczący się system
      5. Możliwość codziennego budowanie zaufania do interesariusza projektowego
  6. Wykorzystanie Domain-Driven Design
    1. Hermetyzacja tego CO system powinien robić w serwisy aplikacyjne
    2. Hermetyzacja tego JAK i DLACZEGO system się tak zachowuje w Building Blocks DDD
    3. Praca nad słownictwem domenowym
    4. Zarządzanie wartością jest łatwiejsze niż encją
    5. Odkrywanie Value Objects, Agregatów oraz Polityk
    6. Polityki - hermetyzacja zmienności poza stabilnym interfejsem
    7. Rozwijalność i czytelność systemu poprzez trójpodział logiki
      1. Operations
      2. Policy
      3. Decision Support
    8. Podejście funkcyjne
    9. Hermetyzacja złożoności w jednym miejscu
    10. Podejście "od domeny" zamiast podejścia "od procesu"
    11. Separacja modelu pod kątem podatności na zmiany i niestabilności
  7. Wprowadzanie zmian
    1. Poziomy modelu
    2. Zmiana API
      1. API publiczne vs API prywatne
    3. Coupling, Coupling Logiczny i Data Coupling
  8. Archetypy modeli biznesowych
    1. Odkrywanie archetypów
      1. Event Storming - process level
      2. Odkrywanie generycznych pod-domen
        1. Kluczowe pytania
        2. Alternatywne wejścia i wyjścia z procesu
        3. Pivotal events
        4. Being, Behaving, Becoming - śledzenie zmian typów obiektów biznesowych
      3. Nadbudowywnanie specyfiki biznesu nad archetypami
        1. 4 warstwy modelu
        2. Serwisy koordynujące proces
    2. Archetypy
      1. Party, Party Role i Party Relationship - model organizacji
      2. Definicja produktu, instancja produktu, kanał dystrybucji - model produktów, usług i umów
      3. Obieg dokumentu vs redagowanie dokumentu
      4. Model dostępność - uniwersalny otwieracz do problemów klasy concurrency
      5. Inventory i PIM
      6. Import danych - poczekalnia
      7. Dynamiczne drzewa reguł
      8. Scoring
      9. Reguły zależne od sekwencji wcześniejszych zdarzeń - technicznie event sourcing
      10. Reguły zmienne w czasie


Pobierz program w formacie PDF

Trenerzy

Poznaj ekspertów, którzy mogą poprowadzić Twoje szkolenie.

Materiały związane ze szkoleniem

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

Zamów szkolenie

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ń


Twoje dane osobowe przetwarzamy, aby udzielić odpowiedzi na Twoje pytanie. Administratorem Twoich danych osobowych jest Bottega It Minds Sławomir Sobótka. Przysługuje Ci prawo wniesienia sprzeciwu wobec przetwarzania, prawo dostępu do danych, prawo żądania ich sprostowania, usunięcia lub ograniczenia ich przetwarzania. Szczegółowe informacje dotyczące przetwarzania Twoich danych osobowych znajdują się TUTAJ.