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