Programowanie współbieżne i rozproszone w języku C++: taktyki, wzorce, narzędzie wspomagające i testowanie.

Kod: ccpp-paralel C++
Kategoria: C i C++
Forma: 35% wykłady / 65% warsztaty
Czas trwania: 3-4 dni
Odbiorcy: developerzy
Zapisy: Indywidualne zamówienie i dopasowanie dla grupy.
Logistyka: W siedzibie klienta lub w innym dowolnym miejscu.

Szkolenie prezentuje faktyczną możliwość (a nawet konieczność) stosowania Wzorców Projektowych podczas implementacji kooperujących aplikacji wieloprocesowych i wielowątkowych.

Wszystkie wzorce przedstawiane są na przykładach wyciągniętych z rzeczywistych projektów.

W opozycji do akademickiego/książkowego podejścia, uczestnicy szkolenia zdobywaną stopniowo wiedzę jednocześnie wykorzystują i testują przy okazji implementacji zadań warsztatowych, które odzwierciedlają wyzwania napotykane w rzeczywistości, tworząc przy tym skalowalny kod, otwarty na zmiany i podatny na testowanie.

Szkolenie przeznaczone jest dla programistów C++ tworzących aplikacje serwerowe, chcących poszerzyć swoje kompetencje w zakresie profesjonalnych technik programistycznych zwiększających jakość kodu i projektu. Zdobyta wiedza przekłada się w praktyczny sposób na produktywność mierzoną w szerszej perspektywie czasu.

Wyróżniki szkolenia

  • Skupienie uwagi na "fizyce" problemu programowania współbieżnego i rozproszonego
  • Wybór jedynie użytecznych wzorców i technik
  • Rzeczywiste 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.

  1. OOP – Object Oriented Programming – przypomnienie podstawowych zasad programowania obiektowego w świetle rzeczywistych problemów.
    1. Paradygmat programowania obiektowego
      1. Analiza paradygmatu programowania obiektowego i jego poprawna interpretacja
      2. GRASP – General Responsibility Assignment Software Patterns (Principles).
      3. 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).
      4. Defense In Depth – programowanie defensywne
    2. POSA – Pattern Oriented Software Architecture – architektura oparta na wzorcach
      1. Wzorzec – czym jest?
      2. Pattern language – architektura rozwiązania (rozwiązań) oparta na wzorcach
      3. Framework – zbiór reużywalnych, zaimplementowanych wzorców i funkcjonalności
  2. Programowanie Współbieżne – podstawowe pojęcia w starciu z rzeczywistością (wymaganiami funkcjonalnymi i niefunkcjonalnymi).
    1. Aplikacja, program, proces, wątek – poprawne rozumienie podstawowej nomenklatury
    2. Synchronizacja
      1. Zrozumienie pojęcia sekcji krytycznej
      2. Mechanizmy blokad i oczekiwania
      3. Pułapki i typowe błędy
    3. Idiomy i wzorce wspomagające programowanie równoległe
      1. Wątek, grupa wątków, pula wątków
      2. Kolejki – dobór algorytmu do problemu, a nie odwrotnie!
      3. Wraper-fasada vs Proxy – różnice oraz aspekt przenośności
      4. Template method vs RAII (Resource Acquisition Is Initialization) – różnice oraz możliwość połącznenia
      5. Monitor – upraszczanie zależności
    4. Prawa równoległości
      1. Amdahl vs Gustawson
      2. Konfrontacja prawideł matematycznych a szara rzeczywistość
    5. Testowanie
      1. Testowanie jednostkowe
      2. Testowanie modułowe
    6. Third-party w ujęciu rozmaitych pułapek
      1. Zrozumienie kontekstu języka C++ - język niskopoziomowy
      2. POSIX vs reszta świata oraz aspekt C++11
      3. Przegląd bibliotek
      4. Narzędzia wspomagające
  3. Komunikacja międzyprocesowa – wymiana danych pomiędzy aplikacjami zdalnymi i lokalnymi w kontekście rzeczywistych problemów.
    1. Potoki i gniazda – różnice i praktyczne zastosowanie
    2. Demultipleksacja – obsługa komunikacji z wielu źródeł
      1. Select, poll, epoll
      2. Wykorzystanie podejścia „Event Oriented”
      3. Analiza aspekt współbieżności – dobór wzorca i możliwość podmiany
    3. Wzorce
      1. Wrapper-fasada – obiektowe modele dla kodu „error prone” i legacy API na rzecz reużywalnych komponentów
      2. Proxy – implementacja konkretnych funkcjonalności z użyciem przygotowanych fasad i wrapper’ów
      3. Silniki obsługi zdarzeń
        1. Observer, reactor, proactor, half sync/half asyc, thread pool – niby to samo, a jednak inaczej
        2. Event broker
    4. Testowanie
      1. Unit vs Module –które części kodu i jak je testować
      2. Stress tests – „dmuchanie na zimne”
      3. Testowanie funkcjonalne
    5. Third-party i gotowe rozwiązania
      1. Narzędzia wspomagające
        1. Valgrind – poprawność użycia sterty (memcheck), przepływ wskaźników (ptrcheck), poprawność wielowątkowości (hellgrind)
        2. Cppcheck – analiza statyczna kodu
        3. CPD – wykrywanie zduplikowanego kodu i kontekst kodu legacy
      2. Elementy ułatwiające pisanie aplikacji rozproszonych
        1. RPC – Remote Procedure Call – standardy wywołań funkcji zdalnych takie jak: CORBA, WebServices
        2. REST – Representational State Transfer – bardziej filozofia niż formalny standard
      3. Biblioteki i frameworki (zakres szczegółowości do uzgodnienia)
        1. Boost::ASIO
        2. POCO
        3. ACE i TAO


Pobierz program w formacie PDF

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.

Zamów 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ń


Twoje dane osobowe przetwarzamy, aby udzielić odpowiedzi na Twoje pytanie. Administratorem Twoich danych osobowych jest Bottega It Minds Sławomir Sobótka. Przysługuje Ci prawo wniesienia sprzeciwu wobec przetwarzania, prawo dostępu do danych, prawo żądania ich sprostowania, usunięcia lub ograniczenia ich przetwarzania. Szczegółowe informacje dotyczące przetwarzania Twoich danych osobowych znajdują się TUTAJ.