ZPI Day

HotSpotter

Narzędzie wspierające analizę behawioralną kodu i wykrywanie długu technicznego na podstawie danych z systemów kontroli wersji

Członkowie:   Wiktor, Jan, Michał oraz Michał
Opiekun:   Michał Szczepanik

Cele projektu

Cele biznesowe:

  • Automatyzacja analizy behawioralnej kodu źródłowego.
  • Zwiększenie przejrzystości struktury systemu i historii jego zmian.
  • Usprawnienie planowania refaktoryzacji i redukcja długu technicznego.
  • Poprawa jakości oprogramowania, efektywności pracy zespołów i redukcja kosztów utrzymania systemów.

Cele projektu:

  • Opracowanie aplikacji webowej analizującej dane z repozytoriów Git.
  • Implementacja algorytmów wykrywania tzw. “hot spotów” i współzależności między plikami.
  • Uzyskanie skuteczności wykrywania tzw. “hot spotów” na poziomie minimum 90% zgodności z oceną eksperta.
  • Stworzenie interaktywnych wizualizacji zmian w kodzie i aktywności zespołu.
  • Wdrożenie systemu w środowisku chmurowym Google Cloud.

Opis projektu

W branży rozwoju oprogramowania, szczególnie w organizacjach pracujących nad dużymi, długotrwałymi projektami, zarządzanie długiem technicznym i jakością kodu odgrywa istotną rolę. Wraz ze wzrostem rozmiaru repozytoriów kodu, które w wielu przypadkach obejmują tysiące plików i setki tysięcy linii kodu, oraz rotacją w zespołach programistycznych identyfikacja obszarów wymagających refaktoryzacji staje się coraz trudniejsza. Obecne procesy zarządzania jakością kodu często opierają się na przeglądach kodu i reaktywnym rozwiązywaniu problemów dopiero po wystąpieniu defektów. W ostatnich latach rośnie jednak popularność metod analizy behawioralnej kodu, które wzbogacają tradycyjną statyczną analizę o dane z systemów kontroli wersji, takie jak historia zmian czy wzorce współpracy zespołu. Połączenie perspektywy strukturalnej i behawioralnej pozwala na szybsze wykrywanie ryzykownych obszarów kodu, zanim przekształcą się one w poważniejsze problemy.

Problemy użytkowników:

  • Trudność w identyfikacji fragmentów kodu generujących najwięcej problemów i kosztów utrzymania.
  • Brak powiązania danych technicznych z aktywnością zespołu (nie wiadomo kto i jak często zmienia dany moduł).
  • Niska przejrzystość struktury dużych repozytoriów i trudności w planowaniu refaktoryzacji.
  • Czasochłonne i manualne analizy historii zmian w systemach kontroli wersji.

Ograniczenia istniejących rozwiązań:

  • Narzędzia typu SonarQube analizują kod statycznie, ignorując jego ewolucję.
  • Brak interaktywnych wizualizacji łączących dane techniczne z behawioralnymi.
  • Brak automatyzacji procesu wykrywania długu technicznego na podstawie danych z systemu kontroli wersji Git.
  • Narzędzia typu CodeScene posiadają złożony interfejs, który może być przytłaczający i mało intuicyjny dla mniej zaawansowanych użytkowników.

Artefakty

Aplikacja webowa HotSpotter:

  • moduł analizy repozytoriów Git z algorytmami detekcji tzw. “hot spotów”
  • panel wizualizacji danych
  • moduł historii analiz i zarządzania użytkownikami

Narzędzia wspierające:

  • testy i wdrożenie realizowane w pipeline CI/CD
  • skrypty Terraform definiujące infrastrukturę chmurową
  • pliki konfiguracyjne Kubernetes

Charakterystyka środowiska wdrożeniowego:

  • komponenty aplikacji uruchomione w klastrze Kubernetes
  • baza danych w chmurze

Odbiorcy

  • Programiści i liderzy techniczni szybciej zidentyfikują obszary wymagające refaktoryzacji, co ograniczy błędy i skróci czas debugowania.
  • Działy IT i QA otrzymają dane o jakości kodu i jego zmianach, co pozwoli lepiej planować testy i inwestycje w utrzymanie.
  • Firmy partnerskie i klienci zyskają większą stabilność oprogramowania oraz krótszy czas dostarczania aktualizacji.
  • Środowisko inżynierów oprogramowania oraz projekty open-source zyskają narzędzie do analizy aktywności w repozytoriach publicznych, co ułatwi ocenę jakości i kondycji projektów open-source oraz identyfikację kluczowych kontrybutorów i obszarów wymagających wsparcia.

Technologie

Java Spring MongoDB TypeScript Vue.js Vite D3.js Three.js Git Google-Cloud HashiCorp-Terraform Docker Kubernetes
Mapa drogowa
Repozytoria