Architektura aplikacji i systemów - Wzorce architektoniczne dla projektantów

Kod: arch-patterns-Arch-patterns
Kategoria: Wzorce architektoniczne
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 aplikacji Webowych, platform, systemów i frameworków.

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.

Omawiane zagadnienia leżą u podstaw nowoczesnych frameworków i technologii – co zwiększa poziom ich zrozumienia i pozwala na świadome korzystanie.

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

Szkolenie przeznaczone dla projektantów i architektów pragnących poszerzyć swe kompetencje w zakresie standardowych styli architektonicznych.

Program jest ogólną ramą merytoryczną. Jego realizacja wykracza poza 3 dni. W trakcie analizy przedszkoleniowej wybieramy wzorce, które będą przydatne dla zespołu i skupiamy się tylko na nich w trakcie szkolenie. W ciągu 3 dni zwykle jesteśmy w stanie zaadresować ok 70% wymienionych wzorców.

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. Dokumentowanie architektury w podejściu 4C - Context, Containers, Components, Classes
    1. Context
      1. Kontekst w jakim będzie działał system
      2. Główni aktorzy
      3. Procesy na poziomie organizacji w które zaangażowany jest system
      4. Rola innych systemów
    2. Containers
      1. Kontenery techniczne w jakich będzie rozmieszczony system
      2. Wzorce integracji
      3. Protokoły komunikacji
    3. Components
      1. Komponenty i Serwisy w ujęciu SOA
      2. Dane kanoniczne wymieniane pomiędzy Serwisami
      3. Projektowanie API
      4. Zasada jednego źródła prawdy
    4. Classes
      1. Wstęp do technik i wzorców projektowania na poziomie klas
  2. Przegląd podejść do architektury systemu
    1. Modularyzacja
      1. Poziomy separacji
      2. Techniki integracji modułów
    2. Architektura Micro Kernel
    3. Command + Command Handler
    4. Ports and Adapters
      1. Integracja
      2. SOA ready
      3. Strategia multiscreen
    5. SOA
      1. Duplikacja danych, ale nie duplikacja logiki
      2. Zasada jednego Źródła Prawdy
    6. Event Driven Architecture
      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ń
  3. 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. Warstwa prezentacji
        1. MVC, MVP, MVVM
        2. Front Controler i Page Controler
        3. DTO - zastosowanie
        4. Ekrany komponentowe
        5. Co wybrać dla Rich Internety Applications
      4. Podział na logikę aplikacji i logikę domenową
        1. Logika aplikacji
        2. Modelowanie Use Case/User Story
        3. Stanowo czy bezstanowo
        4. Problemy projektowania API modułu
        5. Logika domenowa i Techniki Domain Driven Design - Building Blocks
        6. Agregaty
        7. Encje
        8. Value Objects
        9. Serwisy Domenowe
        10. Polityki
        11. Specyfikacje
        12. Fabryki
        13. Repozytoria
        14. Modelowanie niezmienników
        15. Poziomy modelu: Capacity, Operations, Policy – dostrajanie modelu, Decission Support
      5. 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
    2. Praktyczne wykorzystanie technik Inversion of Control do budowy frameworków i systemów – na przykładzie Spring/EJB/Seam (do wyboru)
      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. Wstęp do AOP
        2. Techniki Interceptorów
        3. Przykłady zastosowania AOP
    3. Projektowanie systemów otwartych na rozbudowę
      1. pluginy
      2. listenery
      3. wstrzykiwanie rozszerzeń
      4. podejście aspektowe
    4. Wzorce warstwy dostępu do danych
      1. DAO
      2. Repository
      3. Active Record
      4. Object-relational Mapping - na przykładzie Java Persistence API (Hibernate)
      5. Problemy ORM
        1. Niezgodność paradygmatów
        2. Mapowanie granic obiektów
        3. Kompozycja czy agregacja - mapowanie
        4. 3 podejścia do blokowania optymistycznego
        5. Wersjonowanie
        6. Blokowanie obiektów na podstawie których tworzymy inne obiekty (READ)
        7. Blokowanie spójności grafów obiektów poprzez ich korzeń (WRITE)
  4. Modularyzacja
    1. Sepracja Bounded Context
      1. Techniki wyznaczania granic modułów
      2. Techniki hermetyzacji modułów
        1. API
        2. DTO
    2. Integracja modułów - podejścia
      1. Zdarzenia
      2. Wywołania API
      3. Silniki procesów biznesowych
  5. 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
  6. noSQL
    1. Zastosowania
    2. Rodzaje baz - dobór do problemu
  7. 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ń