论文部分内容阅读
互联网的飞速发展在方便社会的同时,也带来了一系列的网络隐患。针对软件系统稳定性和安全性的问题,本文基于软件网络系统节点之间的调用关系、调用顺序以及内在的调用次数,引入复杂网络理论知识,从网络拓扑结构的角度,对软件系统的节点、路径、社团组织等结构特征进行了研究和分析。首先,为了更清晰地展示软件执行过程中的相关信息,根据函数间的调用关系,提出一种构建软件网络模型的新方法。基于在动态软件执行过程中设定不同测试用例,多次执行软件系统,追踪执行过程中函数调用的相关信息。通过对多次执行结果进行合并,最终实现软件网络模型的构建。其次,在软件系统动态执行过程中,基于函数之间的调用关系、调用顺序与调用次数,分析直接相邻的邻居节点和可达节点的影响力,在算法CIWN(calInitialWeightOfNode)和算法CFWN(calFinalWeightOfNode)分别计算节点的初始权值NIW(Node Initial Weight)和最终权值NFW(Node Final Weight),也就是直接邻居的影响力和在某一范围内所有可达节点的影响力。并通过算法MTKN(MinTopKNodes)对节点的权值进行排序,挖掘网络中的关键节点。展示了关键节点在软件各版本中的分布情况,从而了解软件演化过程中关键节点的特点。再次,针对软件各部件之间的调用关系,提出一种挖掘算法IIEP(idenImporExePath),挖掘网络中的关键路径。算法考虑了每条路径总节点中关键节点所占百分比,分析软件不同版本中的重要路径,用以指导将来的软件维护和预测。最后,引入社团理论,依据软件网络中的关键节点,提出算法COC(createOriginalCommunity)初始化软件网络中的社团结构。基于节点间不同的依赖程度,给出算法ETC(expandTheCommunity)扩展初始社团,将其他节点划分到不同的社团结构中,获取最优的划分。考虑软件“高内聚,低耦合”的特性,采用标准模块度Q来评估软件网络中社团结构。本文通过对三款软件进行实验,分析软件的网络结构,挖掘软件系统的潜在性质,验证所提方法的有效性和正确性。