文摘

复杂的软件系统,支持组织定期更新,从而削弱系统架构。此外,文档是很少与软件系统的变化同步。这将创建一个未来软件维护的一系列问题。为了这个目标,信息提取工具使用确切的方法从源代码中提取实体及其对应的关系。这样的方法提取所有功能,包括那些不太突出,不得为模块化显著。为了解决这个问题,这项工作提出了一种增强的近似信息提取方法,即事实器系统的Java应用程序(FESJA),旨在使用事实提取自动化软件模块化系统。拟议中的FESJA技术提取所有实体以及它们的对应更占主导地位的正式和非正式的关系从Java源代码。结果表明FESJA的提高性能,通过提取74(类),43(接口),31(枚举)相比,杰出的信息提取技术。

1。介绍

软件系统是必不可少的在我们的日常生活中,企业和政府组织,他们需要一个更新的软件系统来满足其功能性和非功能性需求。客户端请求或系统环境的变化可能会导致需求的变化(1- - - - - -3]。改变恶化软件系统的体系结构,使其难以维护。在这种情况下,软件系统设计必须以这样一种方式,修改软件系统的负面影响控制在最小的程度。更新文档需要更新软件。如果文档是过时的,软件系统需要退休或替换。

逆向工程是重建的第一步,它包括理解系统和获得必要的信息软件系统维护(4,5]。从模型中提取信息软件系统通过文档,编译后的代码,开发团队成员,和源代码6]。最可靠的信息来源为恢复软件体系结构被观察到的源代码。原因是最新版本的软件,源代码,这将最终建成运行,它是最可靠的信息。从源代码中提取的信息软件系统,另一方面,是一项具有挑战性的任务,因为没有开发人员可以完全知道代码的一个庞大而复杂的系统。结果,我们需要从源代码工具来自动提取信息,这将有助于恢复的软件体系结构和软件系统的理解7]。架构的理解和恢复软件维护和演化的关键。

模块化软件系统的第一步是分析它从源代码提取工件的主要的信息来源。需要一个软件模块化技术,将底层工件(源代码)转换为抽象视图(高级)1,5]。两种方法可以用于代码分析:一个精确的方法和一个近似的。确切的方法利用解析器来分析整个源代码,而近似的方法,利用它来提取指定的部分信息。我们提出一个方法来评估Java源代码,以发现实体及其关系在Java软件系统。面向对象系统的选择,因为它是一个更现实的软件开发方法。面向对象的软件系统开发在1990年代现在遗留系统与一个不稳定的结构由于更改他们(5,7]。他们的文档不存在或过时了。全面了解这些软件系统对于未来是必要的更新和维护。

拟议的系统命名为“事实”Java应用程序器系统,或FESJA,给出一个近似的方法来自动软件模块化Java应用程序。实体(如类、接口和枚举及其关系(正式和非正式的)可以提取使用的工具。我们利用FESJA提取类从正式的关系在几个Java软件系统;接口和非正式关系分别是74和43。我们提取31关系分析,分为七类:基于文件夹的implements-based,, composition-based,基于文件的,基于普遍性和router-based关系。的贡献,可以添加以下物品:(1)一个框架,用于提取的关系(2)枚举是一个实体的介绍(3)引入额外的正式和非正式的关系

论文的组织是由以下部分组成的。部分2关注相关工作。源代码实体和关系描述部分3。事实的研究方法提取系统中描述的部分4。部分5讨论了实验装置。部分6介绍了结果。部分7包含实验的结果以及讨论。

在文献中,一些事实从源代码中提取特征提取器系统。模块化软件系统,Raimond Lovesum [8跟着Anquetil和莱斯布里奇使用正式和非正式的特性。他们使用文件,例程、类和过程为实体。文件包含用户定义的数据类型、过程调用,使用宏,全局变量是一些正式的特征。标识符和注释的例子非正式的特性。他们专注于如何模块化结构化语言软件系统使用层次聚类算法。他们得出的结论是,标识符提供好的设计结果的文件有一个专家比较好,和这些评论专家比较好,但这糟糕的设计结果和常规表现不佳。作者在9- - - - - -12)提出了一个方法,提高自主软件架构重建的准确性。该方法使用的组合图聚类和分割。他们认为类不同的实体和创建11他们之间的关系。以下被发现的关系:继承、实现一个接口时,成员(B型)的至少有一个成员,方法参数(至少有一个方法的参数类型B),局部变量(局部变量的类型B方法),返回类型(有一个方法,返回类型B),字段访问(直接访问至少一个字段类型的B),静态方法调用(B)的调用一个静态方法,对象实例化(一种类型的对象B是即时(在投B完成)。他们的重点是面向对象系统(java)。

侯赛因et al。13)采用了烧结的方法为集群的结构化软件系统。他们认为作为实体。他们利用正式的功能实体调用函数,实体引用的全局变量,可以访问用户定义类型实体。Aghdasifam et al。14)进行软件模块化使用会凝聚的层次聚类算法的工作。他们有针对性的结构系统。他们用函数作为一个实体。在他们的工作,他们使用全局变量,使用用户指定的数据类型和函数调用。根据实验的结果,他们认为特性优于全球的类型和调用功能。Zahoor et al。15]提供了一个工具叫WAFE工具(Web应用程序实际上器)从Web应用程序中提取特征。同样,一个类似的工作提出的(16,17),自动提取web组件之间的依赖项和数据库资源在java web应用程序。Web页面包含类。WAFE工具提取以下信息:一个类从一个web页面调用,调用类函数从一个网页,网页表单提交另一个web页面或相同的网页,网页链接到另一个网页,网页重定向到另一个网页,网页文件夹或目录。定制代码文件都包含在网页,和自定义代码文件函数调用Web页面。Web页面的类是来自这些类。类来自网页类以及类来自网页类的函数。

沙et al。1]随后Abdul Qudus Abbasi的研究工作进行了详细研究实体之间的特性。他们开发了一种事实器可以从面向对象系统的源代码中提取26特征提取功能。类、结构、工会,文件,文件夹,全局函数、全局变量和宏都被他们视为实体。类类关系基于继承,类类关系控制的基础上,基于genericity类类关系,类类关系基于成员访问类类关系基于源文件和文件夹,类类关系基于朋友,类全局函数或数据关系或宏观和全局函数全局函数关系提取器的事实。实验评价关系的面向对象软件系统的模块化报道了Thakur et al。18]。使用Abbasi事实器(13),他们检索到26特性。直接和间接关系是两种类型的关系。他们还发现,间接关系给出更好的模块化的结果比直接关系基于实验数据。

Aljarah et al。19)改进工作Tzerpos Andritso,地狱的算法软件架构复苏。他们组合结构和非结构化特性来确定非结构化特性的有用性的逆向工程的过程。开发人员的名称、目录路径行代码,和时间的最后更新的非结构化特性他们检查。实验显示,目录结构和所有权的信息,但并非行代码,都是重要的因素在软件集群。他们还得出结论,重计划分解软件系统是有用的。

Krishnan首选Koschke的博士论文20.]介绍组件恢复技术的分类。他们用几个功能体系结构组件结构系统的恢复。功能函数调用,集(子程序设置一个全局变量的值),使用(子程序使用对象的值T) take-address-of(子程序对象T)的地址,函数参数(子程序的形式参数用户定义数据类型),返回(用户定义的子程序返回一个值类型),local-obj-of-type(子程序有一个本地定义的类型的对象),实际参数的(对象是一个真实的参数调用子程序),类型(类型T S, S是一个对象定义的类型和T),相同的表情(S和T发生在相同的表达式,S和T对象)和部件类型(S是一种部分的T S和T都是用户定义的类型)。

Richner和杜卡斯提出一个环境生成高级面向对象系统的观点从静态和动态信息,和Alshuqayran et al。21)紧随其后。软件系统的模块化,他们使用成分,继承,调用(方法收到的发送方调用的方法的一个候选人),访问(一个属性类1是访问类的方法2),和方法(一个类定义了一个方法,属于另一个类)以及动态特性。

Aljarah et al。19)提出MULICsoft软件聚类算法。软件系统的模块化,他们利用静态和动态特性。源文件的对象是集群。过程调用和变量引用静态特性,但对软件系统动态特性分析系统的执行的结果,表明多少次每个文件称为程序在其他文件在运行时。2003年,Trifu [22)提出了一个结合了聚类和模式匹配技术,自动恢复子系统分解。聚类的过程中,他们使用继承,协会,聚合,电话,和访问功能。他们还提出了一个将权重分配给这些关系的方法。

Rathee和Chhabra23结合的模块化java软件系统静态和动态特性。他们使用继承、实现控制,调用方法和访问变量和分配关系以及软件模块化过程的动态特性。Eski和Buzluca24)提出了一个综合比较研究六个软件聚类算法。他们开发了一个轻量级的C / c++源代码器称为CTSX。CTSX是建立在CTags CScope。CTSX使用CTags提取程序实体(函数、变量和数据类型)和CScope检索功能(函数调用)。

Teymourian et al。25]介绍了动态聚类的评价的方法。他们使用模块化过程的静态和动态特性。特征提取,他们使用CPPX器系统。从实验结果,他们得出的结论是,静态特性执行比动态特性。拉菲等。26分类关键挑战]引入了一个系统的研究与软件实现组织的最佳实践和阿克巴et al。27]讨论了外包的挑战与成功执行相关软件开发。使用一个算法相结合,Alanazi [28)关注集群软件系统。函数被认为是作为实体在他们的研究中,使用以下特性:函数调用(函数调用一个实体),全局变量(全局变量引用一个实体),以及用户定义的类型(用户定义的类型由一个实体访问)。Tjortjis [29日)提出了一种关联规则挖掘方法从代码以捕获程序结构,实现系统的更好的理解。分类代码块的实体,他们使用以下特点:代码块,变量和数据类型都享有。

Yadav et al。30.)提出了一个分析方法的Java代码。他们分析了程序使用Java代码分析器和建表。他们还使用了一个聚类引擎,这与表和发现代码元素之间的关系。他们认为文件、包、类、方法和参数实体。他们在他们的研究中使用包括实体的关系ID,实体名称、进口包、继承、实现关系,参数,返回值,修改器,参数类型和参数使用。

Rathee和Chhabra6,23]随后Tonella提出使用概念分析模块重建的方法。访问全局变量、动态位置访问的用户定义的结构化类型的签名,和用户定义的结构化类型的返回类型是他用于模块重建的关系。

3所示。源代码的实体和关系

本节关注实体和关系关系源代码。这些源代码创建了实体和关系基于Java源代码实体和关系。

3.1。实体在Java源代码

实体是最小的重要元素在建筑层面(20.]。聚类过程的一部分,成为集群的成员在自动化软件集群和模块化过程中(1]。提出“FESJA”提取三种类型的实体,这些类型是类、接口和枚举。

一个类和一个接口可以一个实体在面向对象的系统中,它被广泛应用于软件架构重建和恢复(1,4]。使用的方法(9有助于创建基本,完全自动化的工具,可以帮助检测软件系统的核心类基于它的代码。所做的研究(22)使用模型驱动工程技术提供支持微服务架构恢复(MiSAR)。在他们的工作,他们描述了一个实证研究,使用手动分析八microservice-based开源项目识别方法的核心元素。这项研究可以帮助软件开发人员和维护人员在设计层面采取措施来创建可维护的面向对象软件的类(22,23,31日]。“一个枚举类型是一种形式的数据,允许指定一个变量的一组常量。“枚举java引用类型,类。我们可以添加方法、变量和构造函数enum以同样的方式,我们将在一个常规Java击败2013年发布的版本的Java类。

3.2。的关系

实体之间的相似之处总是在模块化过程中计算基于他们的连接。它建立了应用程序的实体之间的联系。然而,第一步是分析特征提取;之后,当我们应用集群组实体具有类似特性或属性(15]。提出事实的关系类型提取器系统,基于java的系统,已确定。静态的、动态的、非正式的、直接和间接关系的例子,这些类型的关系。

4所示。事实的研究方法提取系统

拟议的方法使用低级工件(源代码)来构建软件系统的高级(抽象视图)的一个基于java的事实器系统。是模块化的第一阶段提取的特征,和FESJA利用一个API命名java.util.regex寻找必要的部件(近似方法)。利用正则表达式匹配模式被Java API。FESJA提取三个类别的实体,如下:

上面的正则表达式可以用来提取类myClass类myClass {{, myClass类<。

提取的接口,使用下面的正则表达式。

例如上面的正则表达式,可以检索界面敏敏<敏{{,接口,接口。

枚举是使用一个正则表达式提取。

上面的正则表达式,例如,可以提取enum myEnum。

的过程事实上提取FESJA始于一些数据上传,文件夹被提取,文件夹的名字都被移除。FESJA的萃取过程后,系统检查的源文件夹(src)是否存在与否。这个过程将结束如果没有src文件夹。相同的实体名称如果src中删除文件存在。图1显示整个过程的萃取体系,而图2显示实体和关系。

5。实验装置

实验中使用的数据集进行评价的关系。这些数据集被设计和实现使用java(面向对象方法)。JFree图表图形和图表(一个开源的库),JUnit(一个开源的java单元测试框架),和Weka(一个开源的java测试框架)补偿数据集(数据挖掘任务的机器学习算法)。所有这些数据都是来自Github和源(https://www.grepcode.com)。实体被FESJA工具在上面的系统表如下所示1- - - - - -4

5.1。Intradataset的比较分析

本研究探讨了多个版本的相同的数据集的结果。

5.1.1。iText

iText软件系统的统计数据如表所示5- - - - - -9。它已经从统计数据得出:(我)类是最重要的实体iText软件系统,和枚举不利用(2)基于文件夹的关系,composition-based关系和访问类关系是最常见的关系(3)基于文件和访问关系相比,基于文件夹的关系经常发生在接口(iv)泛型或外实现关系不是iText软件系统中使用(v)数据34说明在iText正式关系的,是基于正式关系的类,而正式的接口关系贡献只有3%的正式关系

数据3- - - - - -7iText的providegraphical表示软件系统统计数据。

5.1.2中。JFreeChart

10- - - - - -14总结了统计JFreeChart的软件系统。从统计数据,它已经被观察到。(我)最喜欢iText主导实体类虽然枚举不使用JFreeChart软件系统。(2)类的主要关系基于文件夹的关系,composition-based关系和访问关系而implements-based关系和基于继承的关系也良好的频率。(3)关系是基于文件夹的使用接口,基于文件,扩展基础和访问关系而其他关系是罕见的。此外,使用之间的关系,提供最高频率的关系。(iv)iText generics-based一样关系和外部implements-based关系不是JFreeChart软件系统中使用。(v)通过比较数据89它可以计算出在JFreeChart 92%的正式关系是基于正式关系的类而8%的正式关系是基于正式的接口关系。

数据8- - - - - -12提供了一个图形表示JFreeChart的统计软件系统。

由于缺乏枚举的情况下,不存在任何关系枚举JFreeChart软件系统。

5.1.3。JUnit

15- - - - - -20.总结了JUnit的统计软件系统。从统计数据,它已经被观察到。(我)在JUnit软件系统介绍了枚举所有版本除了JUnit 4.8但出现的频率很低。(2)类最常用的关系是基于文件夹的关系而访问关系,implements-based关系,基于继承的关系,和基于文件的关系有很好的发生的频率。(3)为接口外extends-based关系,外composition-based关系和composition-based关系不习惯而extends-based关系只是用于JUnit 4.8。同时,使用之间的关系,基于文件夹的关系出现的频率最高。(iv)泛型基地已经引入了类和接口的关系。(v)枚举是文件夹的使用关系,基于文件和访问关系而composition-based关系只是用于JUnit 4.11。其中,占主导地位的关系是基于文件夹的关系。(vi)通过比较数据1314它可以计算出在JUnit 89%的正式关系是基于正式关系的类而10%的正式关系是基于正式的接口关系。同样,在JUnit 4.9正式关系,JUnit 4.10,和JUnit 4.11是基于0.57%,0.55%,和0.92%的正式关系分别枚举。

数据15- - - - - -18提供一个Junit软件系统的统计数据的图形表示形式。

5.1.4。Weka

21- - - - - -26总结了Weka软件系统的统计数据。从统计数据,它已经被观察到。(我)在Weka软件系统占主导地位的实体类,而枚举发生的频率很低。(2)对于类composition-based关系是最主要的关系。其他关系有一个良好的出现是基于文件夹的访问频率的关系。(3)基于文件夹的关系,基于文件的关系,和访问关系发生的高频接口而其他关系是有非常低的频率发生或不使用。使用之间的关系,提供最高频率的关系。(iv)Generics-based关系类和接口中使用,但使用很低。(v)像JUnit枚举是文件夹的使用关系,基于文件的访问关系和composition-based关系。其中,占主导地位的关系是基于文件夹的关系。访问和composition-based关系发生的频率相同。(vi)通过比较数据1920.,它可以计算出在Weka 95%的正式的关系是基于正式关系的类,4%的正式关系是基于正式的接口关系,1%的正式关系是基于枚举的正式关系。

数据19- - - - - -24提供一个Weka软件系统的统计数据的图形表示形式。

6。讨论和分析

上面的表5- - - - - -26,我们提供了结果和分析数据集,我们用来进行实验。为结果提供了不同的表和图表分析,和它可以得出结论,最主要的实体类,非正式的关系发生高于正式关系,和正式的关系主要是基于类的正式关系。我们提供了一个框架,用于提取存在的实体和关系t在一个Java软件系统。我们事实上器可以提取三种类型的实体类,接口,和枚举。事实上器可以用来提取正式和非正式的关系。类、接口和枚举,正式关系检索的总数是74,43岁和31。同样,提取器提取73非正式的关系。

7所示。结论

事实器系统自动软件模块化Java应用程序(FESJA)是一个工具,用于从Java源代码中提取实体和关系。实体提取的萃取器系统类、接口和枚举。器可以提取正式和非正式的关系。正式的关系分为三个部分,正式关系类,接口正式关系,枚举的正式关系。评价的关系,我们进行了四个实验系统(数据集)。系统iText、JFreeChart Junit, Weka软件系统。我们提供了不同的图和表的分析结果,提出了我们的观察,可以帮助研究人员执行任务相关的软件模块化过程,恢复软件体系结构和软件集群。

数据可用性

使用的数据来支持本研究的发现可以从相应的作者。

的利益冲突

作者宣称没有利益冲突。

确认

科学研究的作者感谢院长以来,沙特国王大学资助通过科研副院长职椅子。