Czysta architektura i testowanie reguł z ArchUnit - Projektowanie domenocentrycznych systemów ze stabilnymi granicami architektonicznymi

Najbliższe terminy tego szkolenia
Standardy JSystems
- Wszyscy nasi trenerzy muszą być praktykami i osiągać średnią z ankiet minimum 4.75 na 5. Nie ma wśród nas trenerów-teoretyków. Każdy trener JSystems ma bogate doświadczenie komercyjne w zakresie tematów z których prowadzi szkolenia.
- Wszystkie szkolenia mają format warszatowy. Każde zagadnienie teoretyczne jest poparte rzędem warsztatów w ściśle określonym formacie.
- Terminy gwarantowane na 100%. Jeśli jakiś termin jest oznaczony jako gwarantowany, oznacza to że odbędzie się nawet jeśli część grupy wycofa się z udziału. Ryzyko ponosimy my jako organizator.
- Do każdego szkolenia które wymaga jakiegokolwiek oprogramowania dostarczamy skonfigurowane, gotowe hosty w chmurze. Dzięki temu uczestnik nie musi nic instalować na swoim komputerze (i bić się z blokadami korporacyjnymi). Połączenie następuje przez zdalny pulpit lub SSH - w zależności od szkolenia.
Program szkolenia
- Wprowadzenie do Czystej Architektury
- Znaczenie i cele Czystej Architektury
- Zalety i wady architektur bazodanocentrycznych i domenocentrycznych
- Rola wyznaczania architektonicznych granic
- Czysta Architektura a Czysty Kod
- Reguły projektowe w kontekście Czystej Architektury
- Zasada zależności (Dependency Rule)
- Zasady SOLID
- Pojedyncza odpowiedzialność (SRP)
- Otwarte/zamknięte (OCP)
- Podstawienie Liskov (LSP)
- Segregacja interfejsów (ISP)
- Odwrócenie zależności (DIP)
- Zasady komponentów
- Spójność komponentów
- Łączenie komponentów
- Odwrócenie Kontroli (Inversion of Control)
- Pakowanie logiki i danych
- Pakowanie w warstwy
- Pakowanie według funkcji
- Pakowanie według komponentów
- Przykłady Czystych Architektur
- Architektura Heksagonalna, tzw. Porty i Adaptery (Hexagonal Architecture, tzw. Ports and Adapters)
- Architektura Cebulowa (Onion Architecture)
- Architektura Krzycząca (Screaming Architecture)
- Granice Architektoniczne (Architectural Boundaries)
- Granice modułów a odpowiedzialność systemu
- Jak tworzyć elastyczne granice między komponentami?
- Ukrywanie szczegółów w architekturze
- Ukrywanie szczegółów o interfejsie użytkownika
- Ukrywanie szczegółów o bazie danych
- Ukrywanie szczegółów o sieci WWW
- Ukrywanie szczegółów o frameworkach
- Testowalność i skalowalność systemów
- Dlaczego Czysta Architektura ułatwia testowanie?
- Techniki testowania systemów z różnymi warstwami
- Skalowanie aplikacji z wykorzystaniem modularności
- Praktyczne przykłady Czystej Architektury i analiza przypadków
- Omówienie przykładów implementacji Czystej Architektury
- Wspólna analiza problemów i rozwiązań w projektach
- Wprowadzenie do ArchUnit
- Czym jest ArchUnit i dlaczego warto go używać
- Automatyzacja testowania architektury w praktyce
- Podstawowe zasady pracy z ArchUnit
- Instalacja i konfiguracja ArchUnit w projekcie Javowym
- Podstawowa struktura testów w ArchUnit
- Tworzenie pierwszych testów architektonicznych
- Definiowanie reguł architektonicznych w ArchUnit
- Testowanie zależności między warstwami aplikacji
- Kontrola zasad poprawności zależności między pakietami
- Testowanie zgodności nazw klas, pakietów i metod z konwencjami nazewniczymi
- Zaawansowane testy w ArchUnit
- Testowanie zgodności z zasadami SOLID
- Testowanie zależności technologicznych
- Ograniczanie użycia specyficznych bibliotek czy klas
- Refaktoryzacja architektury z pomocą ArchUnit
- Implementacja testów architektury w Archunit dla przykładowych stylów architektonicznych
- Testowanie domenocentrycznej Czystej Architektury
- Testowanie klasycznej bazodanocentrycznej Architektury Warstwowej
- Integracja ArchUnit z narzędziami CI/CD
- Jak włączyć ArchUnit do procesu Continuous Integration
- Automatyczne testowanie architektury w pipeline’ach CI
- Przykłady integracji z popularnymi narzędziami (Jenkins, GitLab CI, GitHub Actions)
- Zapis decyzji architektonicznych (Architecture Decision Record)
- Dlaczego warto dokumentować decyzje architektoniczne?
- Struktura ADR
- Kontekst
- Decyzja
- Konsekwencje
- Szablony ADR
- Integracja ADR z narzędziami i repozytorium projektu
- Wersjonowanie i aktualizacja ADR
- Najlepsze praktyki
- Warsztaty praktyczne
- Implementacja wybranych stylów architektonicznych Czystej Architektury w przykładowych projektach
- Pisanie testów automatyzujących weryfikację reguł architektonicznych
- Implementacja zapisu decyzji architektonicznych (ADR)
- Debugowanie testów i analiza wyników
- Najlepsze praktyki użycia ArchUnit w projektach komercyjnych
- Najlepsze praktyki przy testowaniu architektury
- Jak rozwijać i utrzymywać reguły architektoniczne w czasie
- Wdrażanie Czystej Architektury, ArchUnit i ADR jako standardów w zespole deweloperskim
Opis szkolenia
Szkolenie odbywa się na żywo z udziałem trenera. Nie jest to forma kursu video!Na szkoleniu zdobędziesz wiedzę i praktyczne umiejętności niezbędne do projektowania nowoczesnych i elastycznych systemów programistycznych zgodnych z zasadami Czystej Architektury (Clean Architecture) zorientowanej na domenę biznesową. Zrozumiesz relację między Czystą Architekturą a Czystym Kodem (Clean Code). Nauczysz się, jak skutecznie separować warstwy aplikacji i gdzie umieszczać granice architektoniczne, uniezależniając logikę biznesową od szczegółów technicznych i infrastruktury, co pozwoli tworzyć łatwe w utrzymaniu, modularne i odporne na zmiany rozwiązania. Zrozumiesz sens Odwrócenia Kontroli (Inversion of Control), a także poznasz użyteczne style architektoniczne, np. Architektura Heksagonalna (Porty i Adaptery), Architektura Krzycząca, Architektura Cebulowa.
Dodatkowo nauczysz się automatycznego testowania zasad architektonicznych w projektach opartych na Javie przy użyciu frameworka ArchUnit. Poznasz, jak definiować, weryfikować i egzekwować reguły architektoniczne, które pomogą utrzymać spójność i jakość struktury kodu w projektach. Zrozumiesz, jak efektywnie testować zależności między warstwami, kontrolować naruszenia zasad architektury oraz zapewnić zgodność z wytycznymi projektowymi.
Oprócz tego nauczysz się dokumentować decyzje architektoniczne za pomocą Architecture Decision Record (ADR). Nauczysz się, jak tworzyć przejrzyste i zwięzłe zapisy decyzji, w jaki sposób ADR wspiera procesy projektowe oraz jak zarządzać tymi dokumentami w dynamicznych, rozwijających się systemach. Poznasz również najlepsze praktyki i narzędzia, które ułatwią Ci implementację ADR w codziennej pracy zespołu.
Prowadzący szkolenie:
Maciej Górnicki
Programista i projektant z 13-letnim doświadczeniem, specjalizujący się w Javie i full-stack development. Pracował nad dużymi projektami korporacyjnymi w sektorach fintech oraz insurtech, zdobywając bogate doświadczenie w tworzeniu systemów rozproszonych oraz integracji opartej o API i zdarzenia.
Jako specjalista w dziedzinie Java i architektury oprogramowania, zajmował się również strategicznym rozwojem kompetencji technicznych w organizacji, będąc aktywnym rekruterem technicznym, trenerem oraz mentorem. Pasjonat współpracy z ekspertami domenowymi i klientami, z zamiłowaniem do prostoty i czytelności, z zainteresowaniem Domain Driven Design (DDD) oraz innymi podejściami inżynierii oprogramowania zorientowanymi na domenę biznesową.
Stanowisko robocze

Do tego szkolenia każdy uczestnik otrzymuje dostęp do indywidualnej wirtualnej maszyny w chmurze. Ma ona zainstalowane i skonfigurowane wszystko co potrzebne do realizacji szkolenia. Maszyna będzie dostępna przez cały okres szkolenia.
Gdy na jakiś termin zgłosi się minimalna liczba osób, termin oznaczamy jako gwarantowany.
Jeśli jakiś termin oznaczony jest jako gwarantowany to oznacza to, że na 100% się odbędzie we wskazanym czasie i miejscu.
Nawet gdyby część takiej grupy zrezygnowała lub przeniosła się na inny termin, raz ustalony termin gwarantowany takim pozostaje.
Ewentualne ryzyko ponosimy my jako organizator.
Przejdź do terminów tego szkolenia

Sprawdź, co mówią o nas ci, którzy nam zaufali
Trenerzy kategorii Java










Programista i projektant z 13-letnim doświadczeniem, specjalizujący się w Javie i full-stack development. Pracował nad dużymi projektami korporacyjnymi w sektorach fintech oraz insurtech, zdobywając bogate doświadczenie w tworzeniu systemów rozproszonych oraz integracji opartej o API i zdarzenia.
Jako specjalista w dziedzinie Java i architektury oprogramowania, zajmował się również strategicznym rozwojem kompetencji technicznych w organizacji, będąc aktywnym rekruterem technicznym, trenerem oraz mentorem. Pasjonat współpracy z ekspertami domenowymi i klientami, z zamiłowaniem do prostoty i czytelności, z zainteresowaniem Domain Driven Design (DDD) oraz innymi podejściami inżynierii oprogramowania zorientowanymi na domenę biznesową.


Jestem programistą z ponad 15-letnim doświadczeniem. W trakcie swojej kariery kilka razy zmieniałem obszary, z którymi miałem do czynienia (poczynając od niskopoziomowego programowania w C, poprzez fullstackowe zabawy w RubyOnRails, aż do prawdziwego backendu w Javie). Odkąd pamiętam, zawsze lubiłem dzielić się wiedzą z innymi i sprawiało to satysfakcję obu stronom tego procesu. Dlatego naturalną konsekwencją było to, iż zostałem kilka lat temu profesjonalnym trenerem IT.
Prowadzenie szkoleń pozwala mi również na każdorazowe powtórzenie i ugruntowanie swojej wiedzy, co potem bardzo przydaje się w pracy projektowej. Natomiast to, co daje mi największe zadowolenie jako trenerowi, to sytuacja gdy uczeń przerośnie mistrza - wtedy wiem, że dałem z siebie wszystko, a moja praca przyniosła owoce.

