Pragmatyczna refaktoryzacja z użyciem technik Domain Driven Design

Tytuł: Pragmatyczna refaktoryzacja z użyciem technik Domain Driven Design
Kod: Craft-refactor
Kategoria: Wzorce i Craftsmanship
Forma: 50% wykłady / 50% warsztaty
Czas trwania: 3 dni
Odbiorcy: 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ę silnika lecącego samolotu? 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. Uczestnik zdobywa konkretną mapę nawigacyjną wraz z narzędziami pozwalającymi mu 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.

Na warsztacie uczestnik poznaje sposoby rozmowy z odbiorcami biznesowymi, którzy nie do końca są przekonani do podejścia refaktoryzacji. Zajęcia obfitują w konkretne metryki biznesowe, budujące wspólne zrozumienie pomiędzy zespołem deweloperskim, a interesariuszami biznesowymi.

Po warsztacie, uczestnik m. in. potrafi identyfikować i naprawiać problemy architektoniczne i implementacyjne wykorzystując podejście Domain-Driven Design, analizę historii repozytorium, analizę metryk i stabilności kodu, podejście Test-Driven Development, podejście obiektowe/funkcyjne, modularyzację i wiele innych.

Warsztat może się odbyć wersji od trzydniowej do pięciodniowej. Czwarty lub/i piąty dzień poświęcamy na analizę domenową nowego projektu, która służy jako klamra wiedzy stosowanej przez trzy pierwsze dni w systemie Legacy. Alternatywnie warsztat może odbyć się jako konsultacja na projekcie klienta.

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. Modelowanie Domeny (tylko w wersji 4 dniowej)
    1. Odkrywanie złożoności za pomocą Event Stormingu
      1. “As Is” vs “To Be”
      2. Analiza problematycznych miejsc
      3. Identyfikacja problematycznych miejsc w kodzie
      4. Odkrywanie słownictwa domenowego
      5. Destylacja archetypowych problemów
      6. Modularyzacja do Bounded Contextów
        1. Mapowanie do obecnego systemu
      7. Destylacja agregatów
        1. Mapowanie do obecnego systemu


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.