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

Podobne dokumenty
Program szkolenia: Zaawansowane programowanie w C++

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

Programowanie Zespołowe

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

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

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

Wzorce projektowe. dr inż. Marcin Pietroo

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

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

Techniki efektywnego testowania kodu dla programistów Java (Spock

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

szkolenia pod drzewem Wybrane Techniki XP bnd 2008 Tomasz Włodarek. Materiał udostępniany na podstawie licencji Creative Commons (by-nc-nd) 1.00.

Zaawansowane programowanie w C++ (PCP)

Wzorce projektowe i refaktoryzacja

Dobry start do profesjonalnego programowania w C++ dla. początkujących programistów

Produktywne tworzenie aplikacji webowych z wykorzystaniem Groovy i

Wprowadzenie do programowania aplikacji mobilnych

Kod doskonały : jak tworzyć oprogramowanie pozbawione błędów / Steve McConnell. Gliwice, cop Spis treści. Wstęp 15.

Program szkolenia: Jenkins - Continuous Integration

Receptury - niezbędnik projektanta i architekta

Program szkolenia: Wzorce projektowe w C++

Programowanie obiektowe - 1.

Program szkolenia: Continuous Integration i Git

ANGULARJS TWORZENIE APLIKACJI INTERNETOWYCH

Scala - programowanie obiektowo-funkcyjne

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

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

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

Projektowanie obiektowe Wzorce projektowe. Wprowadzenie do wzorców projektowych

Java Persistence API - zagadnienia zaawansowane

Projektowanie obiektowe oprogramowania Wykład 4 wzorce projektowe cz.i. wzorce podstawowe i kreacyjne Wiktor Zychla 2017

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

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ),

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

Programowanie obiektowe Object programming. Elektrotechnika II stopień (I stopień / II stopień) Ogólno akademicki (ogólno akademicki / praktyczny)

Technologia Programowania 2016/2017 Wykład 4

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

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

Modelowanie i Programowanie Obiektowe

Laboratorium Informatyka (I) AiR Ćwiczenia z debugowania

Etapy życia oprogramowania. Modele cyklu życia projektu. Etapy życia oprogramowania. Etapy życia oprogramowania

Zaawansowane programowanie w języku C++

Wzorce Strukturalne. Adapter: opis. Tomasz Borzyszkowski

Ewolucyjna architektura

Projektowanie obiektowe oprogramowania Wykład 4 wzorce projektowe cz.i. wzorce podstawowe i kreacyjne Wiktor Zychla 2015

Projektowanie, tworzenie aplikacji mobilnych na platformie Android

Rok akademicki: 2012/2013 Kod: ZIE s Punkty ECTS: 3. Poziom studiów: Studia I stopnia Forma i tryb studiów: -

NAJLEPSZE STRATEGIE SKUTECZNYCH PROGRAMISTÓW. TECHNIKI PRACY Z KODEM KOD: NSKOD

Testowanie oprogramowania

Wzorce projektowe Michał Węgorek

Krakowska Akademia im. Andrzeja Frycza Modrzewskiego. Karta przedmiotu. obowiązuje studentów, którzy rozpoczęli studia w roku akademickim 2012/2013

Etapy życia oprogramowania

Program szkolenia: JavaScript Craftsmanship

Wzorce projektowe. dr inż. Marcin Pietroo

Programowanie obiektowe 2 - opis przedmiotu

Szkolenie wycofane z oferty. Programowanie w JavaScript (zawiera jquery)

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

Testowanie oprogramowania. Piotr Ciskowski

Narzędzia podnoszące jakość procesu wytwarzania i wdrażania

Komentarz. W poszukiwaniu zaginionego wzorca

Egzamin / zaliczenie na ocenę*

Wykład 8. Testowanie w JEE 5.0 (1) Autor: Zofia Kruczkiewicz. Zofia Kruczkiewicz

Główne założenia XP. Prostota (Simplicity) Komunikacja (Communication) Sprzężenie zwrotne (Feedback) Odwaga (Agressiveness)

Programowanie obiektowe 1 - opis przedmiotu

Programowanie obiektowe

Budowa aplikacji webowej w oparciu o Maven2 oraz przykłady testów jednostkowych. Wykonał Marcin Gadamer

Kurs programowania. Wstęp - wykład 0. Wojciech Macyna. 22 lutego 2016

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL III TI 4 godziny tygodniowo (4x30 tygodni =120 godzin ),

Tematy seminariów wg Roger S. Pressman, Praktyczne podejście do oprogramowania, WNT, Zofia Kruczkiewicz

Tematy seminariów wg Roger S. Pressman, Praktyczne podejście do oprogramowania, WNT, Zofia Kruczkiewicz

Refaktoryzacja do wzorców projektowych

Zad. 5: Układ równań liniowych liczb zespolonych

Programowanie obiektowe

Programowanie współbieżne Wykład 8 Podstawy programowania obiektowego. Iwona Kochaoska

Zofia Kruczkiewicz - Modelowanie i analiza systemów informatycznych 1

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

Informatyka I stopień (I stopień / II stopień) Ogólnoakademicki (ogólno akademicki / praktyczny) stacjonarne (stacjonarne / niestacjonarne)

Spring Framework - wprowadzenie i zagadnienia zaawansowane

WYKŁAD. Jednostka prowadząca: Wydział Techniczny. Kierunek studiów: Elektronika i telekomunikacja. Nazwa przedmiotu: Język programowania C++

Acceptance Test Driven Development wspierane przez narzędzie ROBOT Framework. Edyta Tomalik Grzegorz Ziemiecki

Podstawy Programowania Programowanie Obiektowe

Wykład VII. Programowanie III - semestr III Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

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

Wykład 7. Projektowanie kodu oprogramowania

Programowanie obiektowe

PRZEWODNIK PO PRZEDMIOCIE

Wzorce projektowe cz. I. Wzorce projektowe cz. I 1/33

COMARCH IT AKADEMIA. Programista VBA w Microsoft Excel (microbootcamp)

Szkolenie wycofane z oferty

Tester oprogramowania 2014/15 Tematy prac dyplomowych

Dlaczego testowanie jest ważne?

Wykład 0 Informacje Podstawowe

PRZEWODNIK PO PRZEDMIOCIE

2. Klasy cz. 2 - Konstruktor kopiujący. Pola tworzone statycznie i dynamicznie - Funkcje zaprzyjaźnione - Składowe statyczne

JAVA. Java jest wszechstronnym językiem programowania, zorientowanym. apletów oraz samodzielnych aplikacji.

Politechnika Krakowska im. Tadeusza Kościuszki. Karta przedmiotu. obowiązuje w roku akademickim 2012/2013. Przedmioty kierunkowe

Testowanie oprogramowania Wzorce projektowe

Kontrola jakości artefaktów

Podstawy modelowania programów Kod przedmiotu

Jeśli chcesz łatwo i szybko opanować podstawy C++, sięgnij po tę książkę.

Transkrypt:

Program szkolenia: Praca z kodem legacy : strategie, naprawa błędów, refaktoryzacja oraz Informacje: Nazwa: Kod: Kategoria: Grupa docelowa: Czas trwania: Forma: Praca z kodem legacy : strategie, naprawa błędów, refaktoryzacja oraz ccpp-legacy C++ C i C++ developerzy 3 dni 40% wykłady / 60% warsztaty Szkolenie prezentuje pragmatyczne podejście do pracy z kodem legacy. Przedstawione strategie i narzędzia pozwalają przełamać strach przed zmianami w zastanym kodzie, przez co ułatwiają bezpieczne modyfikacje oraz refaktoryzację kodu kładąc szczególny nacisk na testowanie. W oparciu o rzeczywiste przykłady, uczestnicy zdobywają wiedzę i praktykę w metodycznym podejściu do zmian w zaniedbanym kodzie. Szkolenie przeznaczone jest dla programistów C++ rozwijających lub utrztmujących kod w (najczęściej) odziedziczonych projektach. Zdobyta wiedza przekłada się w praktyczny sposób na jakość dostarczanych zmian mierzoną w szerszej perspektywie czasu. Zalety szkolenia: Szkolenie prowadzone przez trenera ze dużym doświadczeniem w pracy z kodem legacy Konstrukcja techniczna szkolenia umożliwia nabycie praktycznych umiejętności wprowadzania szeroko rozumianych zmian w kodzie legacy Rzeczywiste przykłady Strona: 1/5

Szczegółowy program: 1. Legacy Code czy to tylko kod odziedziczony? 1.1. Definicja LC "oddzielenie ziarna od plew 1.1.1. Wiedza plemienna znajomość funkcjonalności i wymiana wiedzy w projekcie 1.1.2. Kod niepokryty testami 1.1.3. Zapachy kodu zbiór najczęstszych błędów/praktyk w zaniedbanym kodzie 1.1.3.1. Długa metoda brak kohezji 1.1.3.2. Powielanie kodu nie ma to jak powielać te same błędy 1.1.3.3. Eksplozja kombinatoryczna siostra powielania, czyli robię to samo na innych danych 1.1.3.4. Osobliwe rozwiązanie cichy brat powielania, czyli zrobię to samo ale w nieco inny sposób 1.1.3.5. Złożoność warunków bo trzeba napisać tak by nikt inny tego nie był w stanie zrozumieć 1.1.3.6. Rozrzucanie rozwiązania strach przed zmianami w kilku miejscach 1.1.3.7. Klasa bóg klasa może i robi wszystko 1.1.3.8. Leniwa klasa klasa nie zarabia na siebie 1.1.3.9. Obnażanie się wszystko w public 1.2. Rodzaje zmian w LC ze szczególnym ujęciem kalkulacji ryzyka na rzecz świadomego dobrania rozwiązania do klasy problemu 1.2.1. Przyczyny wprowadzania zmian 1.2.1.1. Naprawa błędów 1.2.1.2. Rozszerzanie funkcjonalności 1.2.1.3. Refaktoryzacja 1.2.2. Kalkulacja i minimalizacja ryzyka 1.2.2.1. Jasne określenie punktu widzenia klienta Strona: 2/5

1.2.2.2. Ocena klasy problemu i stopnia komplikacji wprowadzanej zmiany 1.2.2.3. Stopień opłacalności różnych rozwiązań w świetle testów 1.2.2.4. Regresja wpływ dokonanej (często jednostkowej) zmiany na szereg pozostałych funkcjonalności oraz na lokalną i globalną architekturę 1.2.2.5. Nowe testy koszt napisania i utrzymania vs. posiadanie i bezpieczeństwo kolejnych modyfikacji 2. Metodyki wprowadzania zmian jak to zrobić by nie napsuć 2.1. Naprawa błędów ze szczególnym uwzględnieniem wskaźników i tablic 2.1.1. Podejście naiwne 2.1.2. Podejście imperatywne wykorzystanie mechanizmów języka i kompilacji na rzecz bezpieczeństwa i jakości wprowadzonych poprawek (mała refaktoryzacja). 2.2. Rozszerzanie funkcjonalności 2.2.1. Podejście naiwne 2.2.2. Rozszerzania funkcjonalności w oparciu o refaktoryzację 3. Wstęp do refaktoryzacji 3.1. Czym jest dobra refaktoryzacja? 3.2. Kiedy (nie)można lub (nie)należy dokonać refaktoryzacji? 3.3. Narzędzia wspomagające 3.3.1. Cppcheck sprawdzenie poprawności kodu bez uruchamiania go 3.3.2. CPD wykrywanie zduplikowanego kodu (wstęp do refaktoryzacji właściwej) 3.3.3. CCCC lokalny stopień złożoności kodu 3.3.4. Valgrind analiza sterty (memcheck), śledzenie wskaźników (ptrcheck), sprawdzenie wielowątkowości (hellgrind) 3.4. Strategia testowanie punktem wyjścia na rzecz tworzenia bezpiecznych wysp i późniejszego scalenia ich w jeden pokryty testami kontynent 4. TDR Test Driven Refactoring 4.1. Identyfikacji newralgicznych punktów kluczem do sukcesu 4.2. Pokrycie testami newralgicznych punktów Strona: 3/5

4.2.1. Łamanie zależności zewnętrznych i lokalnych 4.2.2. Pisanie testów i wprowadzania mock ów z uchwyceniem najczęściej popełnianych błędów 4.3. Skutki cząstkowego podejścia 5. Refaktoryzacja właściwa budowa mikro/makro architektury w oparciu o wzorce 5.1. Upraszczanie kodu 5.1.1. Ekstrakcja metod 5.1.2. Zastępowanie wyrażeń warunkowych wzorcem strategii 5.1.3. Zmiana upiększeń w dekorator 5.1.4. Zastępowanie wyrażeń zmian stanu klasami stanu 5.2. Tworzenie obiektów 5.2.1. Metody tworzące egzemplarze zamiast naiwnych konstruktorów 5.2.2. Operacja tworzenia obiektów w fabryce 5.2.3. Klasy builder do hermetyzacji obiektów kompozytowych 5.2.4. Inline singleton a może zło wcielone 5.3. Uogólnianie kodu 5.3.1. Metoda szablonowa wprowadź dziedziczenie na rzecz polimorfizmu 5.3.2. Kompozyt zamiana relacji jeden do wielu 5.3.3. Obserwator dla notyfikacji 5.3.4. Adapter unifikacja interfejsów 5.3.5. Interpreter obsługa niejawnych języków 5.4. Ochrona 5.4.1. Zastępowanie typów prostych klasami value object 5.4.2. Akumulacja 5.4.3. Gromadzenie danych w parametrze zbierającym 5.4.4. Gromadzenie danych przy użyciu inspektora (visitor) Strona: 4/5

6. Wnioskowanie i zabezpieczenia 6.1. Ocena wprowadzonych zmian 6.1.1. Wyniki testów oraz ich pokrycie 6.1.2. Statyczna analiza kodu 6.1.3. Code Review część procesu dostarczania zmian z szeregiem zalet 6.2. Pętla refaktoryzaji 6.2.1. Czym jest? 6.2.2. Kiedy ją przerwać? 6.3. Testy i ich regresyjność 6.3.1. Reżim wykonywania testów: jednostkowych, modułowych, funkckjonalnych i integracyjnych 6.3.2. Wstęp do CI Contineous Integration testy ciągłą i integralną częścią produkcji kodu Strona: 5/5