Towards making formal methods normal: meeting developers where they are
This addresses the challenge of making formal methods more accessible to general software developers, but it is incremental as it focuses on integration rather than new foundational techniques.
The paper tackles the problem of low adoption of formal verification in software development by proposing to integrate formal methods into developers' existing workflows, aiming for a two orders of magnitude increase in adoption within a decade by ensuring a positive weekly cost-benefit ratio for developers.
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.