The invention relates to a software function change prediction system based on edge instability and a method thereof, belonging to the field of software engineering. The invention of software network function call graph based on the calculation, first need to obtain the function call graph, and then for each edge of the edges of the calculation stability, compare function modification and deletion, the new version of the function of the adjacent, and change the function of sub graph, remove the change function graph in stability is less than a certain value, the remaining edge function connection is the prediction results.
【技术实现步骤摘要】
一种基于边不稳定性的软件函数变更预测系统及方法
本专利技术属于软件工程领域,特别涉及一种面向复杂网络基于边不稳定性的软件函数变更预测系统及方法,通过相邻版本变更函数的不稳定度进而预测下一个版本函数的变更情况。
技术介绍
近年来,复杂网络的研究取得了巨大的进步,提出了许多方法和理论。这些理论和研究被用于生物学、物理学等学科,目前在计算机科学领域的应用也越来越广。现代的软件系统无论是从规模还是从结构设计上都发生了巨大的改变,传统的软件工程方法面临着很大挑战。因此,复杂网络的研究方法被引入到软件设计的过程中。由于现代软件函数的变更越来越频繁,软件升级在软件的整个生命周期中不可避免,因此,研究函数的变更传播有其重要的现实意义。除此之外,研究的另一目标是影响软件鲁棒性的相关因素。复杂网络经常伴随着信息、病毒、疾病等的传播,而一个网络的拓扑结构对于变更传播的程度有着显著的影响。在计算机科学领域,大型软件系统中的类图、依赖图、关系图、软件组件图、函数调用图都属于复杂网络。当开发者为了加入一个新功能或者修复一个BUG的时,对软件系统一个部分作出修改后,其他的部分为了适应修改,常常也需要进行更新。量化一个软件网络的传播性有助于节省软件维护产生的开销。在函数调用关系图中,变更传播通常都是单方向的,函数A调用函数B,当B发生修改时,A因为接口需要作出调整因此很可能需要相应作出修改,这叫B传播到A,但当A发生修改时,B一般就不需要作出修改了。关于影响边的变更传播的参数,首先有节点的稳定度,节点的稳定度定义如下:在定义中,和分别代表节点ni的出度和入度。如果Si的值相对较大,那么说 ...
【技术保护点】
一种基于边不稳定度的软件函数变更预测系统,其特征在于包括:函数调用关系图生成模块、变更函数调用关系图获取模块和边的不稳定度生成及函数变更预测模块,其中:函数调用关系图生成模块:根据需要处理相应的软件网络,生成相应软件网络的函数调用关系图;变更函数调用关系图获取模块:对相邻版本的函数源码比较,得到变更函数,在已生成的函数调用关系图中,去掉没有变更的函数,得到每个相邻版本源代码的变更函数调用关系图;边的不稳定度生成及函数变更预测模块:根据已生成的变更函数调用关系图,得到每条边的边的不稳定度,对所有边按照边的不稳定度进行排序,根据输入的阈值,去掉不稳定度低于阈值的边,剩下的边所连接的函数节点作为预测结果进行输出。
【技术特征摘要】
1.一种基于边不稳定度的软件函数变更预测系统,其特征在于包括:函数调用关系图生成模块、变更函数调用关系图获取模块和边的不稳定度生成及函数变更预测模块,其中:函数调用关系图生成模块:根据需要处理相应的软件网络,生成相应软件网络的函数调用关系图;变更函数调用关系图获取模块:对相邻版本的函数源码比较,得到变更函数,在已生成的函数调用关系图中,去掉没有变更的函数,得到每个相邻版本源代码的变更函数调用关系图;边的不稳定度生成及函数变更预测模块:根据已生成的变更函数调用关系图,得到每条边的边的不稳定度,对所有边按照边的不稳定度进行排序,根据输入的阈值,去掉不稳定度低于阈值的边,剩下的边所连接的函数节点作为预测结果进行输出。2.根据权利要求1所述的基于边不稳定度的软件函数变更预测系统,其特征在于:所述函数调用关系图生成模块实现过程如下:(1)选择需要处理相应的软件网络,包括操作系统软件源代码,然后调用外部工具cdepn,对于所有.c文件,生成相应的cdepn文件;(2)对于生成的.cdepn文件,逐行读取文件,当每一行第一个字符为F时,表示该行函数为call函数,之后的所有开头第一个字符为C的行的直到文件尾或者下一个开头第一个字符为F的行为止,包含在里面的函数都被该函数调用,按照此方法则生成相应整个软件网络的函数调用关系图。3.根据权利要求1所述的一种基于边不稳定度的软件函数变更预测系统,其特征在于:所述变更函数调用关系图获取模块实现过程如下:(1)利用ctags获取每个函数在相邻版本中的被定义位置,函数定义总是以‘{’开始,最终以‘}’结束,利用此原理,从函数开始行开始,利用栈的数据结构,去掉注释语句,每读到‘{’入栈,读到‘}’出栈,直到栈为空,这时候的行数为该函数的结束行,按照此方法得到函数被定义的结束行,然后提取各函数在相邻版本的源代码,利用diff命令,比较代码是否发生改变,如果是则是变更函数;(2)得到变更函数后,利用变更函数,对源代码的函数调用关系图进行筛选,去掉没有变更过的函数,剩下的就是变更函数调用关系图。4.根据权利要求1所述的一种基于边不稳定性的软件函数变更预测系统,其特征在于:所述边的不稳定度生成及函数变更预测模块实现过程如下:(1)逐行录入变更函数调用关系图,每行分为调用函数(callfunction)和被调用函数(calledfunction),每行录入的时候,调用函数的出度加1,被调用函数入度加1;(2)变更函数调用关系图录入完毕之后,根据公式:计算出函数节点的不稳定度Si,是该节点的入度,是该节点的出度;然后,根据公式Iij=Si-Sj计算出各条边的...
【专利技术属性】
技术研发人员:王雷,王新晨,李涵,
申请(专利权)人:北京航空航天大学,
类型:发明
国别省市:北京,11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。