dla Architektów Oprogramowania
2 godz. 1 min · Full-stack i Programowanie
Rafał PiekaraSoftware KomandosZanurzymy się w definiowanie strategicznych wzorców Domain Driven Design, które stanowią fundament efektywnego zrozumienia problemów biznesowych. Omówimy kluczowe koncepty takie jak Subdomena czy Bounded Context.
Wzorce taktyczne to praktyczne aspekty DDD, które są kluczowe dla każdego architekta oprogramowania. W tej sekcji mocniej spojrzymy na kod. Dowiesz się, jak stosować i testować wzorce takie jak Value Object, Encja czy Agregat.
Bazy danych to serce wielu systemów, a ich prawidłowe użycie w kontekście DDD jest kluczowe. Omówimy najlepsze praktyki związane z integracją domeny i kontekstów z tabelami bazodanowymi. Poznasz techniki, które pozwolą Ci zachować integralność danych i spójność modelu domenowego, niezależnie od wybranej technologii bazodanowej.
Teoria jest ważna, ale praktyka czyni mistrza. Przejdziemy przez konkretne przykłady implementacji DDD w rzeczywistych projektach. Zobaczysz krok po kroku zastosowanie wzorców, zamodelowanie domeny i implementację. Praktyczne przykłady pomogą Ci zrozumieć, jak stosować DDD w codziennej pracy i jak wpływa to na komunikację z interesariuszami biznesowymi.
Każdy architekt oprogramowania spotkał się z systemami, które były nieczytelne i trudne do utrzymania - tak zwanymi "Big Ball of Mud". Nauczysz się, jak za pomocą DDD przeprowadzić refaktoryzację takiego systemu, przekształcając go w dobrze zorganizowane i zarządzalne struktury.
Kurs powstał z myślą o programistach aspirujących do roli architektów, architektach oprogramowania oraz liderach technicznych, którzy chcą pogłębić swoją wiedzę i umiejętności w zakresie stosowania Domain Driven Design. To materiał idealny dla tych, którzy znają już podstawy DDD i chcą podnieść swoje umiejętności na wyższy poziom, aby projektować złożone i skalowalne systemy. Niezależnie od tego, czy pracujesz nad dużymi projektami, chcesz usprawnić komunikację z zespołem i interesariuszami, czy szukasz nowych strategii na rozwiązywanie skomplikowanych problemów biznesowych - ten kurs jest dla Ciebie!
Przejdźmy teraz do testowania agregatów.
W agregatach możemy testować operacje, które będziemy na nich wykonywać.
Będziemy sprawdzać, czy te operacje wykonane na agregacie zachowają jego
spójność, czy pola zostaną odpowiednio zmodyfikowane, czy agregat będzie
cały czas w spójnym, poprawnym stanie.
Możemy testować stan, a więc zmiany stanu po wykonaniu jakichś operacji,
testować granice.
Sprawdzamy, czy agregat przypadkiem nie woła jakichś zewnętrznych
elementów z innego kontekstu.
Te operacje, które wykonujemy nie mogą naruszać nam granic, więc nie mogą
wykonywać takich side afektów, które zajdą w innych kontekstach,
więc to też warto przetestować.
No i wreszcie tak ogólnie mówiąc będziemy testować logikę i reguły biznesowe.
To jest to miejsce.
To kluczowe miejsce, gdzie wszelkiego rodzaju dzienniki biznesowe
powinny być przetestowane.
Zapraszam Cię teraz do kodu Prosty test agregatu zamówienia.
Mamy tutaj dwa bardzo proste testy.
Mianowicie nasz agregat powinien pozwalać na dodawanie nowych elementów zamówienia
nowych linii oraz na ich usuwanie oraz powinien móc oznaczyć status zamówienia
jako zakończone jako wykonane.
Tak więc mamy tutaj nowy.
Nowe zamówienie, dodajemy jakąś linię zamówienia, sprawdzamy czy
total się zgadza oraz jeśli usuniemy to zamówienie sprawdzimy czy
agregat orderu będzie miał total równy zero, bo nie będzie
tutaj żadnych zamówień. Tak samo będzie przy kompletowaniu.
Mamy jakieś zamówienie.
Wykonujemy na nim operację Conflict.
Sprawdzamy czy zamówienie czy status zamówienia został zmieniony na Completed.
No i jeśli tak test przechodzi.
Agregat jest w spójnym stanie.
Sprawdzamy logikę, operacje biznesowe i spójność agregatu.
Sprawdzamy czy nie ma żadnych wyjątków.
Czyli po prostu testujemy business, testujemy logikę
biznesową naszej aplikacji.