paperbot · PL 论文追踪

全部论文 待读 收藏

P2 Model checking a C++ software framework: a case study

对 C++ 软件框架的模型检测:一项案例研究
FSE Proceedings of the 2019 27th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering2019匹配度 2/10 · 论文是传统模型检测在 C++ 工业框架上的案例研究,涉及形式化验证与工业落地,但与用户核心方向中的 LLM/Agent、静态分析交叉、浮点程序分析或贝叶斯程序分析均无直接关联;仅因属于形式化验证且包含工业案例而略有边缘相关。引用 2 inbox
John Lång, I. S. W. B. Prasetya
crossref: 2026-09-12

AI 速览

一句话:通过 Spin 与 Divine 对 CERN 的 C++ 框架 ADAPRO 进行模型检测,发现设计及经大量测试的代码缺陷。

本文报告将模型检测用于 C++ 框架 ADAPRO 的案例研究。ADAPRO 最初由 CERN 开发;作者用 Spin 在设计层建模验证,用 Divine 验证与实现交互的简单测试应用。两类模型检测器各有优缺点,但互补使用带来了传统测试与分析难以获得的洞见:将 C++ 源码翻译为 Spin 模型有助于发现原始设计缺陷,Divine 则在已历经数百小时单元、集成与验收测试的代码中发现缺陷。作者认为模型检测易于集成到项目工作流,不仅可验证,也可用于确认,对库级代码开发现实且值得。

问题
如何对 C++ 软件框架 ADAPRO 的关键性质进行形式化验证,并评估模型检测在真实软件项目中的可行性。
方法
分别使用 Spin 对设计层建模验证,使用 Divine 验证与实现交互的简单测试应用,并将模型检测与已有测试实践互补使用。
评估
通过案例研究评估,发现原始设计缺陷及经大量测试仍未发现的代码缺陷,并表明模型检测可集成到项目工作流并带来验证与确认价值。
原文摘要(Abstract)

This paper presents a case study on applying two model checkers, Spin and Divine, to verify key properties of a C++ software framework, known as ADAPRO, originally developed at CERN. Spin was used for verifying properties on the design level. Divine was used for verifying simple test applications that interacted with the implementation. Both model checkers were found to have their own respective sets of pros and cons, but the overall experience was positive. Because both model checkers were used in a complementary manner, they provided valuable new insights into the framework, which would arguably have been hard to gain by traditional testing and analysis tools only. Translating the C++ source code into the modeling language of the Spin model checker helped to find flaws in the original design. With Divine, defects were found in parts of the code base that had already been subject to hundreds of hours of unit tests, integration tests, and acceptance tests. Most importantly, model checking was found to be easy to integrate into the workflow of the software project and bring added value, not only as verification, but also validation methodology. Therefore, using model checking for developing library-level code seems realistic and worth the effort.

链接与引用

DOI 原文 · PDF(开放获取) ·

BibTeX
@inproceedings{paperbot5178,
  title = {Model checking a C++ software framework: a case study},
  author = {John Lång and I. S. W. B. Prasetya},
  booktitle = {FSE},
  year = {2019},
  doi = {10.1145/3338906.3340453}
}