Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

zajecia:npr_2026_2:tematy-2026 [2026/10/04 18:33] – utworzono - edycja zewnętrzna 127.0.0.1zajecia:npr_2026_2:tematy-2026 [2026/10/11 09:25] (aktualna) – edycja zewnętrzna 127.0.0.1
Linia 1: Linia 1:
 ====== Propozycje tematów ====== ====== 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).
 +  * [[https://azure.microsoft.com/pl-pl/products/devops|Azure DevOps]]
 +    * **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 [[https://dev.to/heratpatel/git-flow-a-successful-git-branching-model-1j6f|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ć: 
 +   * [[https://bitbucket.org/product/features/pipelines|Bitbucket Pipelines]]: usługa CI/CD zintegrowana z repozytoriami Bitbucket.
 +   * [[https://about.gitlab.com/|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**
 +  * [[https://cmake.org/|CMake]]: konfiguracja procesu budowania projektów C i C%%++%%.
 +  * [[https://maven.apache.org/|Maven]] lub [[https://gradle.org/|Gradle]]: budowanie projektów Java i zarządzanie ich zależnościami.
 +  * [[https://www.npmjs.com/|npm]]: zarządzanie zależnościami i skryptami w projektach JavaScript i TypeScript.
 +  * [[https://github.com/features/actions|GitHub Actions]]: definiowanie workflow do budowania, testowania i wdrażania, uruchamianych w odpowiedzi na zdarzenia w repozytorium.
 +  * [[https://docs.github.com/en/actions/hosting-your-own-runners|Self-hosted runners for GitHub Actions]]: uruchamianie workflow na własnych maszynach.
 +  * [[https://trunk.io/|Trunk]]: narzędzia wspierające kontrolę jakości kodu i automatyzację zadań deweloperskich.
 +  * [[https://pre-commit.com/|pre-commit]]: zarządzanie kontrolami uruchamianymi przed zatwierdzeniem zmian, np. formatowaniem i analizą kodu.
 +  * Serwery CI/CD: [[https://www.jenkins.io/|Jenkins]], [[https://docs.buildbot.net/latest/index.html|Buildbot]], [[https://docs.gitlab.com/ee/ci/|GitLab CI/CD]].
 +
 +3. **Statyczna analiza kodu, formatowanie, refaktoryzacja i generowanie kodu**
 +  * [[https://www.jetbrains.com/resharper/|ReSharper]]: narzędzia dla C# i .NET do analizy, nawigacji i refaktoryzacji kodu.
 +  * [[https://clang.llvm.org/|Clang]], [[https://clang.llvm.org/extra/clang-tidy/|Clang-Tidy]] i [[https://clang.llvm.org/docs/ClangFormat.html|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: [[https://github.com/devlooped/moq|Moq]], [[https://fakeiteasy.github.io/|FakeItEasy]] i [[https://nsubstitute.github.io/|NSubstitute]].
 +  * [[https://site.mockito.org/|Mockito]]: biblioteka do tworzenia obiektów testowych w Javie.
 +
 +5. **Generowanie testów i danych testowych**
 +  * [[https://autofixture.github.io/|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 [[https://www.jetbrains.com/dotmemory/|dotMemory]] i [[https://www.jetbrains.com/dottrace/|dotTrace]]: analiza użycia pamięci i wydajności aplikacji .NET.
 +  * [[https://github.com/google/orbit|Orbit]]: profiler do analizy wydajności aplikacji m.in. w C/C%%++%%, Rust i Go.
 +  * [[https://sourceware.org/binutils/docs/gprof/|gprof]]: profiler dla programów w C i C%%++%%.
 +  * [[https://valgrind.org/info/tools.html|Valgrind]]: narzędzia do wykrywania błędów pamięci i profilowania programów w systemie Linux.
 +
 +7. **Konteneryzacja**
 +  * [[https://www.docker.com/|Docker]]: budowanie obrazów i uruchamianie aplikacji w kontenerach.
 +  * [[https://podman.io/|Podman]]: narzędzie zgodne z wieloma poleceniami Dockera, umożliwiające uruchamianie kontenerów bez uprawnień administratora.
 +  * [[https://docs.docker.com/compose/|Docker Compose]]: definiowanie i uruchamianie aplikacji składających się z wielu usług.
 +  * [[https://kubernetes.io/|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.
 +  * [[https://ollama.com/|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?