Topics for the laboratory.

This commit is contained in:
Paweł Dyda 2022-10-03 18:53:34 +02:00
parent 311def200a
commit daf780bd6e

View File

@ -18,3 +18,79 @@ Wymagania: Znajomość zasad programowania obiektowego, wiedza z zakresu: Techno
Systemów Operacyjnych, Baz Danych. Umiejętność pracy z materiałami dodatkowymi, samodzielnego
pozyskiwania informacji i analizy przykładów.
# Zagadnienia poruszane na laboratorium
1. Przygotowanie środowiska programistycznego:
- utworzenie repozytorium,
- wybór edytora kodu źródłowego,
- logowanie komunikatów.
- pomiar pokrycia kodu testami,
- automatyczna weryfikacja kodu,
- automatyzacja (zapewnienie testowania, kompilowania, pomiaru pokrycia kodu i jego weryfikacji,
oraz budowy artefaktów programistycznych za pomocą jednego polecenia),
2. Programowanie sterowane przez testy:
- rodzaje testów,
- testy jednostkowe:
- Red-Green-Refactor;
- testy behawioralne;
- asercje;
- mockowanie;
- testy sparametryzowane,
- testy eksploracyjne,
- debuggowanie kodu:
- dobre praktyki,
- krokowe uruchamianie programu,
- przerwania warunkowe,
- zdalne debuggowanie.
3. Paradygmat programowania funkcyjnego:
- logika predykatów,
- funkcje i ich składanie,
- wyrażenia lambda,
- wzorzec projektowy map-reduce,
- wzorzec projektowy Maybe (wartości opcjonalne) i obsługa wartości `null`,
- wzorzec projektowy Try: obsługa wyjątków,
- wzorzec projektowy Either i Railway Oriented Programming,
- algorytm dziel i zwyciężaj na przykładzie wielowątkowego przetwarzania strumieniowego.
4. Serializacja i deserializacja danych:
- wczytywanie i zapisywanie danych w XML,
- wczytywanie i zapisywanie danych w JSON.
5. Mapowanie obiektowo-relacyjne (ORM):
- obiekty do transferu danych (DTO),
- obiekty dostępu do danych (DAO),
- model CRUD,
- optymalizacja dostępu (natywne zapytania SQL).
6. Usługi sieciowe:
- dostęp do zewnętrznych usług sieciowych REST:
- z linii poleceń (curl);
- z dedykowanej aplikacji klienckiej;
- z własnoręcznie napisanego kodu,
- tworzenie usług sieciowych w oparciu o REST API:
- metody dostępu (GET, POST, PUT, DELETE);
- obsługa nieprawidłowych żądań: kody błędów;
- obsługa różnych formatów wartości zwracanej,
- obsługa generowania pliku "w locie",
- obsługa wgrywania plików na serwer.
7. Serwery aplikacji:
- osadzanie aplikacji,
- monitorowanie osadzonej aplikacji,
- debuggowanie aplikacji (patrz zdalne debuggowanie).
8. Interfejs użytkownika:
- serwowanie plików statycznych,
- obsługa odwołań i przekierowań,
- integracja z zewnętrznym frameworkiem.
9. Integracja usług sieciowych:
- zabezpieczanie usług OAuth,
- autoryzacja i korzystanie z zewnętrznych usług.
# Kryteria zaliczenia
Zaliczenie zajęć polega na (inkrementalnym!) przygotowaniu projektu, który
pokrywa zagadnienia poruszane na zajęciach.