论文部分内容阅读
演化是软件生命周期的重要部分。挖掘软件仓库的代码信息可以提供更多软件演化的信息。随着软件系统越来越复杂,软件系统的结构特征越来越复杂,并且为了满足新的应用需求,软件系统也在不断的更新迭代。软件的演化分析也渐渐引起人们的关注,出现了许多用于演化分析的技术和工具,本文提出了软件网络社团匹配和演化异常点检测的方法,来更好地挖掘软件演化过程中的重要元素信息,得到程序演化过程中细化的变更信息,进一步指导软件系统的迭代开发。首先,提出一种基于软件动态执行轨迹的软件网络模型构建方法。通过在软件执行过程中设定不同测试用例,多次执行软件程序,获取执行过程中函数调用的相关信息。对多次执行结果进行合并,最终实现软件网络模型的构建。其次,利用算法(MinTopKNodes,MTKN)挖掘软件网络中的关键节点。在软件系统动态执行过程中,基于函数之间的调用关系、调用顺序与调用次数,分析直接相邻的邻居节点和可达节点的影响力,通过计算节点最终权值确定关键节点。再次,提出一种基于关键节点的软件网络模糊社团划分算法(Function Belongingness Matrix Generation,FBM-Gen)。在关键节点的基础上,引入社团理论,并提出函数隶属矩阵的概念进行量化。以软件网络中的关键节点为社团中心,通过模糊社团划分算法来获取软件程序的函数隶属矩阵,为社团匹配打下基础。最后,提出一种基于社团匹配的异常点检测算法(Software Evolutionary Community Outliers Detection,SECO-Detection)。通过公式推导得出软件两个迭代版本的匹配计算方法。算法结果用来对比分析软件演化过程中社团的演化情况,并能同时找出软件演化过程中与本社团其他节点有较大差异的异常节点。对本课题提出的算法用Java语言在Windows平台下进行实现。通过真实数据集与合成数据集来验证算法的高效性、准确性和运行稳定性。