DeepAI AI Chat
Log In Sign Up

Discovery of Layered Software Architecture from Source Code Using Ego Networks

by   Sanjay Thakare, et al.

Software architecture refers to the high-level abstraction of a system including the configuration of the involved elements and the interactions and relationships that exist between them. Source codes can be easily built by referring to the software architectures. However, the reverse process i.e. derivation of the software architecture from the source code is a challenging task. Further, such an architecture consists of multiple layers, and distributing the existing elements into these layers should be done accurately and efficiently. In this paper, a novel approach is presented for the recovery of layered architectures from Java-based software systems using the concept of ego networks. Ego networks have traditionally been used for social network analysis, but in this paper, they are modified in a particular way and tuned to suit the mentioned task. Specifically, a dependency network is extracted from the source code to create an ego network. The ego network is processed to create and optimize ego layers in a particular structure. These ego layers when integrated and optimized together give the final layered architecture. The proposed approach is evaluated in two ways: on static versions of three open-source software, and a continuously evolving software system. The distribution of nodes amongst the proposed layers and the committed violations are observed on both class level and package level. The proposed method is seen to outperform the existing standard approaches over multiple performance metrics. We also carry out the analysis of variation in the results concerning the change in the node selection strategy and the frequency. The empirical observations show promising signs for recovering software architecture layers from source codes using this technique and also extending it further to other languages and software.


page 1

page 2

page 3

page 4


Redefining measures of Layered Architecture

Layered architecture represents the software structure in the form of la...

A Study of Maintainability in Evolving Open-Source Software

Our study is focused on an evaluation of the maintainability characteris...

Recovery and Analysis of Architecture Descriptions using Centrality Measures

The necessity of an explicit architecture description has been continuou...

Characterization and Identification of Cloudified Mobile Network Performance Bottlenecks

This study is a first attempt to experimentally explore the range of per...

E-SC4R: Explaining Software Clustering for Remodularisation

Maintenance of existing software requires a large amount of time for com...

Finding Inlined Functions in Optimized Binaries

Much software, whether beneficent or malevolent, is distributed only as ...

Source location on multilayer networks

Nowadays it is not uncommon to have to deal with dissemination on multi-...