Code to Qed, the Project Manager's Guide to Proof Engineering
Open Access
- 26 August 2024
- journal article
- research article
- Published by Association for Computing Machinery (ACM) in ACM Transactions on Software Engineering and Methodology
- Vol. 33 (7) , 1-50
Abstract
Despite growing efforts and encouraging successes in recent decades, fully formally verified projects are still rare in the industrial landscape. The industry often lacks the tools and methodologies to efficiently scale the proof development process. In this work, we give a comprehensible overview of the proof development process for proof developers and project managers. The goal is to support proof developers by rationalizing the proof development process, which currently relies heavily on their intuition and expertise, and by facilitating communication with the management line. To this end, we concentrate on the aspect of proof manufacturing and highlight the most significant sources of proof effort. We propose means to mitigate the latter through proof practices (proof structuring, proof strategies, and proof planning), proof metrics, and tools. Our approach is project-agnostic, independent of specific proof expertise, and computed estimations do not assume prior similar developments. We evaluate our guidelines using a separation kernel undergoing formal verification, driving the proof process in an optimised way. Feedback from a project manager unfamiliar with proof development confirms the benefits of detailed planning of the proof development steps, clear progress communication to the hierarchy line, and alignment with established practices in the software industry.Keywords
Funding Information
- ANRT convention CIFRE (2020/0380)
- TinyPART
- MESRI-BMBF German-French cybersecurity program (ANR-20-CYAL-0005, and 16KIS1395K)
This publication has 28 references indexed in Scilit:
- The sel4 verification: the art and craft of proof and the reality of commercial support (invited talk)2022
- QED at Large: A Survey of Engineering of Formally Verified SoftwareFoundations and Trends® in Programming Languages, 2019
- Separation logicCommunications of the ACM, 2019
- An empirical research agenda for understanding formal methods productivityInformation and Software Technology, 2015
- Comprehensive formal verification of an OS microkernelACM Transactions on Computer Systems, 2014
- Challenges and Experiences in Managing Large-Scale Proofs2012
- The MILS architecture for high-assurance embedded systemsInternational Journal of Embedded Systems, 2006
- The model checker SPINIEEE Transactions on Software Engineering, 1997
- Social processes and proofs of theorems and programsCommunications of the ACM, 1979
- An axiomatic basis for computer programmingCommunications of the ACM, 1969