基于程序语义的软件故障定位技术研究

基于程序语义的软件故障定位技术研究

论文摘要

随着计算机技术的发展和软件应用领域的扩大,软件系统的规模和复杂性不断攀升,由于软件故障直接导致系统失效的比率持续增加,其可靠性越来越难以保证。当软件失效发生后,如何自动调试和定位引发失效的软件故障是一个非常有价值的研究课题。基于程序频谱的故障定位技术分析程序成功运行和失败运行的动态执行特征,将这些特征统称为程序频谱,计算出每个程序实体可能出错的概率。这种轻量级的故障定位技术仅仅需要程序动态运行信息,由于其计算复杂度低,无需建模代价而得到广泛研究和应用。本文在分析各种常见程序频谱的基础上,提出了一种新的程序频谱——动态方法调用图,它能够表达程序的语义信息——程序执行时方法之间的调用关系。由于传统收集程序频谱的插桩方式引入过多额外的执行开销,本文介绍一种新的收集程序频谱的方式,那就是采用面向方面编程技术收集程序频谱。通过在被测程序中增加一个新的模块——方面监视程序执行。由于方面可以跟踪程序执行时方法调用栈的转换,收集的程序频谱可以记录程序执行时方法之间的调用关系。在所收集的程序频谱的基础上,提出一种基于程序语义的故障定位技术。定义了一种新的程序模型——程序动态行为图。在行为图中,边权值表示方法调用边的调用频率,成功行为图和失败行为图的差异指出了程序中可疑的故障点。由于成功测试用例的和失败测试用例数量差异很大,比较边调用频率这个绝对数值是不合理的。本文认为如果一条边在成功行为图和失败行为图中的调用概率差越大,它出错的概率就越大。通过计算每条边在成功行为图和失败行为图中的调用概率差,得到边的故障可疑值,最后按照故障可疑值排列方法调用边,得到故障报告。最后设计和实现了基于程序语义的故障定位原型系统,初步的实验结果表明,相比传统的插桩技术,采用面向方面编程技术收集程序频谱能减少数十倍以上的执行开销。通过大量实验验证,基于程序语义的故障定位技术能够提高错误定位的效率,减轻程序员的调试负担。

论文目录

  • 摘要
  • Abstract
  • 目录
  • 插图索引
  • 附表索引
  • 第1章 绪论
  • 1.1 研究背景和意义
  • 1.1.1 研究背景
  • 1.1.2 研究意义
  • 1.2 研究现状
  • 1.2.1 国内外研究现状
  • 1.2.2 目前研究中存在的问题
  • 1.3 研究内容
  • 1.4 论文结构和章节安排
  • 第2章 软件故障定位技术研究综述
  • 2.1 软件故障
  • 2.1.1 bug的由来
  • 2.1.2 软件故障存在的必然性
  • 2.1.3 相关术语
  • 2.2 delta调试技术
  • 2.3 程序切片技术
  • 2.3.1 程序切片
  • 2.3.2 程序切片与delta调试相结合
  • 2.4 近邻模型
  • 2.5 模型检测
  • 2.6 基于模型的软件调试技术
  • 2.7 基于排序的故障定位技术
  • 2.7.1 Tarantula
  • 2.7.2 Ample
  • 2.7.3 频繁子图挖掘技术
  • 2.8 本章小结
  • 第3章 收集程序频谱
  • 3.1 引言
  • 3.2 整体框架
  • 3.3 程序频谱
  • 3.3.1 程序频谱的定义
  • 3.3.2 程序频谱的分类
  • 3.4 选择程序频谱
  • 3.5 收集程序频谱
  • 3.5.1 插桩技术
  • 3.5.2 面向方面编程和AspectJ
  • 3.5.3 AOP方式收集程序频谱
  • 3.5.4 程序频谱表现形式
  • 3.5.5 自动收集程序频谱
  • 3.6 本章小结
  • 第4章 基于程序语义的故障定位技术
  • 4.1 引言
  • 4.2 故障定位技术的提出
  • 4.2.1 几点假设
  • 4.2.2 问题描述
  • 4.3 故障定位技术总体思路
  • 4.3.1 设计思想
  • 4.3.2 故障定位流程
  • 4.4 分析程序频谱
  • 4.4.1 创建程序动态行为图
  • 4.4.2 计算故障可疑值
  • 4.5 评价
  • 4.5.1 故障报告质量
  • 4.5.2 额外的执行开销
  • 4.6 实例验证
  • 4.6.1 实验程序
  • 4.6.2 收集程序频谱
  • 4.6.3 构建行为图
  • 4.6.4 计算故障可疑值
  • 4.6.5 评价
  • 4.7 本章小结
  • 第5章 原型系统设计和实验
  • 5.1 系统概述
  • 5.2 部分模块设计实现
  • 5.2.1 程序频谱收集模块
  • 5.2.2 程序频谱分析模块
  • 5.3 实验及结果分析
  • 5.3.1 实验程序
  • 5.3.2 实验结果及分析
  • 5.4 本章小结
  • 结论
  • 参考文献
  • 致谢
  • 附录A (攻读学位期间所发表的学术论文目录)
  • 相关论文文献

    • [1].软件故障诊断技术研究[J]. 信息通信 2018(08)
    • [2].基于距离的软件故障分析方法[J]. 无线互联科技 2017(12)
    • [3].飞机软件故障的快速定位与排除[J]. 航空维修与工程 2017(09)
    • [4].窗口假死,我来枪毙你[J]. 电脑爱好者 2009(17)
    • [5].软件故障导致召回的医疗器械数据分析[J]. 中国医疗器械信息 2011(04)
    • [6].一类基于支持向量机的软件故障预测方法[J]. 小型微型计算机系统 2010(07)
    • [7].软件故障预防方法探讨[J]. 现代计算机(专业版) 2009(08)
    • [8].软件故障度量方法[J]. 装备制造技术 2011(08)
    • [9].基于行为树与软件故障树的需求缺陷分析[J]. 计算机与数字工程 2010(08)
    • [10].计算机网络硬软件故障的处理及维护方法初探[J]. 科技经济导刊 2020(10)
    • [11].软件故障分析方法与软件质量评价模型的研究[J]. 软件 2014(01)
    • [12].软件故障诊断方法浅析[J]. 计算机安全 2010(07)
    • [13].软件故障静态预测方法综述[J]. 计算机科学与探索 2009(05)
    • [14].利用抓包工具排除软件故障[J]. 网络安全和信息化 2019(02)
    • [15].一种基于构件的军用软件故障诊断方法[J]. 四川兵工学报 2014(05)
    • [16].基于支持向量机的软件故障预测研究[J]. 计算机产品与流通 2017(10)
    • [17].基于四叉树K-均值聚类算法的软件故障预测算法研究[J]. 计算机应用研究 2014(09)
    • [18].柯达CR950软件故障分析及措施[J]. 医疗装备 2012(04)
    • [19].柯达CR950软件故障的检修[J]. 中国医疗设备 2011(11)
    • [20].基于灰色变权搜索的软件故障预测方法[J]. 计算机测量与控制 2012(08)
    • [21].西门子DRH CT机软件故障维修一例[J]. 中国医疗设备 2009(10)
    • [22].软件故障模型驱动软件测试[J]. 数字技术与应用 2013(10)
    • [23].GE 8排螺旋CT软件故障的处理[J]. 中国医疗设备 2009(07)
    • [24].微型计算机故障处理及维护技术分析[J]. 硅谷 2014(14)
    • [25].运用双系统冗余方案避免医疗设备因工作站故障停用[J]. 中国医疗器械信息 2019(02)
    • [26].基于不确定推理的军用软件故障诊断方法研究[J]. 计算机测量与控制 2014(09)
    • [27].谈职业学校计算机机房日常维护维修[J]. 中国建设教育 2010(Z4)
    • [28].医疗设备常见软件故障及处理[J]. 中国医疗设备 2014(06)
    • [29].软件故障诊断技术综述[J]. 微计算机信息 2010(34)
    • [30].软件故障预测中贝叶斯网络技术的应用研究[J]. 计算机产品与流通 2017(10)

    标签:;  ;  ;  ;  

    基于程序语义的软件故障定位技术研究
    下载Doc文档

    猜你喜欢