210 likes | 227 Views
Proposal For a Software Verification Formal Methods Rodeo. Paul E. Black Lee Badger Chris Johnson Vadim Okun Barbara Guttman David Flater. https://samate.nist.gov/FMSwVRodeo/. The Goal:. Measure the efficacy of tools based on formal methods for verification of real-world software
E N D
Proposal For aSoftware Verification Formal Methods Rodeo Paul E. Black Lee Badger Chris Johnson Vadim Okun Barbara Guttman David Flater https://samate.nist.gov/FMSwVRodeo/
The Goal: Measure the efficacy of tools based on formal methods for verification of real-world software to motivate the use and improvement of such tools.
Steps of the Rodeo: • Develop a tool to measure “complexity” properties of production software. Use it to • Find a suite of test programs. • Run verifiers and proof validators against the suite in a competition or “rodeo.” • Assess findings to quantify improvement and identify research opportunities. Repeat steps 2 through 4
Our Approach Software Complexity Photo by Jordan Heinrichs on Unsplash
A Complexity Measurement Tool • Identify quantities embodied in test suites of SV-COMP, RERS, VerifyThis, etc.
A Complexity Measurement Tool • Identify quantities embodied in test suites of SV-COMP, RERS, VerifyThis, etc. • Build a tool to measure those quantities.
A Complexity Measurement Tool • Identify quantities embodied in test suites of SV-COMP, RERS, VerifyThis, etc. • Build a tool to measure those quantities. • Calibrate tool against those test suites.
A Complexity Measurement Tool of properties that are • automated, • objective, and • relevant.
Our Approach Software Complexity Test Suites Photo by Jordan Heinrichs on Unsplash
Test Suite • Realistic software (and specs), of selected size, with various properties to “prove.”
Test Suite Criteria • Select from existing applications • possibly generate code from those • Computational software • Not embedded, distributed, real time, etc. • Open source, good quality, widely used • Some software not in C • Prefer software that has formal specs
Our Approach Software Complexity Test Suites Verification & Proof Validation Photo by Jordan Heinrichs on Unsplash
Stereotype Verification Source code Verify Pass (Fail)
Two-Step: Verify and Check Source code Verify Witnesses Witness Checker Pass (Fail)
Two-Step: Verify and Check Source code Verify Witnesses Witness Checker can be done by user fairly automatically with high assurance Pass (Fail)
Two-Step: Verify and Check Source code Verify Witnesses Witness Checker can be done by user fairly automatically with high assurance Proof Checker
Our Approach Software Complexity Test Suites Software Laboratory Verification & Proof Validation Photo by Jordan Heinrichs on Unsplash
Set Up a Software Laboratory Photo by Windell Oskay Used under Creative Commons 2.0
Set Up a Software Laboratory • Methods and programs to manipulate, transform, and analyze software … and the in-house expertise to use them. • In order to • Quickly get an idea of the potential of new techniques and approaches. • Confirm (or refute) hypothesis … would we find it if the code was like this?
Our Approach Software Complexity Community Engagement Test Suites Software Laboratory Verification & Proof Validation Photo by Jordan Heinrichs on Unsplash