Implementacja Domain Driven Design - wzorce architektoniczne (część

Podobne dokumenty
Program szkolenia: Architektura aplikacji i systemów - Wzorce architektoniczne dla projektantów

Wzorce projektowe i architektura dla platformy Java EE

Java Persistence API - zagadnienia zaawansowane

Domain Driven Design - projektowanie modeli złożonych domen (część

Receptury - niezbędnik projektanta i architekta

Spring Framework - wprowadzenie i zagadnienia zaawansowane

Domain Driven Design - projektowanie modeli złożonych domen (część

Program szkolenia: Wprowadzenie do Domain Driven Design dla biznesu (część 0)

Program szkolenia: Architektura aplikacji i systemów - Wzorce architektoniczne dla projektantów

Szkolenie wycofane z oferty. Program szkolenia: Enterprise Java Beans 3.0/3.1

Program szkolenia: Receptury testowania automatycznego - problemy, strategie, taktyki, techniki, narzędzia

Testowanie aplikacji mobilnych na platformie Android - architektura, wzorce, praktyki i narzędzia

Całościowe podejście do testowania automatycznego dla programistów. (TDD, BDD, Spec. by Example, wzorce, narzędzia)

Całościowe podejście do testowania automatycznego dla programistów. /C#/PHP (TDD, BDD, Spec. by Example, wzorce, narzędzia)

Zwinna współpraca programistów i testerów z wykorzystaniem BDD i. by Example (JBehave/Spock/SpecFlow)

Program szkolenia: Wzorce projektowe i ich implementacja w C# oraz testowanie automatyczne

Program szkolenia: Wzorce projektowe w C++

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

Produktywne tworzenie aplikacji webowych z wykorzystaniem Groovy i

Pod dwóch wprowadzających w koncepcję DDD częściach,

Podstawy frameworka Spring

Program szkolenia: Test Driven Development (TDD) using Spock or JUnit 5

Szkolenie wycofane z oferty

DDD : dla architektów oprogramowania / Vaughn Vernon. Gliwice, cop Spis treści

Szczególne problemy projektowania aplikacji internetowych. Jarosław Kuchta Projektowanie Aplikacji Internetowych

Program szkolenia: Continuous Integration i Git

Techniki efektywnego testowania kodu dla programistów Java (Spock

Projektowanie Zorientowane na Dziedzinę. ang. Domain Driven Design

Podrozdziały te powinny zawierać informacje istotne z punktu widzenia przyjętego celu pracy

Program szkolenia: REST i Microservices w PHP

Iteracyjno-rozwojowy proces tworzenia oprogramowania Wykład 3 część 1

Domain Driven Design krok po kroku

Tworzenie komponentów logiki biznesowej i warstwy dostępu do danych w oparciu o EJB3.0/JPA lub EJB 3.1/JPA2

ANGULARJS TWORZENIE APLIKACJI INTERNETOWYCH

Zofia Kruczkiewicz - Modelowanie i analiza systemów informatycznych 2

Enterprise Integration Patterns z wykorzystaniem Apache Camel

Domain Driven Design krok po kroku

Ewolucyjna architektura

Projektowanie i implementacja wysokowydajnych aplikacji w języku

Projektowanie, tworzenie aplikacji mobilnych na platformie Android

Korporacyjna Magistrala Usług na przykładzie Mule ESB

Praca z kodem legacy : strategie, naprawa błędów, refaktoryzacja oraz

Wykład 1 Inżynieria Oprogramowania

Programowanie Zespołowe

Szkolenie wycofane z oferty. Apache Cassandra - modelowanie, wydajność, analiza danych

Program szkolenia: Zaawansowane programowanie w C++

JAVA EE MODEL APLIKACJI. Waldemar Korłub. Narzędzia i aplikacje Java EE KASK ETI Politechnika Gdańska

Program szkolenia: Symfony, nowoczesny framework PHP

Projektowanie obiektowe oprogramowania Wzorce architektury aplikacji (3) Wykład 11 Repository, Unit of Work Wiktor Zychla 2016

Kompleksowe tworzenie aplikacji klasy Desktop z wykorzystaniem SWT i

Program szkolenia: JavaScript Craftsmanship

Technologie dla aplikacji klasy enterprise. Wprowadzenie. Marek Wojciechowski

Departament Zakupów Centralnych ul. Żaryna 2A, Warszawa tel. (22) DZC/AS/708/12. Warszawa, dn. 27 listopada 2012 r.

Tytuł szkolenia: Angular 4 - budowanie nowoczesnych i wydajnych aplikacji przeglądarkowych

Projekt architektury systemów informatycznych Uniwersytetu Warszawskiego w oparciu o metodykę TOGAF. Tomasz Turski

Korporacyjna Magistrala Usług na przykładzie Oracle Service Bus

1. WYMAGANIA WSTĘPNE W ZAKRESIE WIEDZY, UMIEJĘTNOŚCI I INNYCH KOMPETENCJI

Budowanie aplikacji biznesowych przy użyciu. Presentation Foundation i wzorca MVVM

Adaptywny kod : zwinne programowanie, wzorce projektowe i SOLID-ne zasady / Gary McLean Hall. Gliwice, cop Spis treści

ZAŁĄCZNIK Nr 2 do CZĘŚCI II SIWZ WYCIĄG ZE STANDARDÓW, ZASAD I WZORCÓW INTEGRACYJNYCH OBOWIĄZUJĄCYCH W PSE S.A.

Full Stack JavaScript z Angular i Nest. Dni: 5. Opis: Adresaci szkolenia

INŻYNIERIA OPROGRAMOWANIA

Analiza i projektowanie aplikacji Java

PHP revisited - odświerzenie spojrzenia na programowanie w PHP

Grzegorz Ruciński. Warszawska Wyższa Szkoła Informatyki Promotor dr inż. Paweł Figat

Program szkolenia: Tworzenie aplikacji w Ruby on Rails z wykorzystaniem zwinnych metodyk

Grupy pytań na egzamin magisterski na kierunku Informatyka (dla studentów niestacjonarnych studiów II stopnia)

Wprowadzenie do programowania aplikacji mobilnych

PRACA DYPLOMOWA MAGISTERSKA

12) Wadą modelu kaskadowego jest: Zagadnienia obowiązujące na egzaminie z inżynierii oprogramowania: 13) Wadą modelu opartego na prototypowaniu jest:

INŻYNIERIA OPROGRAMOWANIA

JUnit TESTY JEDNOSTKOWE. Waldemar Korłub. Platformy Technologiczne KASK ETI Politechnika Gdańska

Karta opisu przedmiotu Zaawansowane techniki analizy systemowej oparte o modelowanie warsztaty

Przygotowanie do nowoczesnego programowania po stronie przeglądarki. (HTML5, CSS3, JS, wzorce, architektura, narzędzia)

Projektowanie obiektowe oprogramowania Wykład 9 Wzorce architektury aplikacji (1) Wiktor Zychla 2013

Inżynieria oprogramowania (Software Engineering)

Omówienie wzorców wykorzystywanych w Prism 5.0. Dominika Różycka

Warsztaty FRAME. Sygnatura warsztatu: W1 (W3) Czas trwania: 3 dni

Warstwa integracji. wg. D.Alur, J.Crupi, D. Malks, Core J2EE. Wzorce projektowe.

Uniwersytet Łódzki Wydział Matematyki i Informatyki, Katedra Analizy Nieliniowej. Wstęp. Programowanie w Javie 2. mgr inż.

Spis treúci. 1. Wprowadzenie... 13

Inżynieria Oprogramowania w Praktyce

Scala - programowanie obiektowo-funkcyjne

Pytania i wyjaśnienia treści Specyfikacji Istotnych Warunków Zamówienia

Jak uchronić architekturę i wymagania przed chaosem? Warszawa, 27 stycznia 2016 roku

Przesłanki powstania książki... xvi Dla kogo przeznaczona jest ta książka?... xvi Co znajdziemy wewnątrz książki?... xvii

Projektowanie architektury systemu rozproszonego. Jarosław Kuchta Projektowanie Aplikacji Internetowych

Projektowanie obiektowe oprogramowania Wzorce architektury aplikacji (2) Wykład 10 Inversion of Control Wiktor Zychla 2013

Spis treúci. Księgarnia PWN: Robert A. Maksimchuk, Eric J. Naiburg - UML dla zwykłych śmiertelników. Wstęp Podziękowania...

Zarządzanie i realizacja projektów systemu Microsoft SharePoint 2010

Zaawansowane programowanie w języku C++

Programowanie obiektowe

Projektowanie Graficznych Interfejsów Użytkownika Robert Szmurło

X-DRIVEN DESIGN, Y-DRIVEN DEVELOPMENT NICZEGO NIE ZMIENIĄ

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Część I - Załącznik nr 7 do SIWZ. Warszawa. 2011r. (dane Wykonawcy) WYKAZ OSÓB, KTÓRYMI BĘDZIE DYSPONOWAŁ WYKONAWCA DO REALIZACJI ZAMÓWIENIA

Modele bezpieczeństwa logicznego i ich implementacje w systemach informatycznych / Aneta Poniszewska-Marańda. Warszawa, 2013.

Transkrypt:

Program szkolenia: Implementacja Domain Driven Design - wzorce architektoniczne (część 2) Informacje ogólne Nazwa: Kod: Kategoria: Grupa docelowa: Czas trwania: Forma: Implementacja Domain Driven Design - wzorce architektoniczne (część 2) DDD-part2 Domain Driven Design Projektanci, architekci, programiści 2 dni 50% wykłady / 50% warsztaty Podczas szkolenia poznasz kompletny zestaw narzędzi, technik i podejść, które można zastosować od zaraz w niemal każdym projekcie - dużą część również w projektach legacy. Zakres Techniczne aspekty implementacji DDD architektury aplikacji: zarządzanie złożonością dzięki rozwarstwieniu logiki, architektury systemowej: integracja modułów, architektura zdarzeniowa zwiększająca responsywność i otwierająca na pluginy, skalowania systemu - architektura CqRS, konkretne techniki implementacji z wykorzystaniem popularnych stosów technologicznych, najlepsze praktyki Clean Code i dbanie o wysokie testability. Techniki modelowania problemów biznesowych Techniki modelowanie DDD (wzorce strategiczne i taktyczne oraz techniki lingwistyczne i wizualne) są omawiane na szkoleniu DDD-modelowanie, które powinno nastąpić w pierwszej kolejności, przed szkoleniem z zakresu implementacji. Forma Szkolenie bazuje na modelu stworzonym podczas szkolenia z zakresu modelowania, które poprzedza niniejsze szkolenie. Podczas wykładów trener omawia najlepsze praktyki implementacji wzorców architektury aplikacyjnej i Building Blocks DDD Podczas warsztatów implementujemy dwa moduły systemu klasy ERP. Kolejne zadania polegają na przyrostowym dodawaniu nowych funkcjonalności w sposób ilustrujący zagadnienia teoretyczne poznane podczas poprzedzającego je wykładu. Podczas dyskusji uczestnicy mają dostęp do wiedzy technicznej trenera oraz mają możliwość zweryfikowania swoich rozwiązań z wypracowanymi przez innych uczestników szkolenia. Strona: 1/8

W czasie warsztatów uczestnicy rozwiązują postawione przed nimi problemy pracując w parach (Pair Programming), zmieniając po każdym zadaniu role: Pilot i Driver. Technika ta ma za na celu umożliwienie spojrzenia na zagadnienia z różnych perspektyw, aktywując jednocześnie więcej zasobów kognitywnych. W ramach szkolenia omawiamy oraz ćwiczymy w praktyce zarówno podstawowe jak i zaawansowane techniki DDD, takie jak: wzorce Building Blocks, wypracowanie Ubiquitous Language oraz zestaw technik Strategic Design. Projekt referencyjny Sprawdź naszą implementację przykładowego projektu DDD+CqRS: Sample Leaven. Zalety szkolenia: Omówienie najczęstszych błędów w implementacji Agregatów Najlepsze praktyki i pułapki podczas stosowania ORM i IoC Nowoczesne architektury: CqRS, Event Driven, Event Sourcing Strona: 2/8

Program szkolenia: 1. Architektura aplikacji - praktyczna implementacja koncepcji architektonicznych 1.1. Wykorzystanie IoC przy projektowaniu z myślą o jakości - otwartość projektu na rozbudowę i testy 1.1.1. Dependency Injection - pluginy zmieniające zachowanie systemu 1.1.2. Zdarzenia - pluginy dodające nowe zachowanie 1.1.3. AOP - aspekty ortogonalne (transakcje, bezpieczeństwo, audyty) 1.2. Podejście warstwowe - rozmieszczenie building blocks na warstwach 1.2.1. Strukturyzacja systemu 1.2.1.1. Moduły - budowanie 1.2.1.2. Pakiety/namespaces 1.2.2. Warstwa prezentacji 1.2.2.1. Ochrona domeny przed wyciekaniem do UI 1.2.3. Logika aplikacyjna 1.2.3.1. Projektowanie API systemu 1.2.3.2. Problem uczciwego API - wersjonowanie obiektów 1.2.4. Logika domenowa (Building Blocks DDD) 1.2.4.1. Widoczność klas - wykorzystanie zasięgu pakietowego 1.2.5. Warstwa infrastruktury 1.2.5.1. Wyzwania ORM 1.2.5.2. Pułapki architektury zdarzeniowej 2. Architektura systemu 2.1. SOA 2.1.1. Zasada jednego źródła prawdy 2.1.2. Unikanie antywzorce "Corporate Model" Strona: 3/8

2.1.3. Hermetyzacja modeli domenowych poniżej Modelu Kanonicznego 2.2. Event Driven Architecture 2.2.1. Unikanie Single Point of Failure 2.2.2. Event Broker vs Events Bus 2.2.3. Eventual Consistency - strategie 2.3. Problem transakcyjności zdarzeń 3. Implementacja Wzorców Taktycznych - Building Blocks 3.1. Encje 3.1.1. Mapowanie ORM 3.1.2. Klasy bazowe - wzorzec Layer Superclass 3.1.3. Hermetyzacja 3.1.4. Identyfikacja 3.2. Agregaty 3.2.1. Hermetyzacja i otwarcie na rozbudowę 3.2.2. Wymuszanie określonej granicy agregatu 3.2.3. Wstrzykiwanie zależności w Fabrykach 3.2.4. Wyzwania ORM 3.2.4.1. Wersjonowanie 3.2.4.2. Pułapki Lazy Loadingu 3.2.4.3. Mapowanie kompozycji UML - unikanie tabel linkujących 3.2.4.4. Dobór odpowiedniego typu kolekcji: Set, Bag, List 3.2.4.5. Koszt (ilość operacji SQL) wykorzystania każdego z typów kolekcji 3.3. Value objects 3.3.1. Immutability 3.3.2. Mapowanie ORM Strona: 4/8

3.4. Serwisy Domenowe 3.4.1. Zarządzanie przez IoC 3.5. Repozytoria 3.5.1. Wstrzykiwanie zależności 3.5.2. Aspekty ORM 3.5.2.1. Odczyt EAGER Agregatów o dobrze zaprojektowanej granicy 3.5.2.2. Kaskadowy zapis Agregatów o dobrze zaprojektowanej granicy 3.5.2.3. 3 podejścia do optymistycznego blokowania 3.5.2.3.1. Odczyt agregatów: blokowanie READ w celu zabezpieczenia obiektów tworzonych na podstawie odczytywanych agregatów 3.5.2.3.2. Zapis agregatów: blokowanie WRITE korzenia agregaty w celi logicznej ochrony całego agregatu 3.5.3. Izolacje transakcji 3.5.4. Operacje na klasie bazowej agregatu 3.5.4.1. Wersjonowanie 3.5.4.2. Problem identyfikacji 3.5.4.3. Audyty - wykorzystanie JPA: Callbacks i Listeners 3.6. Fabryki 3.6.1. Fabryki zarządzane przez IoC 3.6.2. Wstrzykiwanie zależności do Agregatów 3.6.3. Wsparcie dla testability 3.6.4. Zarządzanie Couplingiem Agregatów 3.6.5. Teoria Couplingu C3 3.6.5.1. Call 3.6.5.2. Contain 3.6.5.3. Create Strona: 5/8

3.7. Polityki (strategie) 3.7.1. Dekorowanie 3.7.2. Wstrzykiwanie polityk jako pluginów 3.8. Zdarzenia biznesowe 3.8.1. Podejście asynchroniczne 3.8.2. Architektura pluginów 3.9. Specyfikacje 3.9.1. Modelowanie złożonych warunków biznesowych 3.9.2. Filtrowanie danych w repozytoriach 3.9.3. Dyskusja nad wydajnością 3.10. Saga - model procesu biznesowego 3.10.1. Projekt frameworka zarządzającego Sagą 3.10.2. Pułapki techniczne 3.11. Role Object 3.11.1. Model ról - gdy system powinien zachowywać się (nie tylko wyglądać) inaczej w zależności od roli domenowej użytkownika 3.12. Dodatkowe wzorce - rozszerzenia Building Blocks 3.12.1. Dekoratory Polityk - Supple Design 3.12.2. Agregat jako maszyna stanów 3.12.3. Łańcuch odpowiedzialności 3.12.4. Budowniczy 4. Praktyczne aspekty implementacji projektów opartych o DDD (implementacja w wybranych technologiach: Seam, Spring, EJB) 4.1. Building blocks idea i implementacja w wybranych technologiach (Seam, Spring, EJB) 5. Architektura Command-query Responsibility Segregation Strona: 6/8

5.1. CqRS jako rozwinięcie architektury warstwowej 5.1.1. Koncepcja intencjonalnego GUI 5.1.2. Dwa stosy warstw 5.2. Stos Write 5.2.1. Zakres odpowiedzialności 5.2.2. Modelowanie scenariuszy (orkiestracja obiektów domenowych) 5.2.3. Aspekty techniczne (zależności, transakcje) 5.2.4. Implementacje 5.2.4.1. Serwisy 5.2.4.2. Command i CommandHandler 5.2.4.3. Wykorzystanie nosql - Bazy dokumentowe 5.3. Stos Read 5.3.1. Problemy z wydajnością klasycznych podejść 5.3.2. Modelowanie kwerend 5.3.3. Projektowanie modelu do odczytu 5.3.4. Implementacja 5.3.4.1. SQL 5.3.4.2. Widoki zmaterializowane 5.3.4.3. Osobny model 5.3.4.4. Uaktualnianie modelu do odczytu 5.3.4.5. nosql - bazy grafowe 5.4. Event Sourcing 5.4.1. Sekwencja zdarzeń jako model behawioralny 5.4.2. Projekcje modelu behawioralnego na model do odczytu 5.4.3. Pojęcie Eventual Consistency Strona: 7/8

5.4.4. Implementacja Agregatów sterowanych zdarzeniami 6. Testowanie automatyczne 6.1. Strategia testowania - mapowanie piramidy testów na warstwy aplikacji 6.1.1. UI - end-to-end systemowe 6.1.2. Logika aplikacyjna - testowanie end-to-end komponentowe 6.1.3. Logika domenowa - testowanie jednostkowe 6.1.3.1. Testowanie niezmienników modelu 6.2. Cel testowania 6.2.1. Perfekcja i regresja - testy jednostkowe Building Blocks domenowych 6.2.2. Akceptacje - testy API i UI 6.3. Techniki 6.3.1. Zaślepki 6.3.1.1. Mock - metody typu command 6.3.1.2. Stub - metody typu query 6.3.2. Konstruktory Agregatów umożliwiające wprowadzenie ich w dowolny stan 6.3.3. Fabryki Agregatów zwiększające testability 6.3.4. Zarządzanie Couplingiem C3 6.4. Wzorce 6.4.1. Assembler - przygotowanie Agregatów 6.4.2. Assert Object - hipotezy biznesowe Agregatów Strona: 8/8