Pemahaman program mendominasi siklus pengembangan perangkat lunak, dengan pengembang menghabiskan sekitar 58% waktunya untuk memahami kode yang sudah ada beserta evolusinya. Call graph (CG) kerap digunakan untuk memvisualisasikan struktur pemanggilan antarfungsi, tetapi pada sistem besar yang terus berevolusi menjadi sulit dipahami karena ukuran dan sifatnya yang dinamis. Deteksi komunitas dapat mengabstraksi CG menjadi kelompok fungsi yang berkaitan, namun algoritma DYNMOGA yang cocok untuk jaringan dinamis dirancang untuk graf tidak berarah.
Tugas Akhir ini mengadaptasi DYNMOGA agar dapat diterapkan pada CG dinamis dengan mengganti fungsi objektif snapshot quality menjadi directed modularity dan temporal cost menjadi intersection-normalised mutual information (INMI). Algoritma diintegrasikan ke dalam aplikasi web mulai dari pengambilan kode GitHub, ekstraksi CG, deteksi komunitas, penamaan komunitas berbasis large language model, peringkasan komunitas menjadi graf supernode berlabel, hingga antarmuka web interaktif untuk menelusuri evolusi komunitas antar snapshot.
Kebenaran adaptasi diverifikasi melalui pengujian pada data sintetis ber-ground truth dan perbandingan dengan algoritma statis Louvain pada 187 repositori publik. Uji-???? satu arah menunjukkan DYNMOGA unggul signifikan dalam INMI (????=8,414; ????? 5,26×10?15), sementara Louvain unggul dalam directed modularity, sesuai trade-off yang diprediksi teori. Tahap peringkasan mereduksi jumlah simpul CG sekitar 85%, dan pengujian terhadap lima pengembang menunjukkan hampir seluruh peserta memperoleh skor penuh pada tugas pemahaman program serta setuju bahwa perangkat lunak membantu pemahaman evolusi kode.
Perpustakaan Digital ITB