关键词:
软件网络
关键节点
K-壳位置
软件缺陷检测
演化分析
摘要:
将软件系统映射为软件网络,从网络角度出发,挖掘和分析对软件系统安全性、稳定性和可靠性起到关键作用的节点,并探究它们的演化规律,对于保障软件的安全性和提升产品质量至关重要。本课题研究软件系统中,基于函数调用关系建立的有向加权软件函数调用网络。研究内容包括关键函数实体的挖掘,系统演化规律的分析,主要工作涵盖以下几个方面。
首先,为区分有向边在软件执行功能过程中做出的贡献,设计了有向边权重计算方法,定义了有向加权软件函数调用网络。首先针对面向过程的软件系统,采用动态分析方法,执行多种不同的测试用例,多次动态追踪软件执行轨迹获取软件系统中函数实体以及函数实体间的调用关系。然后通过合并多次运行结果,设计有向边权重计算方法,将合并后的结果映射为一个有向加权软件函数调用网络。此外,对有向加权软件函数调用网络进行了特性分析,结果表明了其具有小世界与无标度特性。
其次,为解决现有软件网络关键节点挖掘算法挖掘过程存在误检,挖掘结果准确率低问题,提出一种基于节点缺陷传播能力的软件函数调用网络关键节点挖掘算法SN_KNR。首先设计了节点扩展度衡量节点对网络局部结构的影响;然后,获取节点改进K-壳位置衡量节点对网络全局结构的影响;此外,将节点扩展度与节点改进K-壳位置进行结合,从节点缺陷传播角度定义了节点缺陷传播能力度量,并据此设计了SN_KNR算法,挖掘软件缺陷检测过程中的关键节点。实验结果表明,在三种真实有向加权软件函数调用网络中,所提算法挖掘得到的关键节点集在模拟蓄意攻击和缺陷源传播时,网络效率和节点传播力指标均优于对比实验中的其余四种算法。
最后,为解决现有软件网络演化分析模型演化过程不符合软件开发原则以及不符合软件网络连接特性问题,提出一种基于关键节点的软件函数调用网络演化分析模型DSEM。模型分为三个阶段,第一阶段考虑软件开发过程基于各主要功能为中心进行软件开发的原则,使用SN_KNR算法获取有向加权软件函数调用网络关键节点,并使用关键节点构成的最大连通子图建立初始网络。第二阶段设立连接机制,使用节点缺陷传播能力值作为优先连接概率对初始网络进行演化增长。第三阶段进行网络迭代更新,输出演化分析网络。实验结果表明,与现有网络演化分析模型相比,所提网络演化分析模型更适用于软件函数调用网络。