[论文解读] Towards making formal methods normal: meeting developers where they are
本文提出通过在开发者的现有工作流程、测试实践和测试框架等现有产物中集成形式化验证,将形式化验证融入主流软件开发。它倡导采用‘每周投入产出比’模型以推动采纳,聚焦于渐进式、实用性的收益,而非完整的正确性证明,目标是在十年内将形式化方法的使用量提高两个数量级。
Formal verification of software is a bit of a niche activity: it is only applied to the most safety-critical or security-critical software and it is typically only performed by specialized verification engineers. This paper considers whether it would be possible to increase adoption of formal methods by integrating formal methods with developers' existing practices and workflows. We do not believe that widespread adoption will follow from making the prevailing formal methods argument that correctness is more important than engineering teams realize. Instead, our focus is on what we would need to do to enable programmers to make effective use of formal verification tools and techniques. We do this by considering how we might make verification tooling that both serves developers' needs and fits into their existing development lifecycle. We propose a target of two orders of magnitude increase in adoption within a decade driven by ensuring a positive `weekly cost-benefit' ratio for developer time invested.
研究动机与目标
- 解决形式化方法在主流软件开发中采纳率低的问题,当前使用该方法的开发者不足1%。
- 克服当前形式化方法因工作量大且破坏现有开发流程而仅限用于安全关键系统所带来的障碍。
- 将关注点从证明完全正确性,转向提供可度量的、短期的收益,以证明开发者投入时间的合理性。
- 通过与现有开发实践(如测试和单元测试)集成,实现更广泛的采纳。
- 建立可持续的‘每周投入产出比’,使使用形式化工具所花费的时间能够通过即时、可观察的收益得到合理化。
提出的方法
- 复用现有开发产物(尤其是测试框架和单元测试)作为形式化验证的输入或规范,以实现形式化验证。
- 通过将属性化测试与形式化验证进行类比,降低学习门槛并提升工具的熟悉度。
- 设计能无缝集成到现有CI/CD流水线和IDE中的验证工具,最大限度减少工作流干扰。
- 优先考虑工具在不同验证任务间的复用性和互操作性,以避免工具碎片化并降低维护开销。
- 开发性能分析与面向验证的设计指南,以提升在验证复杂代码时的可预测性和性能。
- 使用多种验证工具的组合来缓解在不可判定或难以证明的属性上结果不稳定的问题,类似于处理不稳定的测试(flaky tests)的方式。
实验结果
研究问题
- RQ1如何在不改变现有开发实践根本模式的前提下,将形式化验证集成到现有开发工作流中?
- RQ2什么样的‘每周投入产出比’才能合理化开发者在日常开发中投入形式化方法的时间?
- RQ3现有测试产物在多大程度上可以被重新用作形式化规范或验证输入?
- RQ4如何使验证工具在面对不可判定属性时具备足够的可预测性和可靠性,以在常规开发中获得信任?
- RQ5哪些设计与工具实践可以减轻形式化验证的认知和工程负担,同时仍能提升软件的可信度?
主要发现
- 本文估计,目前使用形式化验证的开发者不足1%,表明存在巨大的采纳潜力。
- 提出在十年内实现采纳率提高两个数量级(即100倍)作为一项现实且具有影响力的长期目标。
- ‘每周投入产出比’被确定为关键指标:开发者只有在投入时间能带来即时、可见的收益时才会采纳形式化方法。
- 将测试框架和单元测试复用为形式化验证工具的输入,可显著降低入门门槛并加速集成。
- 在复杂或不可判定属性上验证结果的不稳定性,与不稳定的测试问题类似,因此需要工具支持性能分析与可预测性。
- 面向验证的设计实践(即修改代码以简化验证)可提升工具性能并增强开发者信任,类似于已建立的硬件设计原则。
更好的研究,从现在开始
从阅读论文到最终审阅,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。