首页 | 本学科首页   官方微博 | 高级检索  
相似文献
 共查询到18条相似文献,搜索用时 93 毫秒
1.
随着多核处理器的发展,多线程并发程序成为现代程序设计的趋势.但并发线程的执行存在不确定性,传统的测试方法很难发现这类错误.针时这个问题,提出了一种直接分析Java源代码,从中提取并发程序模型的方法;并以此方法为基础开发了工具JTS(Java to SPIN),实现了对Java并发程序的自动化分析和模型检测.实验表明JTS能够成功地检测出Java并发程序中存在的错误并给出相应的错误路径.这项工作给Java并发程序的测试与验证提供了新的途径.  相似文献   

2.
张杨  董士程 《计算机应用》2021,41(6):1597-1603
软件开发人员在并发编程中面临着各种Java锁的选择。针对如何选择合适的锁机制进而提高程序性能的问题,提出了一种帮助并发程序开发人员选择锁机制的推荐方法LockRec。首先,采用程序静态分析技术,对并发程序中锁机制的使用进行分析并确定影响程序性能的程序特征属性;然后,使用改进的随机森林算法构建锁机制推荐模型,以帮助开发人员在同步锁、可重入锁、读写锁、邮戳锁这四种锁之中进行选择。分别选取了四种现有的机器学习数据集对LockRec进行了实验,所提方法的推荐准确率均值可达95.1%;此外使用真实并发程序对LockRec的推荐结果进行分析。实验结果表明LockRec可以有效提高并发程序的执行效率。  相似文献   

3.
由于Java程序的应用范畴越来越广,这就需要我们对其程序的应用与运作加以合理地了解与分析,本文主要通过对Java这种程序在实际的并发程序中的应用情况予以动态的分析与阐述,并对其予以技术的重演方面进行系统性的分析与探索,能够推动Java程序本身的发展。  相似文献   

4.
为了提高性能,Java内存模型允许编译器在优化过程中改变代码的执行顺序,同时该技术也会造成共享数据的更新顺序与本来的执行顺序不同。在多线程Java并发程序中,这些代码乱序执行会引起很多难以发现的错误。现有的Java程序模型检测技术并没有考虑这些顺序改变的问题。因此,本文提出了一种建立包含多线程交互及线程内代码乱序执行的完整模型,并利用模型检测工具进行穷举检测的算法。该算法可以发现原有技术无法发现的新问题,更好地检测高可靠性要求的Java并发程序。  相似文献   

5.
Java程序的并发性使它比串行程序更难测试,而可达性测试是一种有效的并发程序测试方法。首先比较了现有的Java程序可达性测试技术,进而提出了一种融合的改进方案以提高同步序列集的生成效率。然后指出新方案已覆盖了用伯恩斯坦条件裁减同步序列集的功能。最后详述如何通过扫描源程序来自动获取同步事件的时序约束关系,进而减少不可行的同步序列,并介绍了相应的实现算法和数据结构。  相似文献   

6.
多线程并发程序的广泛使用引发了更多的数据竞争问题,竞争检测对于提高软件质量具有重要意义。将竞争静态检测和静态切片分析结合起来,提出了一种基于类的Java数据竞争静态检测算法,该算法利用函数调用层次获得函数调用链,对类域进行分析,找出可能数据竞争,通过静态切片缩小程序分析范围,并结合数据竞争的必要条件,去掉不可能数据竞争。实例表明,该算法可用于指导修复程序中的竞争缺陷。  相似文献   

7.
Java语言在并发程序方面的广泛应用对程序员提出了新的挑战,为了在多线程环境中开发出正确的程序,必须考虑线程安全性。本文结合一个Java程序阐明了这一概念,并介绍了在线程安全性上的一个安全等级,最后总结出设计线程安全类的几个有用原则。  相似文献   

8.
针对Java多线程并发程序设计,归类和总结了不同功能的Java多线程设计模式,结合实例分析比较了这些设计模式,这有助于解决实际编程中的并发问题,开发出高质量的Java多线程程序。  相似文献   

9.
Java程序内存行为研究是对Java平台存储管理系统进行能耗优化的首要工作.测试了大量典型Java应用程序的内存行为数据,通过对数据的分析发现Java程序的内存分配模式和内存使用轨迹存在明显的规律.最终得出了Java程序内存行为具有阶段性、周期性和平稳性等结论,这些规律对于Java虚拟机优化垃圾收集和Java程序的能耗优化有着重要的指导意义.  相似文献   

10.
为了帮助程序员检测并发程序中的错误,提出了一种重现错并发误场景的方法.使用对Java字节码插装的方法,生成记录和回放版本的程序.在记录程序运行时,自动记录下线程间执行的逻辑循序,同时在程序发生崩溃后自动生成测试用例,这些测试用例运行在回放版本上具有确定性地重现并发错误的能力.实现了一个基于Java程序的原型工具,实验结果表明,该原型具有重现并发程序错误的能力,并且性能开销在一个可接受的范围内.  相似文献   

11.
Concurrency constructs are widely used when developing complex software such as real-time, networking and multithreaded client–server applications. Consequently, testing a program, which includes concurrency constructs is a very elaborate and complex process. In this work, we first identify the different classes of synchronization anomalies that may occur in concurrent Java programs. We then consider testing concurrent Java programs against synchronization anomalies using dynamic data flow analysis techniques. Moreover, we show how the data flow analysis technique can be extended to detect such anomalies.  相似文献   

12.
基于场景的软件测试工具系列的设计与实现   总被引:2,自引:0,他引:2  
文章将场景技术用于软件测试工具系列Safepro的开发,在讨论测试工具开发共性的基础上,还兼顾个别测试工具的一些特别之处。文中简要介绍了软件测试工具的研究现状,随后给出了系统的测试场景,并基于场景分析了系统的构成模式,讨论了测试数据流模型,包括测试过程的数据流模型,数据流的性能改进,以及基于消息的数据分发和缓冲计数的应用。文章还介绍了采用Makefile规则实现测试分析过程组织的方法。  相似文献   

13.
控制组态系统基于Java的B/S结构设计   总被引:2,自引:0,他引:2  
该文针对分布式控制系统开放性的要求,提出采用基于Java的Browser/Server模式设计控制组态系统,并介绍了组态系统中B/S的工作方式以及在控制组态系统中的应用.  相似文献   

14.
开发并发程序并非是一件容易的事情。随着程序设计的日益庞大和复杂,怎样开发出高性能的并发程序变得越来越重要。在分析了Java的并发机制和同步机制的基础上,给出了一些在开发Java并发程序中防止死锁的策略和方法,这些方法为并发程序的设计带来了方便。  相似文献   

15.
系统测试平台的设计与实现   总被引:3,自引:0,他引:3  
文章针对系统测试任务的工作性质和工作需求,首先分析了分布式实时应用系统的系统测试的特征和要求,并结合国际上软件发展的趋势,提出了管理者/代理系统测试模型。依据该模型提炼出可重用的评测支持系统(Evaluation and Test Supporting System,ETSS)作为系统测试平台,并从接口、管理、通信、同步、实时性和测试实施等几个方面阐述了ETSS的设计思想和原则,及其具有的基本功能。最后,以一个已实现的评测支持系统为例,介绍有关的实现情况。  相似文献   

16.
不确定性MPI/PVM程序的完全调试   总被引:5,自引:0,他引:5  
王锋  安虹  陈志辉  陈国良 《软件学报》2001,12(3):334-339
讨论如何完全地调试不确定性MPI/PVM并行程序.在循环调试过程中,不确定性导致前次遇到的错误在以后的执行中很可能无法再现.基于MPI/PVM的FIFO通信模型,给出一种记录-重放技术的实现.通过可控制的重放,用户可以覆盖所有可能的程序执行路径,从而达到完全调试的目的.和其它方法相比,所提供的方法所需时空开销要小得多.此技术已在两种消息传递体系结构上得到实现:一种是曙光-2000超级服务器(由国家智能计算机研究中心开发),它由单处理器(PowerPC)结点经MESH网互联而成;另一种是国家高性能计算中心(  相似文献   

17.
Concurrent programs are hard to test due to the inherent nondeterminism. This paper presents a method and tool support for testing concurrent Java components. Tool support is offered through ConAn (Concurrency Analyser), a tool for generating drivers for unit testing Java classes that are used in a multithreaded context. To obtain adequate controllability over the interactions between Java threads, the generated driver contains threads that are synchronized by a clock. The driver automatically executes the calls in the test sequence in the prescribed order and compares the outputs against the expected outputs specified in the test sequence. The method and tool are illustrated in detail on an asymmetric producer-consumer monitor. Their application to testing over 20 concurrent components, a number of which are sourced from industry and were found to contain faults, is presented and discussed.  相似文献   

18.
提出了一种新的并行Java程序异常处理的监护模型。该模型针对并行Java程序异步信息传递方式进行异常处理。当并行Java程序的某个线程出现异常时,该线程的监护模块把检测到的异常情况的信息传递到其它线程的监护模块,每个线程根据当前事项与异常事项的向量时钟关系,对当前事项进行回滚或停止操作,以达到对并行Java程序的保护。过去一些并行程序的监护方案是在信息交换的基础上把并行程序结构化为许多原子行为,把多个并行异常当作单个异常进行处理,具有较大的局限性。提出的监护模型是从全局上对并行Java程序的异常情况进行处理,并指导每个线程根据自身情况作出相应反映。实验证明提出的新的并行Java程序监护模型具有较强的实际操作性,并能有效地保护并行Java程序。  相似文献   

设为首页 | 免责声明 | 关于勤云 | 加入收藏

Copyright©北京勤云科技发展有限公司  京ICP备09084417号