Jakość w C++

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

Wyróżniki szkolenia

  • Kompleksowe podejście do szeroko rozumianej jakości
  • Nauka w oparciu o rzeczywiste przykłady
  • Nacisk na pisanie poprawnego, czystego i wydajnego kodu

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. Wstęp: quality – czy to tylko testowanie?
    1. Czym jest kompleksowe podejście do szeroko rozumianej jakości?
      1. Typowe problemy natury technicznej, biznesowej i personalnej
      2. Praca nad wymaganiami przyrastającymi w czasie i konieczność regresyjnego podejścia do jakości
    2. Pierwsze rozmyślania architektoniczne: złożoność esencjonalna i przypadkowa
    3. Co i jak testować
      1. Uporządkowanie tematyki testowania: koncept (odwróconej) piramidy testów
      2. V-model ze szczególnym naciskiem na fundament: „coding"
      3. Metryki jakości kodu, czyli od czego zacząć by zacząć dbać o jakość?
  2. Przystanek 1: proces budowania kodu
    1. Jak powinien budować się kod by mu ufać?
    2. Flagi kompilacji absolutnie wymagane
    3. Unifikacja i automatyzacja budowania wszystkich części kodu na tzw. „jedną modłę”
  3. Jak pisać kod by móc go testować?
    1. TDD = Test Driven Development
      1. Czym jest?
      2. Kiedy (nie) stosować TDD?
      3. Jak pracować z kodem „legacy”, czyli TDR = Test Driven Refactoring
      4. Co trzeba wiedzieć by móc z powodzeniem stosować te metody?
    2. Architektura
      1. Architektura systemowa vs aplikacyjna
      2. Przypisywanie odpowiedzialności obiektom – metoda dziel i zwyciężaj
      3. Jak poprawnie interpretować OOP by (z czasem) nie powstał legacy code?
      4. Inwersja kontroli i wstrzykiwanie zależności
      5. Systemy sterowane zdarzeniami vs sekwencyjne
      6. Architektura pluginowa
  4. Testy deweloperskie po raz pierwszy: Testy Jednostkowe = UT = Unit Test
    1. UT vs (odwrócona) piramida testów
    2. Kontekst i środowisko uruchomieniowe UT
    3. Z czego powinien być zbudowany dobry testy, czyli odpowiedź na pytanie co powinien zawierać test?
      1. Obiekt i jego wymagania – granica testu
      2. Ustalenie i gromadzenie danych wejściowych
      3. Ustawienie poprawność sprawdzeń
    4. Framework i jego możliwości na rzecz automatycznych testów
    5. Zaślepianie zależności: dummy, stub, mock
    6. „Czas to pieniądz”, czyli implementacja inteligentnych zaślepek z wykorzystaniem framework-ów
    7. Badanie pokrycia kodu testami
      1. Narzędzia i automatyzacja procesu
      2. Typowe problemy: statystyki celem samym w sobie, lawinowe zmiany testów przy drobnych zmianach...
  5. Testy developerskie po raz drugi: Testy Modułowe = MT = Module Test
    1. Czym jest test modułowy?
    2. UT vs MT vs (odwrócona) piramida testów
    3. Jak zaprojektować MT?
    4. Zalety MT w szczególności przy pracy z kodem „legacy”
    5. UT, MT vs KPI(s) stawiane przez biznes, czyli odpowiedź na pytanie jak wyważyć mus zaspokojenia statystyk biznesowych i jakości testów w szerokim horyzoncie czasu
    6. Automatyzacja UT i MT na rzecz wspólnych statystyk
  6. Pozostałe metryki jakości
    1. Statyczna analiza kodu
      1. CPPCheck
      2. Clang Static Analyzer
      3. Automatyzacja
    2. Złożoność cyklometryczna
      1. Co to jest i jakie ma znaczenie, szczególnie przy pracy z kodem „legacy”
      2. Narzędzie CCCC
      3. Automatyzacja
    3. CPD – wykrywanie metody „Copiego i Pasta”
      1. Narzędzie PMD: CPD
      2. Znacznie CPD dla dobrego startu procesu refaktoryzacji kodu
      3. Automatyzacja
  7. Refaktoryzacja
    1. Czym (nie) jest refaktoryzacja?
    2. Kiedy wolno i kiedy nie wolno refaktoryzować?
    3. Jak ją dobrze wykonać?
    4. Jak przekonać „górę”, że to się opłaci?
    5. Moc narzędzi
  8. Narzędzia do zaawansowanej diagnostyki kodu C/C++
    1. Debugger tekstowy GDB
      1. Rola GDB w procesie dbania o jakość ze szczególnym uwzględnieniem MT
      2. Jak z tym wystartować?
      3. Debugging zdalny
      4. Analiza plików coredump i ich generowanie (gcore) z uwzględnieniem problemów wynikających ze współbieżności
    2. Badanie wycieków pamięci: Valgrind: Memcheck
      1. Czym są wycieki pamięci i dlaczego są takie groźne?
      2. Podstawowe użycie Memcheck-a i analiza wyników
      3. Automatyzacja wywołań Memcheck-a i rola MT
    3. Analiza wydajności: Valgrind: Callgrind
      1. Co to jest profileing i jaka jest jego rola w procesie dbania o jakość ze szczególnym naciskiem na prace refaktoryzacyjne oraz MT?
      2. Podstawowe użycie Callgrind-a i analiza wyników
      3. Automatyzacja wywołań Callgrind-a i rola MT
    4. Analiza wielowątkowości: Valgrind: Helgrind
      1. Typowe problemy z wielowątkowością: wyścig, dead-lock
      2. Podstawowe użycie Helgrind-a i analiza wyników
      3. Automatyzacja wywołań Helgrinda-a i rola MTWstęp: quality – czy to tylko testowanie?


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.