今天开小组会的时候,谈到JPF的扩展和使用,就想总结一下10-11年相关会议上使用JPF的几篇论文,这里简单整理下:

1. P. Joshi, M. Naik, K. Sen, and D. Gay, "An effective dynamic analysis for detecting generalized deadlocks," in Proceedings of the eighteenth ACM SIGSOFT international symposium on Foundations of software engineering, Santa Fe, New Mexico, USA, 2010, pp. 327-336.

这篇文章的主要思想是:将一个多线程的Java程序抽象成一个简单的trace program,再使用JPF作为Model Checker来探索这个trace program的所有的线程交互情况。这篇文章的主要贡献是:去除掉了大部分可能造成state-space explosion的程序逻辑,仅仅在trace program中保留和多线程相关的逻辑。

2. M. Gligoric, T. Gvero, V. Jagannath, S. Khurshid, V. Kuncak, and D. Marinov, "Test generation through programming in UDITA," in Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering - Volume 1, Cape Town, South Africa, 2010, pp. 225-234.

后面这两篇文章实际上都是同一个研究小组写的:由Darko Marinov领导的在UIUC的小组,他们的论文在JPF的论文列表页面中也有介绍,所以,这两篇论文不能说明JPF的影响力,因为作者和他们关系太密切。(上一篇文章是UCBerkeley和Intel Lab的人写的,暂时看不出和JPF这个项目有什么私人关系。)

这篇文章的主要思想是:介绍了一种测试用例生成语言:UDITA,UDITA具有Non-deterministic choice operators和能够生成linked structures的接口,而作者将JPF作为这种语言实现的主要平台。我对non-deterministic program的确切含义也不是很了解。感兴趣的同学可以自己去查查。

3. V. Jagannath, Q. Luo and D. Marinov, "Change-aware preemption prioritization," in Proceedings of the 2011 International Symposium on Software Testing and Analysis, Toronto, Ontario, Canada, 2011, pp. 133-143.

和第2篇文章的作者单位相同。

这篇文章的主要思想是:对于多线程程序,回归测试中测试用例的选择和执行成本都比较高,他们提出了基于软件演化过程中的变动信息,来prioritize多线程回归测试的搜索顺序。他们使用JPF和另外一种自己开发的framework为基础,来实现自己的算法。其中,作者通过修改JPF中已经存在的SimplePrioritySearch 这个模块来prioritize搜索过程。(这个SimplePrioritySearch是个模块还是个什么东西,我们可以接下来搞清楚。)

今天就简单总结下这三篇文章。

转载于:https://www.cnblogs.com/quyu/archive/2011/12/29/2306674.html

[Java Path Finder][JPF学习笔记][8]几篇使用JPF的论文相关推荐

  1. Java快速教程--vamei 学习笔记(基础篇)

    链接:http://www.cnblogs.com/vamei/archive/2013/03/31/2991531.html java快速教程第1课 从HelloWorld到面向对象 学习网址:ht ...

  2. Java菜鸟教程系列 学习笔记总结 基础篇(1)

    基础语法 本博客通过学习菜鸟教程Java专栏,并整理得出的Java基础知识. 命名规范 1.项目名全部小写 2.包名全部小写 3.类名首字母大写,如果类名由多个单词组成,每个单词的首字母都要大写.如: ...

  3. Java菜鸟教程系列 学习笔记总结 面向对象篇(1)

    继承 继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为. 继承的特性 子类拥有父类非 private 的属性.方法. 子类 ...

  4. JAVA基础与高级学习笔记

    JAVA基础与高级学习笔记 /记录java基础与高级,除了较简单的内容,没有必要记录的没有记录外,其余的都记录了/ java初学者看这一篇就够了,全文 6万+ 字. JAVA基础 java会出现内存溢 ...

  5. 第10课:底实战详解使用Java开发Spark程序学习笔记

    第10课:底实战详解使用Java开发Spark程序学习笔记 本期内容: 1. 为什么要使用Java? 2. 使用Java开发Spark实战 3. 使用Java开发Spark的Local和Cluster ...

  6. 零基础学习Java开发,这些学习笔记送给你

    因为Java具备很多特点,并且在企业中被广泛应用为此很多小伙伴选择学习Java基础开发,但是零基础学习Java技术开发需要我们制定Java学习路线图对于我们之后的学习会非常有帮助. 零基础学习Java ...

  7. Java 8 函数式编程学习笔记

    Java 8 函数式编程学习笔记 @(JAVASE)[java8, 函数式编程, lambda] Java 8 函数式编程学习笔记 参考内容 Java 8中重要的函数接口 扩展函数接口 常用的流操作 ...

  8. 【Java】函数式编程学习笔记——Stream流

    学习视频:https://www.bilibili.com/video/BV1Gh41187uR?p=1 (1)[Java]函数式编程学习笔记--Lambda表达式 (2)[Java]函数式编程学习笔 ...

  9. java 编程思想 多线程学习笔记

    java 编程思想 多线程学习笔记 一.如何创建多线程? 1.继承 java.lang.Thread 类 2.实现 java.lang.Runnable 接口 3.Callable接口 总之,在任何线 ...

最新文章

  1. css3运动后留下轨迹尾巴_球磨机的工作原理及机内运动轨迹分析
  2. 新型智能头盔可快速评估患者中风的大小、位置和类型
  3. spring手动控制事务开启_Spring 基于AOP的事务控制
  4. Nginx 教程- 获取真实IP模块 - http_realip_module
  5. spring boot学习(5): 进程exit code自定义
  6. [蓝桥杯][2017年第八届真题]k倍区间(数学+思维)
  7. php函数前面加符号 和 变量前面加符号的意义
  8. Linux内核分析 - 网络[三]:从netif_receive_skb()说起
  9. Maven学习总结(38)——Maven下载失败文件夹批量删除问题的两种解决方法
  10. ASP.NET MVC:实现我们自己的视图引擎
  11. 33款创意的二维码名片设计作品欣赏
  12. 【转】ASP.NET AJAX入门系列(8):使用ScriptManager控件
  13. lattice diamond 安装及获取license方法
  14. 21天早睡早起习惯计划
  15. 问什么说我的计算机主机名无效,为什么arcgis的许可管理器 修改为主机时,总是说我输入的是无效主机名...
  16. 基建不再是架桥铺路,“新基建”正星火驰援行业的数字化转型
  17. iOS软件开发实现类似微信上传图片选择
  18. 简单的音乐播放器(老师布置的小作业)
  19. GDI函数 坐标系综述
  20. 一、磁盘数据恢复实验报告

热门文章

  1. 推荐一些 Windows 平台上的优质高效软件
  2. C语言输出1-100中3的倍数
  3. 实验三linux进程间通信,实验五:进程间通信
  4. 【html+css+js】实现 当当购物车1.0
  5. MGV2000_BYT代工_刷机固件包
  6. 5月11日云栖精选夜读丨清华大学成功卫冕ASC18世界超算总决赛冠军,黑马上海科大斩获AI大奖
  7. matlab播放视频的函数,matlab读取/播放视频的函数(1)
  8. sdut 2154:Shopping(第一届山东省省赛原题,水题)
  9. 乐视视频遭DDOS攻击 疑是恶意竞争
  10. verilog中的除法运算/