Ślad: • npr

Narzędzia programistyczne

Writing /home/grochu/public_html/wiki/data/cache/c/c3786f3d33d8e286edee2f557c359df5.i failed
Unable to save cache file. Hint: disk full; file permissions; safe_mode setting.
Writing /home/grochu/public_html/wiki/data/cache/a/a0a71d699b73edcfffe0f7c139997d88.i failed
Writing /home/grochu/public_html/wiki/data/cache/c/c3786f3d33d8e286edee2f557c359df5.metadata failed
Writing /home/grochu/public_html/wiki/data/cache/a/a08a5427568ddd3b80fcf6406ca2d33d.i failed
Writing /home/grochu/public_html/wiki/data/cache/a/a08a5427568ddd3b80fcf6406ca2d33d.metadata failed
Writing /home/grochu/public_html/wiki/data/cache/c/c3786f3d33d8e286edee2f557c359df5.i failed
Unable to save cache file. Hint: disk full; file permissions; safe_mode setting.
Writing /home/grochu/public_html/wiki/data/cache/a/a0a71d699b73edcfffe0f7c139997d88.i failed
Unable to save cache file. Hint: disk full; file permissions; safe_mode setting.
Writing /home/grochu/public_html/wiki/data/cache/a/a0a71d699b73edcfffe0f7c139997d88.i failed
Unable to save cache file. Hint: disk full; file permissions; safe_mode setting.
Writing /home/grochu/public_html/wiki/data/cache/a/a0a71d699b73edcfffe0f7c139997d88.metadata failed

Narzędzia programistyczne

W semestrze zimowym 2026/27 laboratorium odbywa się zdalnie za pośrednictwem platformy Moodle
https://moodle.umk.pl/WFAIIS/course/view.php?id=23

Forma prezentacji

Prezentacja powinna zawierać:

  • krótkie wprowadzenie do tematu i omówienie najważniejszych pojęć, przedstawione na slajdach lub w notatce (najlepiej w formacie PDF);
  • praktyczną demonstrację wybranych zastosowań narzędzia, zaprezentowanie jego głównych możliwości, korzyści, wad i ograniczeń;
  • co najmniej dwa pytania dotyczące najważniejszych, zdaniem autorów, zagadnień związanych z tematem. Pytania zostaną wykorzystane na kolokwium. Preferowane są pytania wymagające krótkiej (jednolinijkowej) odpowiedzi lub pytania testowe wielokrotnego wyboru z jedną poprawną odpowiedzią.
  • czas trwania około 20–30 minut.

Tematy dotyczące rozbudowanych narzędzi (np. Azure DevOps) mogą być realizowane w grupach. W takim przypadku każdy członek grupy powinien aktywnie uczestniczyć w prezentacji, przedstawiając swoją część tematu, a czas całkowitej prezentacji będzie odpowiednio dłuższy.

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?

2026/10/07 16:06