论文部分内容阅读
多核处理器的普及和快速发展使得多线程并发程序近年来变的越来越流行。为使并发程序变得简单和高效,研究人员将软件重构技术应用于并发程序中。并发程序在运行期间其内部具有的不确定性和并发性,使得在对并发程序进行重构后容易引发并发问题,导致重构前后行为发生不一致现象。因此对重构程序行为的一致性检测尤为重要。一致性检测不仅能够尽可能的减少存在的不一致问题,提高开发人员的开发效率,而且能够尽可能的降低后期的维护成本。在上述背景下,本文对并发重构的一致性问题进行研究。针对并发软件重构存在的行为不一致问题,本文对软件重构后产生的行为不一致原因进行了研究,提出以WALA软件分析框架为基础的静态一致性检测方法和工具。该工具首先使用控制流分析构造重构前后的控制流图,对比重构前后可能出现行为不一致的节点信息;其次,针对synchronized关键字进行检测。在控制流的基础上进行同步依赖分析,检测重构前后同步依赖关系是否等价;再次,使用数据流分析,对比重构前后数据流信息的变化,找出可能出现行为不一致的节点信息;最后,定义死锁检测、对象重用检测和静态共享字段检测3种检测规则对重构后程序进行检测,以此更加精确的找出存在的行为变化。基于上述理论研究,本文提出了一致性检测工具。在实验中,选取了基准测试程序SPECjbb2005、HSQLDB、JGroups、Apache Cassandra和Apache Mina-core对一致性检测工具进行测试。实验结果表明,该工具能够正确的检测出不一致结果。因此本文所提出的一致性检测方法是可行且有效的。