Ślad: • tematy-2026

Propozycje tematów

Action unknown: siteexport_addpage

Propozycje tematów

1. Narzędzia wspierające pracę zespołów programistycznych: DevOps i CI/CD (ciągła integracja, ciągłe dostarczanie i ciągłe wdrażanie).

    • Boards do planowania pracy
    • Repos do przechowywania kodu
    • Pipelines do automatyzacji budowania, testowania oraz wdrażania
    • Artifacts do przechowywania i udostępniania artefaktów budowania
    • Test Plans do zarządzania testami

Prezentacja może być przygotowana przez zespół. Każdy członek kilkuosobowego zespołu powinien aktywnie uczestniczyć w prezentacji, która powinna demonstrować kompletny proces wytwarzania oprogramowania wspólnego projektu, np. realizowanego w ramach Pracowni Programowania Zespołowego. Dobrze jest pokazać:

  • organizację pracy zespołu: podział zadań, system zgłoszeń (issue tracker) oraz wybraną metodykę, np. Scrum;
  • repozytorium kodu i zespołowy sposób pracy z systemem kontroli wersji, np. GitHub Flow lub Git Flow;
  • przykładowy przepływ zmian: gałąź → commit → pull request → przegląd kodu i testy → scalenie zmian → wdrożenie;
  • automatyzację budowania, testowania i wdrażania projektu.

W przypadku indywidualnych prezentacji wystarczy zademonstrować działanie jednego z narzędzi lub procesów opisanych powyżej.

Inne narzędzia CI/CD i wspierające pracę zespołów programistycznych, które można rozważyć:

  • Bitbucket Pipelines: usługa CI/CD zintegrowana z repozytoriami Bitbucket.
  • GitLab: platforma łącząca repozytoria, zgłoszenia, przegląd kodu i CI/CD.
  • Można również omówić integrację wybranej platformy z innymi usługami, np. GitHub.

2. Automatyzacja budowania i testowania

  • CMake: konfiguracja procesu budowania projektów C i C++.
  • Maven lub Gradle: budowanie projektów Java i zarządzanie ich zależnościami.
  • npm: zarządzanie zależnościami i skryptami w projektach JavaScript i TypeScript.
  • GitHub Actions: definiowanie workflow do budowania, testowania i wdrażania, uruchamianych w odpowiedzi na zdarzenia w repozytorium.
  • Self-hosted runners for GitHub Actions: uruchamianie workflow na własnych maszynach.
  • Trunk: narzędzia wspierające kontrolę jakości kodu i automatyzację zadań deweloperskich.
  • pre-commit: zarządzanie kontrolami uruchamianymi przed zatwierdzeniem zmian, np. formatowaniem i analizą kodu.
  • Serwery CI/CD: Jenkins, Buildbot, GitLab CI/CD.

3. Statyczna analiza kodu, formatowanie, refaktoryzacja i generowanie kodu

  • ReSharper: narzędzia dla C# i .NET do analizy, nawigacji i refaktoryzacji kodu.
  • Clang, Clang-Tidy i Clang-Format: kompilator, analiza statyczna i automatyczne formatowanie kodu C/C++.
  • Włączanie analizy i formatowania do lokalnego workflow oraz potoków CI.

4. Techniki izolowania testowanego kodu i obiekty testowe w testach jednostkowych

  • Atrapy (mocki), stuby i inne obiekty testowe: czym się różnią i kiedy warto ich używać.
  • Biblioteki dla .NET: Moq, FakeItEasy i NSubstitute.
  • Mockito: biblioteka do tworzenia obiektów testowych w Javie.

5. Generowanie testów i danych testowych

  • AutoFixture oraz atrybut AutoData: automatyczne przygotowywanie danych testowych.
  • Narzędzia AI do generowania testów: weryfikacja poprawności i przydatności wygenerowanych przypadków.

6. Profilowanie i diagnostyka aplikacji

  • Narzędzia diagnostyczne Visual Studio: profilowanie instrumentacyjne i statystyczne (sampling), analiza wydajności oraz diagnostyka pamięci.
  • Narzędzia JetBrains dotMemory i dotTrace: analiza użycia pamięci i wydajności aplikacji .NET.
  • Orbit: profiler do analizy wydajności aplikacji m.in. w C/C++, Rust i Go.
  • gprof: profiler dla programów w C i C++.
  • Valgrind: narzędzia do wykrywania błędów pamięci i profilowania programów w systemie Linux.

7. Konteneryzacja

  • Docker: budowanie obrazów i uruchamianie aplikacji w kontenerach.
  • Podman: narzędzie zgodne z wieloma poleceniami Dockera, umożliwiające uruchamianie kontenerów bez uprawnień administratora.
  • Docker Compose: definiowanie i uruchamianie aplikacji składających się z wielu usług.
  • Kubernetes: wdrażanie, skalowanie i zarządzanie aplikacjami składającymi się z kontenerów.

8. Wykorzystanie narzędzi AI w procesie wytwarzania oprogramowania

  • Generowanie i objaśnianie kodu, automatyczna recenzja zmian, tworzenie opisów commitów oraz generowanie testów jednostkowych.
  • Konfigurowanie agentów programistycznych, np. w VS Code z GitHub Copilot.
  • Ollama: uruchamianie modeli językowych lokalnie.
  • Weryfikacja wyników generowanych przez AI, ograniczenia narzędzi i ochrona poufnego kodu.

9. Inne narzędzia

Zaproponujcie narzędzie lub praktykę stosowaną w branży, której nie obejmują powyższe tematy i która nie jest ujęta w programie innych przedmiotów na kierunku IS. Jakich narzędzi używacie w pracy lub projektach?