论文部分内容阅读
当前软件研究对象的粒度变大,应用领域更复杂,逻辑结构的多状态和对象间的耦合更加松散等导致了软件系统的规模和复杂程度的剧增,软件系统的基本实体之间错综复杂的交互关系等,使得开发人员对软件系统结构特征及其故障的理解和控制越来越困难,严重影响到了软件项目的维护和开发。软件复杂性的增加直接导致软件故障的复杂性增加,开发和维护过程的成本加大,由于软件故障直接导致系统失效的比率不断攀升,其可靠性越来越难以保证,在测试和维护过程中,开发者很难精准处理软件系统出现的相关问题。因此,从软件的源代码或动态执行过程中挖掘出内在的潜在有用数据信息,发现故障可能性大和故障传播能力强的关键节点,有助于软件工作人员快速了解软件的结构特征,这对于提高软件开发和维护效率,和先期发现软件系统的故障并有效减小故障对系统造成的破坏性具有重要价值。为此,本文在研究软件网络建模和表征方法的基础上,将序列模式挖掘方法应用到软件网络的动态执行轨迹中,挖掘软件网络中具有代表性的行为模式和影响软件故障的关键节点,支持软件故障和演变分析。本文主要研究工作如下: 首先,基于软件的结构特征和行为特性,以软件函数为研究粒度,针对软件功能实体的依赖和调用关系,提出一种软件网络的建模和表征方法。基于函数粒度的软件网络节点抽象描述可以更好的帮助理解软件系统。在软件网络的拓扑结构中,通过分析函数节点获取相关的功能特点和拓扑信息,并且分析函数与函数之间的调用关系可以得出许多有价值的数据。依此,利用相关工具软件,采用软件执行路径追踪的办法,动态获取到原始软件内部函数的实际执行轨迹数据,将追踪到的软件执行路径转化成相应的软件执行序列,通过提出的化简去重算法SCRP,对软件执行序列中的连续重复模式进行化简,对软件执行序列进行预处理,从而构建软件网络模型及其映射方法。 其次,基于软件网络和动态执行序列,设计软件网络序列的最大效用计算方法。软件执行序列是有序的,代表着软件内部函数之间的调用关系,软件执行轨迹包括很多方面,从序列模式挖掘角度来说,包括软件动态执行的执行轨迹。软件执行轨迹蕴含着软件可靠性分析涉及到的丰富信息。本研究课题通过建立相应带效用值的索引表UI-list数据结构,利用UI-list数据结构记录序列效用值和位置信息,提出一种软件执行序列挖掘下的高效用连续模式挖掘算法 SEHUCP-Miner。并利用索引表UI-list 数据结构建立向后扩展策略,在此基础上使用新的效用上界模型 ruub,进而挖掘出高效用的软件网络代表性模式。 再次,在软件网络中,函数作为软件系统的组成单元,函数之间的互相调用通信,影响着软件网络的连通性,在软件稳定性和鲁棒性方面扮演着重要角色。函数之间的调用有可能会传播错误缺陷数据,导致整个软件网络的安全性、稳定性受到影响。根据软件网络下的函数的故障累积特性,定义软件网络中函数的节点故障可能性度量标准 NFP,再根据函数的故障传播特性,定义函数的节点故障传播能力度量标准NFPC。在此基础上,综合函数节点故障可能性和故障传播能力,建立函数的故障严重性度量标准 SOF,并提出函数故障可能性挖掘算法,找到软件网络中故障严重性较大的函数节点集合,进而挖掘软件网络关键节点。 最后,基于这些软件网络的关键节点,采用模糊社团的划分方法,提出一种基于社团匹配的软件演化社团异常点检测算法SECOD,计算出社团匹配矩阵和异常点矩阵,获取软件程序的函数隶属关系矩阵,实现复杂软件网络的故障和演变分析。据此,可以追踪软件故障在软件演化中的特征信息,提高软件研制人员对软件故障的控制能力和软件质量的把控。