[论文解读] Reusing Precisions for Efficient Regression Verification
本文提出重用抽象精度——抽象解释的中间结果——作为回归验证中的可复用验证事实,以大幅减少冗余计算。通过在代码修订间重用精度,该方法在工业设备驱动程序中平均将验证时间减少达3.7倍,开销极小,且在大规模代码变更下无性能下降。
Continuous testing during development is a well-established technique for software-quality assurance. Continuous model checking from revision to revision is not yet established as a standard practice, because the enormous resource consumption makes its application impractical. Model checkers compute a large number of verification facts that are necessary for verifying if a given specification holds. We have identified a category of such intermediate results that are easy to store and efficient to reuse: abstraction precisions. The precision of an abstract domain specifies the level of abstraction that the analysis works on. Precisions are thus a precious result of the verification effort and it is a waste of resources to throw them away after each verification run. In particular, precisions are small and thus easy to store; they are easy to process and have a large impact on resource consumption. We experimentally show the impact of precision reuse on industrial verification problems, namely, 59 device drivers with 1119 revisions from the Linux kernel.
研究动机与目标
- 解决软件开发中持续形式化验证的高计算成本问题。
- 通过重用先前分析的中间结果,减少软件版本间冗余的验证工作量。
- 识别并利用抽象精度作为轻量级、高影响力的可复用验证知识形式。
- 在Linux内核等大型真实工业代码库上,展示精度重用的可扩展性与鲁棒性。
- 提供一个包含4,193个验证任务的公开基准套件,用于回归验证研究。
提出的方法
- 从模型检测运行中提取抽象精度,特别是基于CEGAR的验证工具中使用插值或类似技术的结果。
- 将这些精度作为轻量级、工具无关的元数据进行存储和持久化,以备后续重用。
- 在后续对修改后代码版本的验证运行中,将存储的精度用作初始抽象。
- 通过重用精度来减少CEGAR迭代次数,并避免对虚假反例的冗余分析。
- 将精度重用集成到符号化与显式模型检测方法中,以评估其通用适用性。
- 使用Linux驱动程序验证(LDV)工具包,从真实内核驱动版本中生成并验证验证任务。
实验结果
研究问题
- RQ1抽象精度能否在软件版本间有效重用,以加速回归验证?
- RQ2精度重用对真实世界工业代码库(如Linux内核)的验证性能有何影响?
- RQ3精度重用对代码规模和结构变化的敏感度如何,特别是在大范围提交时?
- RQ4精度重用是否会在大规模代码变更上导致性能下降或引入假阴性?
- RQ5精度重用是否能在资源限制内解决此前无法求解的验证问题?
主要发现
- 在4,193个验证任务中,精度重用使谓词分析的平均验证时间减少3.7倍,显式分析减少1.4倍。
- 即使在大规模代码变更(平均每版本1,579行)下,谓词分析的加速比仅从3.7倍略微下降至3.2倍。
- 该方法在多种规格说明和抽象域下均保持性能稳定,展现出对代码变更的鲁棒性。
- 在某些情况下,精度重用使原本无法在时限和内存限制内求解的问题得以验证。
- 该方法减少了CEGAR迭代次数,并最小化了对虚假反例的冗余分析。
- 通过该实验性流程,发现并报告了Linux内核中的一个未知缺陷,验证了其在现实世界中的实际影响。
更好的研究,从现在开始
从阅读论文到最终审阅,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。