论文部分内容阅读
20世纪中后期以来,为了减少不成熟的软件所造成的各种灾难和损失,越来越多的学者开始了软件测试的理论研究,并取得到了快速的发展,其中之一就是软件缺陷模型的研究取得了重要进展。DTS软件缺陷检测系统就是一个基于缺陷模型的软件测试系统,DTS综合应用了多种静态分析技术,在很大程度上减少了软件缺陷的误报和漏报,但作为一个静态分析工具,在分析千万行级的大型复杂代码时,DTS也遇到了分析效率有待提高的问题。
本文首先对DTS分析流程的时间复杂度进行分析,从影响时间复杂度的多个因素来考虑如何提高系统整体的分析效率,论证了实现并行分析方法的意义和可行性。接着,就如何实现DTS的并行分析做了以下工作:首先就是从线性模型中脱离出来,对DTS整体架构进行分析,重新审视整个处理流程,确定各个分析模块彼此的依赖关系,将系统划分为多个独立的模块,提取其中可并行执行的部分,研究实现该模块的并行所面临的复杂性和并行化后能够带来的性能提升空间;然后,针对DTS中各个可并行执行的独立模块,从数据流、任务流、并行粒度和并行宽度的角度进行分析,研究并行化过程中面临的共享数据访问冲突、模块间同步关系等线程安全问题,设计并实现相应的并行策略,对于DTS中的核心模块:缺陷检测模块,我们进行了多层次的细化分析,除了实现模块的整体并行,还对模块内部进行了任务分解,抽象出可并行的部分,设计了多层次的并行分析策略,并提供了完善的配置接口,可以灵活选择适合的并行粒度和并行宽度。
为了验证DTS使用并行分析方法进行缺陷检测的正确性,以及并行分析方法在提高系统性能方面的效果,我们采用不同的配置条件组合做了对比实验,实验结果证明,采用并行分析方法对DTS进行优化可以在保证不损失DTS检测精度的前提下,达到有效改善系统性能的目的。