Wzorce projektowe i architektoniczne oraz efektywne techniki Object Oriented Design dla projektantów systemów

Kod: craft-patterns-Patterns Sys
Kategoria: Wzorce projektowe
Forma: 50% wykłady / 50% warsztaty
Czas trwania: 3
Grupa docelowa: architekci

Szkolenie prezentuje wybrane Wzorce Projektowe w praktycznym i niepodręcznikowym ujęciu osadzonym w kontekście projektowania bibliotek, frameworków, platform i systemó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.

Podczas warsztatów praktycznych łączymy wzorce projektowe i architektoniczne aby stworzyć giętkie i otwarte na rozbudowę rozwiązania cechujące się wysokim poziomem testowalności. 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 profesjonalnych technik inżynierii oprogramowania zwiększających jakość kodu i projektu.

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:

  • Skupienie na kontekście projektowania aplikacji i systemów
  • Wybór jedynie użytecznych wzorców oraz technik
  • Realne przykłady

Program Szkolenia

Pobierz program w formacie PDF
  1. Wzorce architektury systemowej
    1. Dostępu do danych
    2. Warstwy
      1. Podejścia do warstw
      2. Relaxed Layers
    3. Micro Kernel
    4. Command and Command Handler
    5. Ports and Adapters
    6. SOA i SOA ready
    7. Event Driven
      1. Zależności czasowe pomiędzy zdarzeniami
      2. Sagi – orkiestracja zdarzeń
  2. Wzorce architektury aplikacji
    1. Podział na logikę aplikacji i logikę domenową
    2. Logika aplikacji
      1. Modelowanie Use Case/User Story
      2. Stanowo czy bezstanowo
      3. Wykorzystanie Aspect Oriented Programming
    3. Logika domenowa
      1. Techniki Domain Driven Design - Building Blocks
          Agregaty Encje Value Objects Serwisy Domenowe Polityki Wykorzystanie Dependency Injection Specyfikacje Fabryki Repozytoria
      2. Modelowanie niezmienników
      3. Poziomomy modelu
          Capacity Operations Policy – dostrajanie modelu Decission Support
  3. Paradygmat Inversion of Control – sprawdzona koncepcja budowy frameworków i systemów
    1. Dependency Injection – podstawa współczesnych frameworków - dokładne omówienie z zadaniami
      1. Wsparcie dla testability
      2. Praktyczne techniki wykorzystania w celu osiągnięcia giętkości designu
      3. Wstrzykiwanie poprzez kontenery
      4. Wstrzykiwanie w Fabrykach
    2. Systemy sterowane zdarzeniami – omówienie koncepcji i problemów
      1. Architektura pluginowa
      2. Separacja modułów
      3. Zwiększanie responsywności systemu
      4. Skalowanie
  4. Aspect Oriented Programming – omówienie koncepcji i przegląd podejść
    1. Praktyczne zastosowania
    2. Przykłady (Spring)
  5. Techniki Object Oriented Design.
    1. Analiza Paradygmatu Object oriented i jego poprawna interpretacja.
    2. Ukierunkowanie myślenia w stylu OO.
    3. Najlepsze praktyki i pułapki.
      1. Wady naiwnego modelowania rzeczowniki-czasowniki
      2. Modelowanie hermetycznych agregatów - model behawioralny
      3. Modelowanie niezmienników.
      4. Modelowanie czasu jako jednego z głównych czynników złożoności esencjonalnej
    4. GRASP - General Responsibility Assignment Software Patterns.
    5. SOLID - Single Responsibility Principle (SRP), the Open/Closed Principle (OCP), the Liskov Substitution Principle (LSP), the Dependency Inversion Principle (DIP), and the Interface Segregation Principle (ISP).
    6. Antywzorce i typowe pułapki
      1. Code smell – wykrywanie ok 20 zapachów kodu
      2. Przegląd typowych błędów i pułapek
      3. Techniki refaktoryzacji
  6. Wzorce projektowe - praktyczne, nieksiążkowe przykłady oparte o rzeczywiste problemy w kontekście aplikacji Enterprise
    1. Command – hermetyzacja usług, autoryzacja dostępu
    2. Decorator – reużywalnośc logiki
      1. Składanie złożonej logiki biznesowej o przyrostowym charakterze
      2. Wrapper – odmiana wzorca użyteczna w modelowaniu zorientowanym na znaczenie
          Opakowanie typów podstawowych wygodnymi obiektami Alternatywa dla Utils Archetyp Money
      3. Połączenie Dekoratora ze Strategią w celu zbudowania odmian algorytmów przyrostowych
    3. Strategy – hermetyzacja logiki biznesowej
      1. Wybór odmiany algorytmu bez ingerencji w core biznesowy
      2. Integracja z mechanizmami wstrzykiwania zależności
      3. Definiowane konkretnej strategii biznesowej w kontenerze Incersion of Control (XML lub metody fabrykujące)
    4. Chain of Responsibity – dwie odmiany wzorca
      1. Dobór logiki biznesowej do aktualnych warunków
      2. Połączenie Łańcucha ze Strategią w celu zbudowania odmian algorytmów warunkowych
    5. Abstract Factory – tworzenie artefaktów domenowych
      1. Spójny sposób na tworzenie rodzin obiektów biznesowych zależnych od konfiguracji wdrożeniowej systemu
      2. Produkowanie Strategii
    6. Builder – redukcja złożoności tworzenia struktur
      1. Zunifikowane eksportowanie obiektów domenowych
      2. Ukrywanie złożoności budowania zapytań
    7. Template Method – szablony procesów.
      1. Technika uwspólniania logiki biznesowej.
      2. Szablonowe Strategie
      3. Przykłady antywzorca.
    8. Singleton – niebezpieczny wzorzec w przykładach.
      1. Szczegóły implementacji Singeltonów tworzonych z opóźnieniem, odpornych na współbieżny dostęp.
    9. State – hermetyzacja procesu biznesowego.
      1. Implementacja maszyny stanów reprezentującej złożony cykl życia obiektu biznesowego.
      2. Maszyna Stanów jako Wrapper dodający nowe funkcjonalności.
      3. Pułapki zbytniego uogólniania Maszyn Stanów
    10. Observer – redukcja zależności
    11. Event Broker - uogólnienie do poziomu Architektury Systemu
    12. Wysokowydajne systemy Event Driven i asynchroniczne przetwarzanie.
    13. Saga - orkiestracja wielu zdarzeń w czasie
    14. Specification – hermetyzacja reguł biznesowych
      1. Redukcja złożoności systemów zawierających złożoną logikę decyzyjną
      2. Przypadek gdy istnieje wiele możliwych kryteriów logicznych
      3. Jednak w danym kontekście (wdrożenie, klient) używanym tylko podzbioru reguł
    15. Role Object
      1. Modelowanie ról w systemie.
      2. Alternatywa dla dziedziczenia.
      3. Odmiana wzorca Bridge.
    16. Facade – redukcja złożonej struktury pod wygodnym API
  7. Użyteczne wzorce o zastosowaniu technicznym
    1. Bridge – rozdzielenie interfejsu koncepcyjnego od jego implementacji
    2. Flyweight, Prototype – wzorce optymalizacji
    3. Memento – komunikacja pomiędzy kontekstami
    4. Proxy – podstawowy wzorzec frameworków
    5. Composite – powtarzalne struktury
    6. Visitor – dynamiczne rozszerzanie API Klasy (emulacja Double Dispatch)
    7. Iterator – standardowy wzorzec dla kolekcji
    8. Interpreter – wygodny wzorzec dla tworzenia własnych DSL
    9. Observer - systemy zorientowane na zdarzenia, Składowa MVC
    10. Extension Object - uogólnienie Role Object dla systemów otwartych na rozbudowę.
  8. Testability – wpływ użycia dobrych praktyk OOD i Wzorców na testowalność kodu
    1. Zagadnienia podatności architektury na testy: problemy i pułapki
    2. Techniki testowania jednostkowego: dummy, fake, stub, mock
    3. Narzędzia testowania jednostkowego i integracyjnego
      1. JUnit
      2. Mockito
  9. 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

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ń