一种基于复杂网络的软件结构重要模块识别方法技术

技术编号:18940010 阅读:38 留言:0更新日期:2018-09-15 10:58
本发明专利技术公开了一种基于复杂网络的软件结构重要模块识别方法,包括步骤1:确定目标软件并获取其完整的软件源代码;步骤2:对目标软件源代码进行静态扫描,分析软件中的元素实体和元素之间的相互关系;步骤3:在步骤2的基础上,构建软件属性方法网络,并构造相应粒度的软件复杂网络模型;步骤4:在步骤3得到软件复杂网络模型后,得到节点按重要性度量值排序后的集合,结合实际工程情况选取重要模块。本发明专利技术基于复杂网络综合了对模块重要性有影响的四个维度的因素给出了识别重要模块的方法,整个度量分析过程都可在后台实现,建立在完全自动化的流程上,确保最大限度减低人力和时间成本。

An important module recognition method based on complex network for software structure

The invention discloses an important module identification method of software structure based on complex network, which includes step 1: determining the target software and obtaining its complete software source code; step 2: static scanning of the target software source code to analyze the relationship between the element entities and elements in the software; step 3: in step 2 On this basis, the software attribute method network is constructed, and the corresponding granularity software complex network model is constructed. Step 4: After the software complex network model is obtained in step 3, the set of nodes sorted by importance measures is obtained, and the important modules are selected according to the actual project situation. The invention provides a method for identifying important modules based on complex networks, which synthesizes the factors of four dimensions that affect the importance of modules. The whole measurement and analysis process can be implemented in the background, and is based on a fully automated process to ensure that the labor and time costs are minimized.

【技术实现步骤摘要】
一种基于复杂网络的软件结构重要模块识别方法
本专利技术属于软件复杂网络领域,是一种基于软件网络模型识别软件系统关键模块的方法。
技术介绍
随着信息技术的不断发展,计算机软件已经广泛应用于人类生活的方方面面,为人类社会经济的发展和科研的进步做出了巨大的贡献,软件的重要性急剧上升。与此同时,由于人们对软件功能需求的增多和软件应用环境的日益复杂,软件系统的规模和复杂性不断增长,导致软件工程人员在软件维护过程中30%~60%的精力都耗费在对系统的理解上,他们很难在有限的时间和成本下对软件系统做到有效的测试、维护,所以软件系统的问题频出、质量难以提升。但是由于软件特有的逻辑复杂性,没有必要对所有的模块都进行完全的监测,可以通过对关键的软件模块的识别和分析,实现对软件系统的快速了解和质量把控。而复杂网络的出现,为以复杂逻辑关系为主的软件系统模型化提供了新的方法。复杂网络是一种用于描述复杂系统的模型,通过将软件系统中的包、类、函数等元素以及元素之间的关系抽象为节点和边,整个软件可以抽象为一种具有特定拓扑结构的网络形态。这样的软件拓扑结构网络有助于程序开发人员对于软件整体框架有一个直观全面的理解,有本文档来自技高网...

【技术保护点】
1.一种基于复杂网络的软件结构重要模块识别方法,实现步骤包括:步骤1,确定目标软件并获取完整的软件源代码;步骤2,对目标软件源代码进行静态扫描,分析软件中的元素实体和元素之间的相互关系;其特征在于,步骤3,以软件系统中类的属性和方法为网络节点,构建属性方法网络;根据需要识别软件模块粒度大小,对属性方法网络进行组织和抽象构造相应粒度的软件复杂网络模型;步骤4:在得到软件复杂网络模型后,对网络中的节点从设定的角度去度量分析,计算节点的重要性并进行排序,得到节点按重要性度量值排序后的集合,结合实际工程选取前t%的节点作为系统中的重要模块;t为正数;其中,对网络中的节点从设定的角度去度量分析,具体分为...

【技术特征摘要】
1.一种基于复杂网络的软件结构重要模块识别方法,实现步骤包括:步骤1,确定目标软件并获取完整的软件源代码;步骤2,对目标软件源代码进行静态扫描,分析软件中的元素实体和元素之间的相互关系;其特征在于,步骤3,以软件系统中类的属性和方法为网络节点,构建属性方法网络;根据需要识别软件模块粒度大小,对属性方法网络进行组织和抽象构造相应粒度的软件复杂网络模型;步骤4:在得到软件复杂网络模型后,对网络中的节点从设定的角度去度量分析,计算节点的重要性并进行排序,得到节点按重要性度量值排序后的集合,结合实际工程选取前t%的节点作为系统中的重要模块;t为正数;其中,对网络中的节点从设定的角度去度量分析,具体分为整体度量和局部度量,再综合度量结果给出节点的重要性度量值;整体度量通过计算4个参数来度量软件模块,4个参数为接近数、核数、介数和逆向波及度;局部度量是通过计算强度、聚集系数、模块规模和模块内耦合度来度量软件模块;计算得到模块在整体度量或局部度量的4个参数的度量值后,对度量值进行标准化处理后,利用欧拉距离公式计算模块度量值与最优值之间的距离,用距离表示模块在整体层面或局部层面的重要程度;最后,对模块在整体层面和局部层面的重要程度进行加权求和,来表示软件模块的重要性度量值。2.根据权利要求1所述的方法,其特征在于,所述的步骤3中,从属性方法网络中抽取出类加权网络,是:将属性方法网络中隶属于同一个类的节点进行聚合,构造表征软件系统类的节点,聚合类之间的作用构造有向边,并统计类之间相互作用的频数,作为边的权重。3.根据权利要求1或2所述的方法,其特征在于,所述的步骤3中,属性方法网络构建方法是:抽取软件系统中类的属性、方法以及它们之间的相互作用关系,构建属性方法网络,表示为D,如下:D={V,E}V={vi=(name,class,attributes,coordinate)}E={(vsource,vtarget)|vsource,vtarget∈V;vsource≠vtarget}其中,V为节点集合,每一个节点vi具有的信息包括函数或者变量的名称name、函数或者变量所属的类class、函数或者变量的属性集合attributes、节点的坐标coordinate;E为边集合,vsource表示调用起始节点,vtarget表示调用的终止节点;进一步的,从属性方法网络中抽取类加权网络,类加权网络D’定义如下:D'={V',E'}V'={vk=(name,size,innercoupling,types)E'={(vsource,vtarget,weight)|vsource,vtarget∈V',vsource≠vtarget}其中,V’为节点集合,每个节点代表软件中的一个类,每个节点vk包括:节点所代表的类名称name,类的规模size,类内部的属性方法之间相互函数调用频次innercoupling,节点所代表的抽象数据的类型types;E’为边集合,vsource表示调用起始节点,vtarget表示调用的终止节点,weight表示边的权重。4.根据权利要求1所述的方法,其特征在于,所述的步骤4中,整体度量的4个参数分别计算如下:(1)接近数cc:度量模块在软件网络中的位置,接近数的取值越大,表示模块越处于整个软件系统的核心位置;节点i的接近数cci根据下式计算:其中,N表示网络中节点的数量,dij为节点i到节点j之间的最短路径长度;每个节点对应一个模块;(2)核数kc:度量模块在软件系统中的深度,核数值越大,表示模块所处的层次越深,模块的...

【专利技术属性】
技术研发人员:艾骏王佳明杨益文苏文翥王飞郭皓然
申请(专利权)人:北京航空航天大学
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1