学位论文 > 优秀研究生学位论文题录展示

Java并发程序的模型提取与模型检测技术研究

作 者: 周志远
导 师: 张大方
学 校: 湖南大学
专 业: 软件工程
关键词: Java并发程序 模型检测 多线程 程序分析 软件测试
分类号: TP312.2
类 型: 硕士论文
年 份: 2009年
下 载: 164次
引 用: 2次
阅 读: 论文下载
 

内容摘要


随着多核心处理器系统的发展,分布式并发系统已成为当前主流的软件体系结构。分布式软件的特性导致错误不可重现,使软件排错工作非常困难。Java是在语言级别支持并发的高级语言,其提供的语言特性和大量的类库很好地支持了并发程序的编写。但这些类库都有各自的特点,如果使用不当会造成一些难以发现,却危害严重的问题。同时,Java内存模型JMM(Java Memory Model)允许编译器在优化过程中改变程序的执行顺序,这会让多线程Java程序产生许多意想不到的错误。Java规范中程序的正确性仅仅依赖于程序员编写正确的,不会冲突的代码,很难满足高可靠性软件的要求。针对上述问题,本文提出了一套对Java多线程并发程序错误进行检测的方法。第一部分工作提出了一种自动化模型检测的技术,并制作了工具JTS(Java To SPIN),实现了对Java并发程序的模型检测与验证。JTS对Java程序进行分析,产生抽象语法树,建立程序的抽象模型。分析中特别针对Java虚拟机的并发机制和类库实现进行了建模,并利用模型检测工具SPIN进行了模型检测。在实验中JTS成功地对多个Java程序进行了模型提取和模型检测,给出了错误路径。JTS建立的模型准确地再现了Java程序的执行过程,发现了其中隐藏的并发程序错误。这种检测方法为发现和修正这类不可重现,难以测试的并发错误提供了一种新的方法和思路,是传统测试方法在并行程序领域的的一种尝试与补充。第二部分工作提出了另一种新的方法,针对JMM所允许的程序顺序变化,结合程序中的依赖关系、volatile变量和串行化代码等建立模型,进行模型检测。根据这种检测方法,给出了程序的乱序模型和模型检测结果。在模拟执行和检测结果序列中,可以清楚地看到Java多线程并发程序的乱序执行情况。该方法检测现有JMM规范下所有允许的代码顺序变化,可以发现原有技术无法检测的错误,并给出错误路径,推进了高可靠性Java程序的验证工作。

全文目录


摘要  5-6
Abstract  6-13
第1章 绪论  13-24
  1.1 研究背景  13-19
    1.1.1 Java 语言  13-15
    1.1.2 模型检测  15-19
  1.2 相关工作介绍  19-21
  1.3 本课题的研究内容  21-22
  1.4 本文组织结构  22-24
第2章 Java 并发程序分析  24-38
  2.1 Java 的并发机制介绍  24-35
    2.1.1 Java 并发程序锁的问题  25-28
    2.1.2 Java 并发程序的通信问题  28-32
    2.1.3 Java 并发程序的同步问题  32-35
  2.2 JAVACC 简介  35-36
  2.3 JTB 简介  36-37
    2.3.1 产生的文件  36
    2.3.2 自动产生的类  36-37
  2.4 小结  37-38
第3章 模型检测理论及工具  38-50
  3.1 模型检测简介  38-40
  3.2 模型检测工具  40-45
    3.2.1 模型检测工具SPIN  40
    3.2.2 SPIN 工作原理及相关定义  40-42
    3.2.3 SPIN 的基本结构  42-43
    3.2.4 SPIN 搜索算法  43-44
    3.2.5 偏序规约  44-45
  3.3 线性时序逻辑LTL  45-46
  3.4 Java 并发程序模型检测  46-49
  3.5 小结  49-50
第4章 Java 并发程序的模型检测  50-64
  4.1 Java 程序分析  50-51
  4.2 建立promela 模型  51-54
    4.2.1 类  52
    4.2.2 方法  52-53
    4.2.3 属性  53
    4.2.4 方法内部语句  53-54
  4.3 Java 并发程序的特殊控制结构  54-59
    4.3.1 锁模型  54-55
    4.3.2 通信控制模型  55-58
    4.3.3 同步控制模型  58-59
  4.4 检测结果  59-60
  4.5 模拟路径分析  60-62
  4.6 实验  62-63
  4.7 小结  63-64
第5章 基于Java 内存模型的并发程序模型检测  64-74
  5.1 模型定义与算法  64-66
  5.2 模型建立与检测  66-72
    5.2.1 简单乱序模型  66
    5.2.2 包含Volatile 变量的乱序模型  66-69
    5.2.3 包含依赖关系的乱序模型  69-72
  5.3 小结  72-74
结论  74-76
参考文献  76-80
致谢  80-81
附录 A 攻读学位期间所发表的论文  81-82
附录 B 攻读学位期间所参与的科研活动  82

相似论文

  1. AVS视频解码器在PC平台上的优化及场解码的改善,TN919.81
  2. 基于智能学习的多传感器目标识别与跟踪系统研究,TP391.41
  3. 基于比对技术的非法网站探测系统的实现与研究,TP393.08
  4. 面向对象分层测试的方法研究,TP311.53
  5. 基于形式化UML测试序列生成方法研究,TP311.53
  6. 基于程序切片的电子海图系统软件测试技术研究,TP311.53
  7. 用户权限管理系统可靠性测试的研究与应用,TP311.53
  8. 高职院校教学案例库的创建探究,TP311.53-4
  9. 基于BMC的Web服务失配检测方法研究,TP311.52
  10. 基于中国电信闪铃系统与平台项目的软件测试,TP311.53
  11. 民航空管DVOR/DME导航台信号覆盖与飞行程序综合分析及应用研究,V351.37
  12. 基于四方的安全电子商务支付协议研究,TP393.08
  13. 表面形貌区域法分析评定算法及软件系统研究,TP311.52
  14. 基于C/S架构的车辆远程监控系统的设计与实现,TP277
  15. 基于多核的动态剖析加速方法研究,TP332
  16. 基于Process Engine的Web Services自动化测试研究,TP311.52
  17. 自动化测试在分组传输网管接口测试中的应用,TP311.52
  18. 基于多线程图像处理机测试系统的研究,TP391.41
  19. 一个自动化软件测试系统的设计与实现,TP311.53
  20. 基于QTP的SAFFRON自动化测试框架的研究,TP311.52
  21. 云备份中的双指纹校验与多线程传输技术研究,TP309.3

中图分类: > 工业技术 > 自动化技术、计算机技术 > 计算技术、计算机技术 > 计算机软件 > 程序语言、算法语言
© 2012 www.xueweilunwen.com