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.
翻译:软件结构是指一个系统的高层次抽象化,包括所涉要素的配置以及它们之间存在的相互作用和关系。源码可以通过参考软件结构很容易地建立。但是,源码代码是一个具有挑战性的任务。此外,由多个层次组成的结构,将现有要素传播到这些层次,应当准确和有效地完成。本文介绍了利用自我网络概念从爪哇软件系统中恢复分层结构的新办法。Ego网络传统上用于社会网络分析,但本文则以特定的方式修改和调整,以适应上述任务。具体地说,从源码中提取软件结构结构的依附性网络是一个挑战性任务。自定义网络由多个层次组成,将现有元素传播到这些层次,在整合和优化后,这些自我结构将赋予最后层结构。拟议的方法以两种方式进行评估:固定版本的3个开放源软件软件,以及不断演变的软件系统。不同频频度的网络观测,也以特定的方式修改,并调整这些语言的频率,以适应上述任务。具体地,从源码代码中提取一个依赖性网络,以创建一个自定义的网络网络,以创建自定义网络,在特定结构结构中,并在特定结构中优化中进行。我们所观察到的自定义的自定义的自定义的自变变。在排序和软件结构中,在排序中,在现有的标准结构结构结构中,在排序中,在排序中,在排序中,在排序中进行关于正变。我们所观察到的自变的自变的自变的自变的自变。在排序,在排序,在排序中,在排序式方法在排序法则在排序中,在排序。在排序在排序在排序在排序在排序在排序在排序在排序中,在排序中,在排序中,在排序在排序后在排序在排序中,在排序中,在排序中,在排序中,在排序中,在排序中,在排序中,在排序中,在排序在排序中,在排序和自变。在排序中,在排序中,在排序中,在排序中,在排序在排序中,在排序后在排序后在排序后在排序后在排序后在排序中,在排序中,在排序后在排序后在排序后在排序后在排序后在排序中,在排序后在排序中,在排序后在排序后在排序