Budowa i architektura złożonych systemów w języku C++
Czas trwania szkolenia:4 dni (32h)
Kod kursu:CPP/ARCH
Poziom zaawansowania:
Szkolenie na zamówienie
Szkolenie dostosowane do potrzeb Twojego zespołu. Dostępne wyłącznie na zamówienie.
- Dostosowany program
- Indywidualna wycena
- Dowolny termin
O szkoleniu Budowa i architektura złożonych systemów w języku C++
W cenie otrzymasz:
- Materiały szkoleniowe
- Certyfikat ukończenia szkolenia
- W przypadku szkolenia w trybie stacjonarnym zapewnimy Ci również lunch oraz sprzęt niezbędny do nauki
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
- Praktyka przed teorią - wszystkie szkolenia technologiczne prowadzone są w formie warsztatowej. Konieczna teoria jest wyjaśniana na przykładzie praktycznych zadań
- Konkretne umiejętności - w ramach każdego szkolenia rozwijamy praktyczne umiejętności związane z daną technologią i tematyką
- Nauka z praktykami - wszyscy trenerzy na co dzień pracują w projektach, gwarantuje to dostęp do eksperckiej wiedzy i praktycznego know-how
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++