Narzędzia programistyczne

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

Warunki zaliczenia laboratorium:

  • prezentacja wybranych narzędzi programistycznych (max. 30 min. na osobę)
  • kolokwium zaliczeniowe (test) z treści prezentowanych w czasie zajęć

Prezentacja powinna zawierać:

  • zwięzłe wprowadzenie do tematu, najważniejsze pojęcia w postaci slajdów/prezentacji lub notatki (najlepiej w postaci PDF)
  • praktyczną demonstrację wybranych przypadków użycia prezentowanego narzędzia. Prezentacja najważniejszych korzyści i możliwości wykorzystania narzędzia oraz ewentualne wady, problemy i ograniczenia w jego działaniu
  • propozycję co najmniej 2 pytań, które mogłyby posłużyć do zweryfikowania znajomości prezentowanego tematu. Pytania mogą być wykorzystane na kolokwium, powinny dotyczyć najistotniejszych (Waszym zdaniem) zagadnień poruszanego tematu.
  • czas prezentacji ok 20-30 min.

Tematy dotyczące rozbudowanych narzędzi (np. Azure DevOps) mogą być realizowane w grupach do 4 osób, w ten sposób aby omówienie tematu mogło się odbyć w czasie trwania pojedynczych zajęć (czas do 2h.).

1. (zespołowe) Narzędzia automatyzujące procesy i wspierające pracę zespołow programistycznych: DevOps, CI/CD (continuous integration, continuous delivery, continuous deployment).

Prezentacja dla zespołu 3-4 osobowego demonstrująca pełen pipeline wytwórczy na przykładowym projekcie deweloperskim (może być na przykładzie projektu realizowanego aktualnie w ramach Pracowni Programowania Zespołowego). Najważniejsze zagadnienia:

  • wsparcie dla pracy zespołowej, zarządzanie zespołem i zadaniami, issue tracker, wybrana metodologia wytwórcza (agile, scrum, …)
  • repozytorium kodu (system kontroli wersji) i workflow w zespole, np.:
  • automatyzacja procesów wytwórczych: budowanie, testy, deployment

2 . Automatyzacja procesów budowania i testowania

3. Narzędzia do statycznej analizy kodu (lintery), refaktoryzacji, generowania kodu

4. Techniki izolacji, atrapy (mocki), wzorce w testowaniu jednostkowym:

5. generowanie testów i danych do testów

  • biblioteka AutoData,
  • narzędzia AI do generowania testów

6. Profilowanie aplikacji

  • narzędzia diagnostyczne w Visual Studio, instrumentacja, profilowanie statystyczne (sampling), debugowanie pamięci
  • narzędzia od JetBrains dotMemory, dotTrace
  • Orbit instrumentacja programów w C, C++, Rust, Go
  • gprof GNU profiler
  • valgrind system for debugging and profiling Linux programs

7. Docker - uruchamianie aplikacji w izolowanych środowiskach

8. Kubernetes - zarządzanie dużą liczbą kontenerów

9. wykorzystanie narzędzi AI w procesie wytwórczym

10 . Inne narzędzia spotykane w firmach informatycznych a nieobecne w programie nauczania IS.
… jakich narzędzi używacie?


Inne propozycje automatyzacji DevOps, CI, CD - mozliwych kompiacji jest wiele;

  • Jira Software + BitBucket + Bamboo (CI, free for 30 days)
  • git + Buildbot
  • GitHub + Jenkins automation server
  • GoCD free & open source ci/cd server
  • Northflank a comprehensive suite of features to support you from inception to production. Put your DevOps lifecycle on autopilot.
  • GitHub/BitBucket +
    • build
    • web deployment
      • Render a unified cloud to build and run all your apps and websites
      • Cyclic build and run modern cloud-native serverless applications without piling on to the full stack.
      • Koyeb push code to production, everywhere, in minutes
  • GitHub + TeamCity powerful continuous integration for DevOps-centric teams
  • inne kombinacje wspomnianych (lub nie wspomnianych) platform, np. 32 Cutting-Edge DevOps Tools to Watch in 2024