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ć:
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.
-
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.
-
3. Statyczna analiza kodu, formatowanie, refaktoryzacja i generowanie kodu
4. Techniki izolowania testowanego kodu i obiekty testowe w testach jednostkowych
5. Generowanie testów i danych testowych
6. Profilowanie i diagnostyka aplikacji
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?