Development and verification of new methods for analyzing the structure and operation of complex IT systems
Relation
Local access
Defence Date
2024-04-03
Degree Date
Authors
Supervisors:
Reviewers:
Other title
Opracowanie i weryfikacja nowych metod analizy struktury i sposobu działania złożonych systemów informatycznych
Resource type
Call number
Defence details
Physical Description:
Research Project
Description
Abstract
Zrozumienie oprogramowania może być niezwykle czasochłonne ze względu na stale rosnący rozmiar kodu źródłowego programu. W związku z tym istnieje potrzeba przyspieszenia procesu rozumienia kodu w celu ułatwienia utrzymania i zmniejszenia związanych z tym kosztów. Chociaż istnieje już wiele różnych reprezentacji struktury i zależności kodu, zaskakujący jest brak modeli, które ściśle reprezentują kod źródłowy i koncentrują się na wspieraniu zrozumienia oprogramowania. Aby wypełnić tę lukę, proponujemy Semantic Code Graph (SCG), model informacyjny, który oferuje szczegółową abstrakcyjną reprezentację zależności kodu z możliwie dokładnym odwzorowaniem kodu źródłowego. Aby zweryfikować przydatność modelu SCG w zrozumieniu oprogramowania, porównujemy go z dziewięcioma innymi modelami reprezentacji kodu źródłowego. Ponadto wybieramy 11 znanych oraz szeroko stosowanych projektów z otwartym kodem źródłowym napisanych w Javie i Scali i wykonujemy na nich szereg czynności związanych ze zrozumieniem oprogramowania przy użyciu trzech różnych modeli reprezentacji kodu: proponowanego SCG, Call Graph i Class Collaboration Network. Nasze praca udowadnia, że SCG zwiększa możliwości rozumienia oprogramowania w porównaniu z dominującymi modelami Class Collaboration Network i Call Graph. Udostępniamy również narzędzie open- source, scg-cli, aby pomóc w odtworzeniu wyników i dalszych badaniach.
Software comprehension can be extremely time ¬consuming due to the ever-growing size of codebases. Consequently, there is an increasing need to accelerate the code comprehension process to facilitate maintenance and reduce associated costs. While a variety of code structure models already exist, there is a surprising lack of models and in consequence tools that closely represent the source code and focus on software comprehension. To address this gap, we propose the Semantic Code Graph (SCG), an information model that offers a detailed abstract representation of code dependencies. To validate the SCG model's usefulness in software comprehension, we compare it to nine other source code representation models. Additionally, we select 11 projects developed in Java and Scala and perform a range of software comprehension activities on them using three different code representation models: the proposed SCG, the Call Graph, and the Class Collaboration Network. Our findings demonstrate that the SCG enhances software comprehension capabilities compared to the prevailing Class Collaboration Network and Call Graph models. We also release an open-source tool, scg-cli, to assist with result reproduction and further research.

