基于自我网络的Source Code分层软件体系结构发现
Discovery of Layered Software Architecture from Source Code Using Ego Networks
摘要:
软件架构是指系统的高层抽象,包括所涉及元素的配置以及它们之间存在的交互和关系。源代码可以很容易地通过参考软件架构来构建。然而,反向过程,即从源代码推导软件架构是一项具有挑战性的任务。此外,这种架构由多个层组成,并且应该准确有效地将现有元素分布到这些层中。在本文中,提出了一种新的方法,用于恢复分层结构的基于Java的软件系统使用自我网络的概念。自我网络传统上用于社会网络分析,但在本文中,它们以特定的方式进行修改并调整以适应上述任务。具体地,从源代码中提取依赖网络以创建自我网络。自我网络被处理以在特定结构中创建和优化自我层。当这些自我层集成和优化在一起时,会给出最终的分层架构。所提出的方法进行评估,在两种方式:静态版本的三个开源软件,和一个不断发展的软件系统。在类级别和包级别上都观察到拟议层之间的节点分布和提交的违规行为。所提出的方法被认为优于现有的标准方法在多个性能指标。我们还进行了关于节点选择策略和频率的变化的结果的变化分析。经验观察表明,使用这种技术从源代码中恢复软件架构层,并将其进一步扩展到其他语言和软件,这是有希望的迹象。
英文摘要:
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.
机构、总结、中文摘要均由AI分析而来,可能存在错误,请以论文正文为准。