Budowa i architektura złożonych systemów w języku C++
LICZBA DNI: 4 (32h)
KOD KURSU: CPP/ARCH
Weź udział w szkoleniu
Termin
Lokalizacja
Cena / os
9
lutego
Warszawa,
Kraków,
Łódź,
Wrocław,
Gdańsk,
Poznań,
Zdalne,
Termin
9
lutego
Lokalizacja
Warszawa,
Kraków,
Łódź,
Wrocław,
Gdańsk,
Poznań,
Zdalne,
Cena / os
Powiadom
o kolejnych terminach
O szkoleniu
DLA KOGO?
Średnio zaawansowanych i zaawansowanych programistów programujących w języku C++ w środowiskach tworzenia aplikacji dla przedsiębiorstw
Osób znających w stopniu podstawowym i zaawansowanym procesów związanych z budowaniem dokumentacji projektowej, jednocześnie biorących bezpośredni udział w tworzeniu oprogramowania
Programistów tworzących oprogramowanie na platformie systemowej GNU/Linux lub MS Windows
Programistów tworzących aplikacje głównego nurtu oraz aplikacje sieciowe
WYMAGANIA
Biegłego posługiwania się wybranym środowiskiem IDE (Eclipse, Visual Studio, NetBeans, Vim)
Znajomości koncepcji programowania obiektowego, systemowego i aplikacyjnego
Biegłej znajomości narzędzi do tworzenia aplikacji z rodziny gcc i binutils
Umiejętności posługiwania się narzędziem debuggera
Znajomości koncepcji właściwych programowaniu w języku C++ na poziomie średnio i zaawansowanym
Znajomości tworzenia kodu szablonowego oraz posługiwania się dowolną implementacją biblioteki standardowej
ZALETY
Szczególny nacisk kładziemy na zagadnienia związane z konsolidacją plików obiektów rozbudowanych architektur, przyśpieszeniem konsolidacji oraz stosowaniem podstawowych wzorców tak projektowych jak i architektonicznych
Uwypuklamy aspekty prawidłowego definiowania kluczowych wymagań co do architektury, zdefiniowania modelu prawidłowego wykonania procesu budowy, a także definiowanie elastycznych interfejsów aplikacyjnych
Szkolenie odpowiada potrzebom zaawansowanych programistów oraz architektów systemów. Jako bibliotek i narzędzi wspierających używamy oprogramowania otwartego
Szczególne znaczenie przykładamy do określenia czynników separujących elementy przetwarzania na etapie kompilacji, generowania kodu, realizacji algorytmów constexpr
Zajęcia prowadzone są przez doświadczonych praktyków, którzy na co dzień wdrażają techniki i procedury posługując się technologiami związanymi z językiem C++ w rzeczywistych projektach. W trakcie zajęć używamy technologii i środowisk otwartych
Cele szkolenia
Kształcenie umiejętności i rozwijanie wiedzy dotyczącej definiowania architektury systemu w języku C++
Osadzenie narzędzi i procesów tworzenia oprogramowania w realiach współczesnych wymagań Inżynierii Oprogramowania
Dokonanie konsolidacji wiedzy i uzupełnienie braków w kompetencjach w zakresie aspektów przyśpieszenia budowy złożonych systemów
Zapoznanie się z zaawansowanymi mechanizmami związanymi z warstwą ABI (ang. Application Binary Interface) i API (ang. Application Programmer Interface) tworzonych systemów
Program
Wprowadzenie do zasad budowy architektury
- Przypomnienie pojęć dotyczących analizy obiektowej
- Główne elementy i zasady modelowania
- Perspektywy rozwiązania informatycznego
- Proces wytwórczy, a model
Analiza procesów biznesowych
- Pojęcie procesu biznesowego
- Modelowanie procesów biznesowych - przegląd metod i narzędzi z punktu widzenia architekta
- Procesy biznesowe, a architektura aplikacji
- Pojęcie domeny rozwiązania
Analiza wymagań z punktu widzenia architekta
- Wymagania wpływające na wybór architektury oprogramowania w języku C++
- Wzorce architektury i ich aspekty właściwe dla języka C++
DDD (ang. Domain Driven Design) - przegląd zagadnień
- Elementy i wzorce DDD
- DDD w praktyce projektu w języku C++
C++, a rozbudowana architektura
- Przegląd istotnych zagadnień związanych z konsolidacją plików obiektów
- Reguły separacji warstw i komponentów w języku C++
- Szkielety aplikacyjne wspierające budowę złożonych architektur (ang. Frameworks)
Architektura logiczna
- Projektowanie komponentów
- Projektowanie obiektów i interfejsów
- Projektowanie funkcji
- Wzorce projektowe GoF - przegląd
- Wzorce aplikacji dla przedsiębiorstw - przegląd
Projekt fizyczny
- Komponent - zakres obiektów fizycznych
- Hierarchia fizyczna
- Aspekty testowalności
- Izolacja fizyczna - techniki izolacji (częściowe i całkowite)
- Interfejsy proceduralne
- Pakiety w warstwie fizycznej
Typowe problemy związane z rozwojem aplikacji
- Koszt i konieczność refaktoryzacji
- Wzorce refaktoryzacji
- Zarządzanie pamięcią w złożonych aplikacjach w języku C++
- Zagadnienia aspektowe w aplikacjach w języku C++ i ich implementacja
- Problem zależności cyklicznych
- Rodzaje odwrócenia kontroli IoC (ang. Inversion of Control) i konsekwencje stosowania w języku C++
Cykl życia oprogramowania i wpływ na architekturę i projekt
- Rodzaje cyklu życia aplikacji - wpływ na projekt i aspekty jakości aplikacji
- Techniczne aspekty wspierające implementację cyklu życia aplikacji
- Narzędzia komercyjne
- Narzędzia na licencjach wolnych
- Programowanie obiektowe - czynniki wpływające na proces analizy i implementacji
- Programowanie wielowątkowe - wady i zalety
- DSL (ang. Domain Specific Language)
- Maszyna stanu
- Programowanie funkcyjne (metaprogramowanie w języku C++)
- Przetwarzanie w czasie kompilacji (constexpr)
- Nowoczesne metody zarządzania zasobami w języku C++
- Przetwarzanie w czasie kompilacji na poziomie szablonów i funkcji constexpr
- Aspekty praktyczne budowy architektury korporacyjnej
- Proces budowy aplikacji w języku C++
Przegląd narzędzi umożliwiających budowanie architektury
Dodatkowe paradygmaty i modele - aspekty projektowe
Nowe standardy języka C++ - na co zwrócić uwagę
