Wzorce projektowe i architektura dla platformy Java EE

Kod: java-arch-arch
Kategoria: Architektura Java
Forma: 50% wykłady / 50% warsztaty
Czas trwania: 3 dni
Grupa docelowa: architekci
Logistyka: W siedzibie klienta lub w innym dowolnym miejscu.
Data i dokładny zakres do ustalenia podczas analizy przed-szkoleniowej.

Szkolenie prezentuje wybrane Wzorce Projektowe i Architektoncizne w praktycznym i niepodręcznikowym ujęciu osadzonym w kontekście projektowania systemów na platformie Java EE.

Podczas szkolenia prezentowane są przykłady praktycznego zastosowania zaczerpnięte z rzeczywistych systemów klas: ERP, narzędzia wizualne, systemy rozproszone, serwery.

Podczas szkolenia uczestnicy nabędą zintegrowaną wiedzę na temat zdobyczy nowoczesnej inżynierii oprogramowania pozwalającą im na tworzenie zaawansowanych systemów.

Przedstawiamy techniki łączenie wzorców w struktury wyższego rzędu.

Wyróżniki szkolenia

Podczas zajęć możesz oczekiwać szczególnych akcentów położonych na poniższe aspekty:

  • Nowoczesne architektury (CqRS - wspierająca DDD)
  • Szersza perspektywa
  • Dobór klasy rozwiązania do klasy problemu

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. Architektura systemu
    1. Modularyzacja
      1. Poziomy separacji
      2. Techniki integracji modułów
        1. Zdarzenia
        2. Wywołania API
        3. Silniki procesów biznesowych
    2. SOA
      1. Duplikacja danych, ale nie duplikacja logiki
      2. Zasada jednego Źródła Prawdy
    3. Event Driven z wykorzystaniem JMS
      1. Architektury oparte o zdarzenia
        1. Events broker
        2. Events Bus
        3. Eventual Consistency
      2. Zależności czasowe pomiędzy zdarzeniami
      3. Sagi – orkiestracja zdarzeń
      4. Wykorzystanie JMS jako silnika zdarzeń biznesowych
    4. Alternatywne podejścia do architektury systemu
      1. Command + Command Handler
      2. Ports and Adapters
        1. Integracja
        2. SOA ready
        3. Strategia multiscreen
  2. Architektury aplikacji
    1. Podejście warstwowe
      1. Różnice pomiędzy Layer a Tier
      2. Ogólny podział - 3I
        1. Interfejsy
        2. Interakcje
        3. Integracja
  3. Wzorce warstwy prezentacji z wykorzystaniem JSF
    1. MVC, MVP, MVVM - poszukiwanie odpowiedniej metafory dla Backing Bean
    2. Front Controler i Page Controler
    3. DTO - kiedy zastosowanie ma sens
    4. Ekrany komponentowe - dobór odpowiedniego zasięgu dla fragmentów modelu
  4. Wzorce warstwy logiki
    1. Podział na logikę aplikacji i logikę domenową
    2. Logika aplikacji
      1. Modelowanie Use Case/User Story
      2. Stanowo czy bezstanowo
      3. Wykorzystanie Maned Beans i dobór odpowiedniego zasięgu
      4. Zarządzanie transakcjami - poziomy ilozacji i propagacja transakcji
      5. Transakcje aplikacyjne - wykorzystanie rozszerzonego trybu kontekstu persystencji
    3. Logika domenowa i Techniki Domain Driven Design - Building Blocks
      1. Agregaty - mapowanie relacyjno obiektowe zgodne z zasadami Object Oriented
      2. Encje
      3. Value Objects
      4. Serwisy Domenowe
      5. Polityki
      6. Specyfikacje
      7. Fabryki
      8. Repozytoria - poprawne wykorzystanie JPA
      9. Modelowanie niezmienników
      10. Poziomomy modelu: Capacity, Operations, Policy – dostrajanie modelu, Decission Support
  5. Wzorce warstwy dostępu do danych - wykorzystanie JPA
    1. Shared Repository
    2. DAO
    3. Repository
    4. Wzorce blokowania całych grafów obiektów (ochrona spójności zgodna z OO)
      1. Optymistyczne - dobór podejścia do scenariusza
        1. Wersjonowanie encji
        2. Read (optimistic)
        3. Write (optimistic_force_increment) - ochrona agregatów (grafów encji)
        4. Pesymistyczne
        5. Pułapki i najlepsze praktyki
    5. Modelowanie encji
      1. Wykorzystanie typów zagnieżdżonych do mapowania Value Objects
      2. Modelowanie niezmienników
      3. Dobór struktur danych w powiązaniu One-to-Many
        1. Set
        2. Bag
        3. List
        4. Unikanie zbędnych operacji odtwarzania i pobierania kolekcji
    6. Mapowanie kolekcji
      1. Tabele linkujące w powiązaniu One-to-Many
        1. Kiedy stosować - kompozycja a agregacja
      2. Strategie pobieranie w kontekście modelu biznesowego
    7. Optymalizacja operacji
      1. Pobieranie Proxy
      2. Dynamiczny Update
    8. Operacje kaskadowe a granica Agregatu
    9. Problem identyfikacje encji - dobór podejścia
      1. klucze główne
      2. klucze naturalne
      3. UUID
      4. referencja w pamięci
    10. Dziedziczenie
      1. Kiedy dziedziczenie nie ma sensu w modelu biznesowym
      2. Implementacje dziedziczenia - wady i zalety każdego z podejść
      3. Pojedyncza tabela
      4. Tabela per klasa
      5. Tabele dla super klas
      6. Alternatywa dla dziedziczenia
        1. Party Archetype
        2. Role Object Pattern
    11. Wydajność dostępu do danych
      1. Pułapki wydajności JPA
        1. „n+1 Select problem” - wykrywanie i zapobieganie
        2. Wykrywanie N+1SP
        3. Wykrywanie automatyczne przy pomocy AOP
        4. Sposoby naprawy N+1SP
        5. JOIN FETCH
        6. Batch size
      2. Pułapki Lazy Loadingu oraz zbyt chciwego pobierania danych
        1. Nadmierne pobieranie danych
        2. Racjonalne wykorzystanie Lazy Loadingu
  6. Strategiczne testowanie warstw – ogólny przegląd podejścia
    1. Problem eksplozji kombinatorycznej przypadków testowych
    2. Testowanie górnych warstw w podejściu end2end
    3. Testowanie dolnych warstw w podejściu jednostkowym
  7. Praktyczne wykorzystanie technik Inversion of Control do budowy frameworków i systemów
    1. Dependency Injection – podstawowa technika IoC
      1. Wykorzystanie zamiast wzorców fabrykujących
      2. Budowanie konkretnych Strategii, Dekoratorów itd. w zależności od stanu aplikacji (kontekst, konfiguracja)
      3. Otwartość na rozbudowę dzięki wzorcom Strategii
    2. Systemy sterowane zdarzeniami – silniejsza technika IoC
      1. Użycie do tworzenie rozszerzalnych architektur opartych o pluginy
      2. Użycie do tworzenia skalowalnych systemów wysokiej wydajności (wykorzystanie kolejek, np. JMS)
      3. Sagi - Modelowanie złożonych procesów zdarzeniowych
    3. Aspect Oriented Programming
      1. Wykorzystanie interceptorów
      2. Wstęp do AOP
      3. Techniki Interceptorów
      4. Przykłady zastosowania AOP
    4. Projektowanie systemów otwartych na rozbudowę
      1. Pluginy
      2. Listenery
      3. Wstrzykiwanie rozszerzeń
      4. Podejście aspektowe
  8. Command-query Responsibility Segregation – rozszerzona architektura warstwowa
    1. Wsparcie dla Domain Driven Design
    2. Rozwiązanie problemów z niedopasowaniem ORM do przeglądu danych w Gridach
    3. Zorientowanie na skalowanie i rozszerzalność
    4. Tworzenie dedykowanych modeli: do odczytu, do operacji biznesowych
      1. Rozwiązanie problemów z wydajnością
      2. Architektura zewnętrznego indeksu z użyciem noSQL
  9. Testability – projektowanie architektur aplikacji zorientowanych na testy
    1. Strategiczne testowanie
      1. Problem eksplozji kombinatorycznej przypadków testowych
      2. Mapowanie warstw aplikacji na piramidę testów
      3. Strategia
        1. Warstwa domenowa - testowanie jednostkowe
        2. Warstwa serwisów - testowanie end2end
    2. Dążenie do uruchamiania logiki poza serwerem – zwiększanie produktywności, redukcja czasu używanego na redeploy
    3. Zagadnienia podatności architektury na testy: problemy i pułapki
    4. Techniki testowania jednostkowego: dummy, fake, stub, mock
    5. Narzędzia testowania jednostkowego i integracyjnego (JUnit, Mockito)
    6. 3 poziomy testów
      1. Specification by Example - cele biznesowe
      2. Flow - User Story
      3. Automatyzacja interakcji z UI - Agenty będące abstrakcją nad skryptem testowym


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.

Zapytaj o 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ń