-
nowość
Domain-Driven Design w transformacji systemów. Skuteczna modernizacja legacy bez zbędnego ryzyka - ebook
Domain-Driven Design w transformacji systemów. Skuteczna modernizacja legacy bez zbędnego ryzyka - ebook
Przekształć legacy w przewagę konkurencyjną dzięki Domain-Driven Design.
Modernizacja systemów zastanych to jedno z największych wyzwań współczesnej inżynierii oprogramowania. W erze cyfrowej transformacji firmy borykają się z przestarzałymi monolitami, które hamują innowacje i generują coraz wyższe koszty utrzymania. Domain-Driven Design (DDD), podejście od lat uznawane za skuteczne w tworzeniu nowego oprogramowania, przechodzi drugą młodość jako metodyka transformacji systemów legacy. Książka wypełnia istotną lukę na rynku oferuje kompleksowe, praktyczne podejście do modernizacji opartej na zasadach DDD, łączące aspekty techniczne, biznesowe i organizacyjne.
Autorzy prezentują metodę Domain-Driven Transformation (DDT) na poziomie strategicznym i organizacyjnym. Prowadzą czytelnika przez cztery kluczowe kroki: ponowne odkrywanie dziedziny biznesowej, modelowanie architektury docelowej, dopasowanie architektury rzeczywistej do docelowej, a także określanie priorytetów i realizację działań transformacyjnych. Szczególną wartość stanowi indeks dojrzałości modularności (MMI), który pozwala ocenić stan systemu i wybrać odpowiednią ścieżkę transformacji. Książka pokazuje, jak unikać pułapek wielkiego przepisania, stosować refaktoryzacje dziedzinowe i reorganizować zespoły według metodologii team topologies.
Najważniejsze zagadnienia:
- Ocena kondycji systemu i wybór właściwej ścieżki transformacji
- Techniki ponownego odkrywania dziedziny
- Katalog refaktoryzacji dziedzinowych
- Reorganizacja zespołów z horyzontalnej (warstwowej) na wertykalną (międzyfunkcyjną)
- Praktyczne studia przypadków z branży kinowej, bankowej, leasingowej i portowej
- Zastosowanie AI do wsparcia procesu transformacji i refaktoryzacji
Jeśli rozpoczynasz projekt transformacji, polecam przeczytać tę książkę!
Michael Feathers, autor Working Effectively with Legacy Code
To najlepsza książka o DDD dostępna na rynku
Sergio Morazan, OBI Group Holding
Wypełnia lukę w literaturze poświęconej projektowaniu dziedzinowemu, koncentrując się na praktycznym zastosowaniu zasad DDD w transformacji systemów zastanych
Gien Verschatse, współautor Collaborative Software Design
Spis treści
Słowo wstępne
Przedmowa
1. Domain-Driven Transformation w pigułce
- Przykład: system zastany w porcie kontenerowym
- Ponowne odkrywanie dziedziny
- Określanie docelowej architektury
- Porównanie architektury rzeczywistej z docelową
- Określanie priorytetów i realizowanie transformacji
- Co się właśnie stało?
- Metoda
- Ścieżki przez DDT
- Podsumowanie
Część I. Podstawy
2. Jak zapanować nad złożonością
- Źródła złożoności - przestrzeń problemu i przestrzeń rozwiązań
- Terminal kontenerowy - złożoność w przestrzeni problemu i rozwiązania
- Rodzaje złożoności - zasadnicza a przypadkowa
- Źródła złożoności przypadkowej
- Obszary decyzyjne w architekturze oprogramowania
- Radzenie sobie ze złożonością zasadniczą i przypadkową
- Złożoność w systemach zastanych
- Metody podstawowe
- Co dalej?
3. Domain-Driven Design
- Koncepcje DDD w walce ze złożonością
- DDD a dziedzina biznesowa
- Język wszechobecny
- Projektowanie strategiczne po stronie biznesowej
- Kategoryzowanie poddziedzin - co jest dziedziną główną?
- DDD a rozwiązanie programowe
- Projekt strategiczny w oprogramowaniu
- Mapowanie kontekstów
- Kontekst bańkowy
- Model dziedzinowy
- Architektura warstwowa w DDD
- Projektowanie taktyczne
- Zdarzenia dziedzinowe
- Podsumowanie
4. Modelowanie kooperacyjne
- Narzędzia do modelowania i monopolizacja modelu
- Metody modelowania współpracy w transformacji
- Łączenie właściwych osób
- Podstawowe koncepcje modelowania kooperacyjnego
- Modelowanie kooperacyjne i DDD
- Domain Storytelling - opowiadanie historii dziedzinowych
- Jeden obraz - jedna historia
- Rysowanie granic
- Czynniki zakresu w historiach dziedzinowych
- Znajdowanie modelu dziedzinowego
- Perspektywy
- EventStorming
- Eksploracja w formacie Big Picture
- Eksploracja chaotyczna
- Egzekwowanie osi czasu
- Ludzie i systemy
- Przejście krok po kroku
- Działania dodające wartość
- Rysowanie granic
- Kodowanie kolorami
- Więcej szczegółów - Software Design EventStorming
- Znajdowanie modelu dziedzinowego
- Inne formaty i perspektywy
- Scenario Casting
- Jak działa Scenario Casting?
- Podstawowa idea
- Przebieg warsztatu - od eksploracji do wdrożenia
- Studium przypadku - Green Urban Supplier
- Krok 1. Burza mózgów
- Krok 2. Skupienie
- Krok 3. Składanie
- Co dalej w podejściu scenariuszowym?
- Druga runda Scenario Castingu
- Perspektywy
- Którą metodę wybrać?
- Zdalne modelowanie kooperacyjne
- Modelowanie kooperacyjne a AI
- Inne metody modelowania kooperacyjnego
- Podsumowanie
5. Koncepcje architektury oprogramowania
- Dokumentowanie architektury z wykorzystaniem modelu C4
- Poziom 1. Kontekst
- Poziom 2. Kontenery
- Poziom 3. Komponenty
- Poziom 4. Kod
- Modularność
- Spójność i sprzężenie
- Spójność i sprzężenie w DDD
- Spójność i sprzężenie w dziedzinie
- Wielka bryła błota
- Na poziomie klasy
- Na poziomie architektury
- Skąd bierze się wielka bryła błota?
- Sprzężenie a wielokrotne używanie kodu
- Style architektoniczne systemów zastanych
- Monolit
- Mikrousługi
- Od monolitu do mikrousług
- Stara dobra architektura warstwowa
- Architektury wewnętrzno-zewnętrzne: heksagonalna (czyli porty i adaptery), cebulowa, czysta i inne
- Połączenie różnych stylów - architektura jawna
- Architektury wewnętrzno-zewnętrzne a taktyczne DDD
- Hamburger architektury oprogramowania
- Architektury zorientowane na usługi
- Systemy samodzielne
- Od krajobrazów IT do SOA i z powrotem
- Indeks dojrzałości modularności - na jakim etapie jesteś?
- Modularność w MMI
- Hierarchiczność w MMI
- Spójność wzorców w MMI
- Obliczanie MMI
- Podsumowanie
6. Podejścia do transformacji
- Wymiana - wielki wybuch
- Wymiana - krok po kroku
- Przekształcanie
- Podsumowanie
Część II. Transformacja techniczna, taktyczna i zespołowo-organizacyjna
7. Techniczna stabilizacja oprogramowania zastanego
- Aktualizacja zintegrowanego środowiska programistycznego
- Automatyzacja budowania i wdrażania
- Aktualizowanie zależności oprogramowania
- Aktualizacja bibliotek i platform
- Aktualizacja języka programowania
- Eliminowanie ostrzeżeń kompilatora i środowiska IDE
- Zwiększanie pokrycia testami przy naprawianiu błędów
- Zasada skauta
- Różne rodzaje testów
- Porządkowanie kodu na bieżąco
- Refaktoryzacja
- Eliminowanie zależności
- Poprawa wewnętrznej struktury kodu z użyciem miar
- Zwiększanie odporności na błędy
- Budowanie odporności na wartości null
- Poprawa użycia wyjątków
- Wprowadzenie do projektowania kontraktowego
- Podsumowanie
- Na jakim jesteś etapie? - łatwa wersja
8. Wzmacnianie kodu źródłowego wiedzą dziedzinową
- Oddzielanie kodu biznesowego od technicznego
- Zwiększanie spójności
- Wzbogacanie modeli wiedzą dziedzinową
- Używanie obiektów wartości
- Wprowadzanie projektowania kontraktowego
- Jawne określanie tożsamości encji
- Ograniczanie sprzężenia
- Eliminowanie cykli i zależności
- Wprowadzanie referencji tożsamościowych na granicach agregatów
- Ograniczanie dziedziczenia w biznesowym kodzie źródłowym
- Zasada podstawienia Liskov
- Dokumentowanie architektury w kodzie
- Czy AI ma wiedzę o mojej dziedzinie?
- Podsumowanie
- Na jakim jesteś etapie? - łatwa wersja
9. Usprawnianie organizacji pracy zespołu
- Oprogramowanie jako system socjotechniczny
- Architektura i organizacja horyzontalna
- Architektura i organizacja wertykalna
- Jak przeprowadzić reorganizację zespołu?
- Topologie zespołów
- Praca w stanie przepływu
- Typy topologii
- Tryby interakcji między zespołami
- Ewolucja zespołów w czasie
- Zespoły wspomagające modernizację architektury
- Podsumowanie
- Na jakim jesteś etapie? - łatwa wersja
Część III. Strategiczna transformacja dziedzinowa
10. Krok 1. Ponowne odkrywanie dziedziny
- Schematyczny opis kroku 1.
- Wyzwanie: zbieranie odpowiednich ekspertów dziedzinowych
- Wyzwanie: kierowanie ekspertów dziedzinowych z powrotem do właściwej dziedziny
- Podkrok 1.1. Zrozumienie stanu obecnego
- Podkrok 1.2. Wyodrębnianie wiedzy dziedzinowej (oczyszczanie)
- Technika - eksperyment myślowy "proces na papierze"
- Technika - eksperyment myślowy "wirtualni aktorzy"
- Alternatywa: modelowanie na czysto od samego początku
- Destylowanie języka wszechobecnego
- Podkrok 1.3. Optymalizacja procesów biznesowych
- Podkrok 1.4. Znajdowanie poddziedzin w procesach biznesowych
- Wskaźniki granic poddziedzin
- Wyzwanie: unikanie dekompozycji według elementów roboczych
- Wyzwanie: znajdowanie odpowiedniego rozmiaru
- Cele doboru odpowiedniego rozmiaru
- Wskaźniki odpowiedniego rozmiaru
- Dyskutowanie o dekompozycji z AI
- Podsumowanie
11. Krok 2. Modelowanie architektury docelowej
- Schematyczny opis kroku 2.
- Podkrok 2.1. Tworzenie mapy kontekstowej
- Wyzwanie: konteksty wynikające z przestrzeni rozwiązań
- Podkrok 2.2. Klasyfikowanie poddziedzin
- Podkrok 2.3. Przypisywanie kontekstów ograniczonych do zespołów
- Wyzwanie: przydział zespołów to często kształtowanie zespołów
- Podkrok 2.4. Określanie relacji
- Składanie wszystkiego w całość
- Podsumowanie
12. Krok 3. Dopasowanie architektury rzeczywistej do docelowej
- Schematyczny opis kroku 3.
- Podkrok 3.1. Identyfikowanie rzeczywistej architektury
- Rzeczywista architektura a sztuczna inteligencja
- Podkrok 3.2. Porównywanie docelowej mapy kontekstowej z kodem źródłowym
- Wyzwanie: modele nieograniczone
- Dekompozycja od wewnątrz na zewnątrz
- Wyzwanie: nieograniczony model dziedzinowy
- Przyczyna problemu: błędne rozumienie wielokrotnego wykorzystywania kodu
- Wyzwanie: nieograniczony anemiczny model dziedzinowy
- Wyzwanie: nieograniczony model danych
- Wyzwanie: dekompozycja interfejsu użytkownika
- Monolityczny interfejs użytkownika
- Interfejs użytkownika w kontekście - mikrofrontendy
- Podkrok 3.3. Tworzenie listy refaktoryzacji i ustaleń
- Podsumowanie
13. Krok 4. Określanie priorytetów i realizacja działań transformacyjnych
- Schematyczny opis kroku 4.
- Podkrok 4.1. Wybór pierwszej refaktoryzacji strategicznej
- Wzorzec: zaczynanie od poddziedziny pomocniczej
- Wzorzec: przejście do prac nad dziedziną główną
- Podkrok 4.2. Dodawanie refaktoryzacji taktycznych do backlogu produktu (lub backlogu usprawnień)
- Podkrok 4.3. Planowanie wykonalnych refaktoryzacji w backlogu sprintu
- Przerywanie refaktoryzacji tylko w sytuacjach awaryjnych
- Szacowanie refaktoryzacji
- Domain-Driven Transformation z użyciem metodyki Kanban
- Podkrok 4.4. Wyodrębnianie kontekstu
- Wyzwanie: rozplątywanie logiki biznesowej w serwisach
- Wyzwanie: przenoszenie lokalnych danych, metod ustawiających i pobierających do kontekstu
- Tożsamość encji
- Wyzwanie: duplikowanie danych, metod ustawiających i pobierających do wielu kontekstów
- Wyzwanie: wprowadzanie zdarzeń dziedzinowych między usługami
- Wyzwanie: przenoszenie logiki dziedzinowej z usług do anemicznego modelu dziedziny
- Przenoszenie logiki z usług do anemicznych encji
- Wyzwanie: rozplątywanie modelu danych
- Wyzwanie: wybieranie ustaleń w odpowiednim momencie
- Wyzwanie: utrzymywanie motywacji
- Podsumowanie
Część IV. Podsumowanie
14. Perspektywy - wzorce dziedzinowe i ich implementacja w kontekstach ograniczonych
- Wymiar 1. Przepływ pracy w dziedzinie
- Wzorzec dziedzinowy Potok
- Wzorzec dziedzinowy Tablica
- Wzorzec dziedzinowy Dialog
- Ewolucja dziedzin i wzorce ich rozwoju
- Wymiar 2. Model dziedzinowy w oprogramowaniu
- Centralny element dziedzinowy a zróżnicowane elementy dziedzinowe
- Formularzowy model dziedzinowy
- Wymiar 3. Kształt dziedziny
- Wiek i dojrzałość dziedziny
- Dziedzina obiektów materialnych a dziedzina w pełni cyfrowa
- Przestrzeń na transformację
- Podsumowanie
15. Podsumowanie metody Domain-Driven Transformation
Dodatek A. Przegląd katalogu refaktoryzacji dziedzinowych
Dodatek B. Refaktoryzacje strategiczne
Dodatek C. Refaktoryzacje taktyczne wspierające refaktoryzacje strategiczne
Dodatek D. Refaktoryzacje socjotechniczne
Dodatek E. Refaktoryzacje taktyczne wzmacniające wiedzę dziedzinową
Bibliografia
Skorowidz
| Kategoria: | Programowanie |
| Zabezpieczenie: |
Watermark
|
| ISBN: | 978-83-289-3903-5 |
| Rozmiar pliku: | 15 MB |