| Tytuł: | Craftsmanship - przybornik profesjonalisty: najlepsze techniki developerskie i architektoniczne |
| Kod: | Craft-practices-przybornik |
| Kategoria: | 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. |
Szkolenie stanowi syntezę kluczowych elementów klasycznej i nowoczesnej inżynierii oprogramowania.
Daje ogólny pogląd na praktyczne aspekty wykorzystania omawianych technik w projektach
Forma szkolenia
Szkolenie prowadzone jest w formie warsztatu połączonego z częścią teoretyczną. Począwszy od pierwszego dnia uczestnicy pracują nad refactoringiem i rozwojem aplikacji biznesowej.
System przechodzi od podejścia opartego o anemiczny model danych do systemu podzielonego na trzy oddzielne stosy:
- Kluczowa dla systemu logika biznesowa zrealizowana w architekturze Hexagonalnej
- Wprowadzanie i modyfikacji danych słownikowych oparte o architekturę warstwową CRUD
- Projekcje udostępnione tylko do odczytu w architekturze warstwowej
Wyróżniki szkolenia
- Sprawdzone techniki SOLID, GRASP i DDD
- Osadzenie technik w architekturze aplikacji i systemu
- Całość w kontekście testowania automatycznego
- Realne przykłady
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.-
Techniki Object Oriented- Ukierunkowanie myślenia w stylu OO
- Code smell
- Podstawowe założenia paradygmatu obiektowego
- Abstrakcja
- Poziomy abstrakcji
- Wycieki abstrakcji
- Single Level Of Abstraction Principle
- Poziomy abstrakcji
- Enkapsulacja
- Tell Don’t Ask Principle
- Efektywne wykorzystanie wzorca Fasady
- Refactoring anemicznego modelu dziedziny
- Tell Don’t Ask Principle
- Kompozycja, dziedziczenie, delegacja
- Zamknięcie kodu na rozbudowę
- Zastępowania dziedziczenia kompozycją – praktyczne zalety zmiany podejścia
- Dziedziczenie nie nadaje się do modelowania ról
- Liskov Substitution Principle
- Wzorzec Role Object i Extension Object
- Dziedziczenie nie nadaje się do modelowania ról
- Zamknięcie kodu na rozbudowę
- Abstrakcja
- GRASP - General Responsibility Assignment Software Patterns
- Wysoka spójność i luźne powiązania
- Jak ją osiągnąć
- Jak wykrywać zapachy kodu
- Jak ją osiągnąć
- Wysoka spójność i luźne powiązania
- Praktyczne wykorzystanie SOLID
- Pojedyncza odpowiedzialność
- Zasada podstawienia Liskov
- Zakres interfejsów
- Otwartość na rozbudowę
- Wzorzec Strategii
- 3 rodzaje logiki: stabilna, domknięcia, wybór domknięć
- Wzorzec Strategii
- Pojedyncza odpowiedzialność
- Odpowiednie kierunki zależności
- Ukierunkowanie myślenia w stylu OO
-
Clean Code- Wykrywanie Code Smells
- Wybrane Wzorce implementacyjne i projektowe
- Wykrywanie Code Smells
-
Techniki porządkowania logiki i wzorce architektury aplikacyjnej- Podział na logikę aplikacji i logikę domenową
- Logika aplikacji
- Modelowanie Use Case/User Story
- Modelowanie Use Case/User Story
- Logika domenowa
- Modelowanie logiki domenowej
- Techniki DDD - Building Blocks
- Agregaty, Encje, VO
- Polityki, Serwisy Domenowe
- Repozytoria i Fabryki
- Zdarzenia
- Agregaty, Encje, VO
- Modelowanie logiki domenowej
- Podział na logikę aplikacji i logikę domenową
-
Wzorce architektury aplikacyjnej- Architektura Warstwowa
- CRUD
- Projekcje danych
- Layers vs Tiers
- CRUD
- Architektura Hexagonalna
- Podstawowe założenia
- Otwartość na rozbudowę
- Odporność na zmiany wymagań technologicznych
- Otwartość na rozbudowę
- Model domenowy
- Porty wejściowe
- Otwarcie aplikacji na różne źródła danych
- Przykładowa implementacja adapterów w specyfikacji REST
- Otwarcie aplikacji na różne źródła danych
- Porty wyjściowe
- Jak implementować model domenowy niezależny od bazy danych
- Przykładowa implementacja adapterów pamięciowych oraz SQL
- Jak implementować model domenowy niezależny od bazy danych
- Odwzorowanie architektury Hexagonalnej za pomocą pakietów oraz modułów
- Podstawowe założenia
- Ciągłe walidowanie założeń wybranej architektury za pomocą testów automatycznych
- Architektura Warstwowa
-
Wzorce integracyjne- Transactional Outbox
- Event Notification
- Event Carried State Transfer
- Saga
- Transactional Outbox
-
Testability – projektowanie pod kątem wsparcia dla TDD- Podejście Specify First
- Behaviour Driven Development
- Projektowanie pod kątem testów z wykorzystaniem technik OO
- Wykorzystanie Dependency Inejection
- Mapowanie piramidy testów na warstwy aplikacji
- Stosowanie Stub i Mock
- Redukcja ilości przypadków testowych
- Rozwarstwienie logiki
- Obiekty funkcyjne
- Rozwarstwienie logiki
- Pułapki testowania automatycznego
- Testy jednostkowe a refactoring
- Odwrócona piramida testów
- Testy jednostkowe a refactoring
- Podejście Specify First
Pobierz program w formacie PDF
Trenerzy
Poznaj ekspertów, którzy mogą poprowadzić Twoje szkolenie.