HotSpotter
Narzędzie wspierające analizę behawioralną kodu i wykrywanie długu technicznego na podstawie danych z systemów kontroli wersji
Projekt ma na celu automatyzację analizy behawioralnej kodu źródłowego, zwiększenie przejrzystości struktury systemu i historii jego zmian oraz usprawnienie planowania procesu refaktoryzacji i redukcję długu technicznego. Przyczyni się to do poprawy jakości oprogramowania, efektywności pracy zespołów i redukcji kosztów utrzymania systemów.
Kluczowym rezultatem będzie opracowanie aplikacji webowej analizującej dane z repozytoriów Git oraz implementacja algorytmów wykrywających tzw. "hotspoty" i współzależności między plikami. Aplikacja ma oferować interaktywne wizualizacje zmian w kodzie oraz aktywności zespołu.
System powinien przeprowadzić analizę repozytorium zawierającego do 50 000 commitów i 10 000 plików w czasie poniżej 15 minut. Czas renderowania wizualizacji powinien wynosić poniżej 2 sekund dla repozytoriów zawierających do 10 000 plików. System musi obsługiwać jednoczesną analizę minimum 10 repozytoriów oraz osiągnąć skuteczność wykrywania "hotspotów" na poziomie minimum 90% zgodności z oceną eksperta. Długoterminowym celem jest redukcja długu technicznego o minimum 20% po 3 miesiącach użytkowania systemu.
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.
Głównym problemem jest trudność w identyfikacji fragmentów kodu generujących największe koszty utrzymania oraz brak powiązania danych technicznych z aktywnością zespołu. Programiści nie wiedzą, kto i jak często zmienia dany moduł, co utrudnia planowanie refaktoryzacji. Analizy historii zmian w systemach kontroli wersji są czasochłonne i manualne, a struktura dużych repozytoriów pozostaje mało przejrzysta.
Istniejące rozwiązania do analizy statycznej kodu, takie jak SonarQube, ignorują informacje o ewolucji kodu w czasie. Istnieje niewiele narzędzi oferujących interaktywne wizualizacje łączące dane techniczne z behawioralnymi oraz wspomagające proces wykrywania długu technicznego. Rozwiązania takie jak CodeScene, choć zaawansowane, posiadają złożony interfejs, który może być przytłaczający dla mniej doświadczonych użytkowników.
Głównym artefaktem projektu będzie aplikacja webowa HotSpotter składająca się z modułu analizy repozytoriów Git z algorytmami detekcji tzw. "hotspotów", panelu wizualizacji danych oraz modułu zarządzania użytkownikami i ich analizami. Narzędzia wspierające realizację projektu obejmują testowanie i wdrożenie realizowane w pipeline CI/CD, skrypty Terraform definiujące infrastrukturę chmurową oraz pliki konfiguracyjne Kubernetes. Komponenty aplikacji i baza danych zostaną uruchomione w klastrze Kubernetes.
Projekt adresowany jest do osób związanych z procesem rozwoju oprogramowania w celu poprawy efektywności ich pracy i jakości dostarczanych rozwiązań. 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, pozwalające lepiej planować testy i inwestycje w utrzymanie systemu. 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, ułatwiające ocenę jakości i kondycji projektów oraz identyfikację kluczowych kontrybutorów i obszarów wymagających wsparcia.