Abstract

Program comprehension plays a significant role in the maintenance of software systems. There has recently been a significant increase in written large-scale applications with a collaboration of several programming languages. Due to the indirect collaboration between different components of a multilingual program, it is difficult to understand such program. Modularization is employed for extracting subsystems to help software system comprehension. The first step in the software modularization process is to extract a dependency graph from the source code. Taking into account all the programming languages used to implement a program, in the literature, there is no method to construct an integrated dependency graph from the source code aiming to support modularization of multilingual programs. To modularize such programs, we, first, create three dependency graphs named Call Dependency Graph (CDG), Semantic Dependency Graph (SDG) and Nominal similarity Dependency Graph (NDG) from the source code. The CDG, as a structural graph, is constructed for homogeneous programming languages and both SDG and NDG are built without taking into account the syntax of the programming languages used in the source code. Then, a genetic algorithm is presented to modularize multilingual programs from the constructed dependency graphs. The experimental results on Mozilla Firefox demonstrate that improvements in the simultaneous use of the SDG and NDG, and structural-based graph are 89%, 85%, 86%, and 59%, respectively, in terms of Precision, Recall, FM, and MoJoFM. The source codes and dataset related to this paper can be accessed at https://github.com/Masoud-Kargar-QIAU.

Full Text
Published version (Free)

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call