Java程序维护中基于别名分析的错误诊断技术与工具

Java程序维护中基于别名分析的错误诊断技术与工具

论文摘要

在纠错性软件维护中,相当大一部分错误是由于程序对别名表达式指向的对象进行了误操作而引发的。因此,针对别名引发的软件错误,本文讨论了基于别名分析的错误诊断技术,以及基于别名分析的错误诊断工具的设计与实现。别名分析是在程序运行过程中,提取可能指向同一内存地址的表达式集合的一种技术,对程序分析起着十分重要的作用。在实际软件维护支撑工具中,主要关心的问题是分析的时间复杂度和分析结果是否可以有效地重用。因此,根据软件维护的特殊要求,本文采用了分阶段、基于知识库与增量式的分析策略。以单个方法为模块构造其别名关系图、控制流图,当被分析程序的某个部分发生改变时,并不需要对整个程序重新进行一次分析,而只需对发生变化部分及其相关区域重新分析,将其分析后的结果对程序信息知识库中原有信息进行更新,其知识库信息采用XML文件进行描述存储。这种分析策略提高了分析结果的可重用性。整个分析策略通过两个具体分析阶段来实施,第一阶段主要进行类内别名分析,并将分析的结果作为程序信息的知识库,第二阶段基于程序信息知识库进行类间别名分析。在第一阶段分析中,主要分析类内每个方法的别名信息集,本文对传统的流敏感的跨方法别名分析方法进行适当的改造,应用于类内别名分析。另外,本文针对异常结构构造了包含异常结构的控制流图,这为含有异常结构程序的方法内别名分析提供了支持。第二阶段分析主要是类间别名分析。在此阶段中,根据软件运行中暴露出的具体错误,用户设置出相应的别名标准,然后基于知识库XML中存储的类内别名信息和程序的方法调用信息,使用本文设计的别名计算算法,计算出与别名标准相关的别名信息。

论文目录

  • 摘要
  • Abstract
  • 第一章 绪论
  • 1.1 研究背景
  • 1.2 国内外研究现状
  • 1.3 研究问题
  • 1.4 论文工作及组织结构
  • 第二章 基于别名分析的 Java 程序错误诊断技术
  • 2.1 软件维护
  • 2.1.1 软件维护的定义与分类
  • 2.1.2 程序维护中的纠错性维护
  • 2.2 别名分析技术
  • 2.2.1 Java中别名关系的表示
  • 2.2.2 别名分析方法
  • 2.2.3 别名分析中的数据结构
  • 2.2.3.1 控制流图
  • 2.2.3.2 方法调用图与方法依赖
  • 2.2.3.3 别名关系图和对象类型表
  • 2.3 本章小结
  • 第三章 面向错误诊断的别名分析相关分析与设计
  • 3.1 面向对象程序中别名引起的问题
  • 3.2 面向对象程序 Java 中的别名分析问题
  • 3.3 别名分析步骤
  • 3.4 对象类型表
  • 3.5 类内别名分析方法
  • 3.5.1 带异常结构的控制流分析
  • 3.5.2 流敏感的别名分析
  • 3.5.2.1 别名信息传播规则分析
  • 3.5.2.2 方法内别名计算规则分析
  • 3.5.2.3 方法间别名计算规则与算法设计
  • 3.5.3 别名关系图分析
  • 3.6 基于需求的类间别名分析方法
  • 3.6.1 实例成员访问分析与计算
  • 3.6.2 类间别名计算分析
  • 3.7 本章小结
  • 第四章 基于 Eclipse 的 Java 程序错误诊断工具实现
  • 4.1 别名分析工具简介
  • 4.2 抽象语法树
  • 4.3 程序静态信息的提取
  • 4.3.1 静态信息的数据结构
  • 4.3.2 变量和方法调用信息的获取
  • 4.3.3 定值和引用信息的获取
  • 4.4 方法调用图构造
  • 4.5 类内方法的别名信息处理
  • 4.6 方法内别名信息获取
  • 4.6.1 赋值语句的别名分析处理
  • 4.6.2 含初始化的指针别名声明语句的处理
  • 4.6.3 别名关系的消除与合并
  • 4.6.4 各种控制流语句的处理
  • 4.6.4.1 条件语句
  • 4.6.4.2 循环语句
  • 4.6.4.3 跳转语句
  • 4.6.4.4 异常处理结构
  • 4.6.5 方法内别名信息的存储处理
  • 4.7 方法间的别名信息获取
  • 4.7.1 指针别名信息从调用点向被调用函数的传播
  • 4.7.2 方法调用点后指针别名信息的获取
  • 4.8 别名关系图构造
  • 4.9 基于需求的别名信息获取
  • 4.10 实验检验与分析
  • 4.10.1 实验代码选择
  • 4.10.2 实验结果与分析
  • 4.11 本章小结
  • 第五章 结束语
  • 5.1 本文工作总结
  • 5.2 进一步研究方向
  • 致谢
  • 参考文献
  • 作者在读期间的研究成果
  • 相关论文文献

    • [1].《Java程序设计》教材二次开发的多元化策略研究[J]. 电脑知识与技术 2019(32)
    • [2].Java中的正则表达式应用探讨[J]. 电脑知识与技术 2019(32)
    • [3].Java随机文件读写操作探讨[J]. 南方农机 2019(24)
    • [4].Java技术在图像处理中的应用探究[J]. 信息与电脑(理论版) 2019(24)
    • [5].基于专业认证的Java课程建设[J]. 计算机教育 2020(02)
    • [6].“Java程序设计”课程教学改革与作业批改系统的构建[J]. 教育教学论坛 2020(03)
    • [7].论如何在应用型本科高校培养Java全栈工程师[J]. 电脑与电信 2019(11)
    • [8].Java程序设计项目化教学的研究与实践[J]. 电脑知识与技术 2020(02)
    • [9].基于JAVA语言的异常处理探讨分析[J]. 自动化技术与应用 2020(02)
    • [10].Java程序设计立体化教材建设的思考[J]. 计算机产品与流通 2020(03)
    • [11].基于计算机软件开发的Java编程语言分析[J]. 信息与电脑(理论版) 2020(02)
    • [12].基于Java的购物网站设计与开发[J]. 农家参谋 2020(08)
    • [13].项目化教学在《Java程序设计》教学中的应用研究[J]. 皖南医学院学报 2020(01)
    • [14].基于Java的在线考试系统设计与实现[J]. 中国教育技术装备 2019(24)
    • [15].JAVA编程技术在计算机软件开发中的优势与应用[J]. 信息记录材料 2020(03)
    • [16].浅谈基于JAVA的俄罗斯方块游戏的设计与实现[J]. 农家参谋 2020(13)
    • [17].基于目标管理的Java面向对象程序设计在线教学[J]. 计算机教育 2020(08)
    • [18].混合学习在中职Java课程中的应用探讨[J]. 计算机产品与流通 2020(10)
    • [19].计算机软件Java编程特点及其技术分析[J]. 计算机产品与流通 2020(10)
    • [20].基于Java的企业进销存管理系统的设计与开发[J]. 信息通信 2020(09)
    • [21].Java编程语言在大数据开发中的应用[J]. 黑龙江科学 2020(22)
    • [22].Java类整合课程在线教学的研究[J]. 信息系统工程 2020(09)
    • [23].大学生初学Java多线程思路的反思与优化[J]. 中国新通信 2020(19)
    • [24].基于JAVA的社团管理后台系统设计[J]. 中阿科技论坛(中英文) 2020(09)
    • [25].基于Java语言对10种经典排序算法的研究[J]. 电脑知识与技术 2020(25)
    • [26].浅析《Java程序设计》课程项目化[J]. 信息系统工程 2019(11)
    • [27].基于Java技术的数字图像处理系统的开发[J]. 电脑知识与技术 2019(28)
    • [28].基于Java语言的排课系统的设计与实现[J]. 科技风 2017(01)
    • [29].《Java程序设计》与《软件工程》综合教学改革初探[J]. 现代计算机(专业版) 2016(33)
    • [30].“项目+任务”教学法在高职《Java面向对象程序设计》教学中的应用——以佛山职业技术学院计算机应用技术专业为例[J]. 教育现代化 2016(37)

    标签:;  ;  ;  ;  ;  

    Java程序维护中基于别名分析的错误诊断技术与工具
    下载Doc文档

    猜你喜欢