ABSTRACT
The idea of specifying and verifying software to eliminate errors has been studied extensively over the last three decades or more. Recent advances in automated theorem proving have given rise to a range of new verification tools being developed. Despite this, very little is known about the effect of using such tools on software development. In this paper, we present several verification-related usability hypotheses which we believe warrant further investigation. These hypotheses are based on observations from the literature, as well as our own experiences in developing and using the Whiley verification system.
- C. A. R. Hoare and N. Wirth. An axiomatic definition of the programming language PASCAL. Acta Informatica, 2(4):335–355, 1973. Google ScholarDigital Library
- E. W. Dijkstra. Guarded commands, nondeterminancy and formal derivation of programs. CACM, 18:453–457, 1975. Google ScholarDigital Library
- D. Gries. The science of programming. Springer-Verlag, 1981. Google ScholarDigital Library
- S. King. A Program Verifier. PhD thesis, Carnegie-Mellon University, 1969. Google ScholarDigital Library
- K. Broda, S. Eisenbach, H. Khoshnevisan, and Steven Vickers. Reasoned Programming. Prentice Hall, 1994. Google ScholarDigital Library
- Roland Backhouse. Program Construction. Wiley, 2003.Google Scholar
- J.B. Almeida, M.J. Frade, J.S. Pinto, and S Melo de Sousa. Rigorous Software Development, An Introduction to Program Verification. Springer-Verlag, 2011. Google ScholarDigital Library
- Derrick G. Kourie and Bruce W. Watson. The Correctness-by-Construction Approach to Programming. Springer, 2012. Google ScholarDigital Library
- L. Lamport. Specifying Systems, The TLA+ Language and Tools for Hardware and Software Engineers. Addison-Wesley, 2002. Google ScholarDigital Library
- C.A.R. Hoare. The verifying compiler: A grand challenge for computing research. JACM, 50(1):63–69, 2003. Google ScholarDigital Library
- L. Peter Deutsch. An interactive program verifier. Ph.D., 1973.Google Scholar
- D. I. Good. Mechanical proofs about computer programs. In Mathematical logic and programming languages, pages 55– 75, 1985. Google ScholarDigital Library
- D. Luckham, SM German, F. von Henke, R. Karp, P. Milne, D. Oppen, W. Polak, and W. Scherlis. Stanford Pascal Verifier user manual. Technical Report CS-TR-79-731, Stanford University, Department of Computer Science, 1979. Google ScholarDigital Library
- David L. Detlefs, K. Rustan M. Leino, Greg Nelson, and James B. Saxe. Extended static checking. SRC Research Report 159, Compaq Systems Research Center, 1998.Google Scholar
- C. Flanagan, K. Leino, M. Lillibridge, G. Nelson, J. B. Saxe, and R. Stata. Extended static checking for Java. In Proc. PLDI, pages 234–245, 2002. Google ScholarDigital Library
- G. T. Leavens, Y. Cheon, C. Clifton, C. Ruby, and D. R. Cok. How the design of JML accommodates both runtime assertion checking and formal verification. Science of Computer Programming, 55(1-3):185–208, March 2005. Google ScholarDigital Library
- M. Barnett, M. Fähndrich, K. R. M. Leino, P. Müller, W. Schulte, and H. Venter. Specification and verification: the Spec# experience. CACM, 54(6):81–91, 2011. Google ScholarDigital Library
- K. Rustan M. Leino. Dafny: An automatic program verifier for functional correctness. In Proc. LPAR, volume 6355 of LNCS, pages 348–370. Springer-Verlag, 2010. Google ScholarDigital Library
- J. Filliˆatre and A. Paskevich. Why3 — where programs meet provers. In Proc. ESOP, pages 125–128, 2013. Google ScholarDigital Library
- B. Jacobs, J. Smans, P. Philippaerts, F. Vogels, W. Penninckx, and F. Piessens. Verifast: A powerful, sound, predictable, fast verifier for C and Java. pages 41–55. Springer-Verlag, 2011. Google ScholarDigital Library
- D. J. Pearce and L. Groves. Whiley: a platform for research in software verification. In Proc. SLE, pages 238–248, 2013.Google ScholarCross Ref
- D. J. Pearce and Lindsay Groves. Reflections on verifying software with Whiley. In Proc. FTSCS, pages 142–159, 2013.Google Scholar
- J. Bowen and M. Hinchey. Ten commandments of Formal Methods... ten years later. IEEE Computer, 39(1), 2006. Google ScholarDigital Library
- Ted Lewis. Where is software headed? A virtual roundtable. IEEE Computer, 28(8):20–32, August 1995. Google ScholarDigital Library
- L. Lamport. Who builds a house without drawing blueprints? CACM, 58(4):38–41, 2015. Google ScholarDigital Library
- J. Bowen and M. Hinchey. Ten commandments of formal methods. IEEE Computer, 28(4):56–63, 1995. Google ScholarDigital Library
- N. Polikarpova, C. Furia, Y. Pei, Y. Wei, and B. Meyer. What good are strong specifications? In Proc. ICSE, pages 262–271, 2013. Google ScholarDigital Library
- Emerson Murphy-Hill and Dan Grossman. How programming languages will co-evolve with software engineering: a bright decade ahead. In Proc. FOSE. ACM, 2014. Google ScholarDigital Library
- S. C. B. de Souza, N. Anquetil, and K. M. de Oliveira. A study of the documentation essential to software maintenance. In SIGDOC, pages 68–75. ACM Press, 2005. Google ScholarDigital Library
- C. Male, D. J. Pearce, A. Potanin, and C. Dymnikov. Formalisation and implementation of an algorithm for bytecode verification of @NonNull types. Science of Computer Programming, pages 587–568, 2011. Google ScholarDigital Library
- R. W. Floyd. Assigning meaning to programs. In Proceedings of Symposia in Applied Mathematics, volume 19, pages 19– 31. American Mathematical Society, 1967.Google Scholar
- I. R. Katz and J. R. Anderson. Debugging: An analysis of bug-location strategies. HCI, 3(4):351–399, 1987. Google ScholarDigital Library
- S. Fitzgerald, G. Lewandowski, R. McCauley, L. Murphy, B. Simon, L. Thomas, and C. Zander. Debugging: finding, fixing and flailing, a multi-institutional study of novice debuggers. Computer Science Education, 18(2):93–116, 2008.Google ScholarCross Ref
Index Terms
- Some usability hypotheses for verification
Recommendations
Efficient Verification of Sequential and Concurrent C Programs
There has been considerable progress in the domain of software verification over the last few years. This advancement has been driven, to a large extent, by the emergence of powerful yet automated abstraction techniques such as predicate abstraction. ...
Correctness witnesses: exchanging verification results between verifiers
FSE 2016: Proceedings of the 2016 24th ACM SIGSOFT International Symposium on Foundations of Software EngineeringStandard verification tools provide a counterexample to witness a specification violation, and, since a few years, such a witness can be validated by an independent validator using an exchangeable witness format. This way, information about the ...
An Interface Theory for Program Verification
Leveraging Applications of Formal Methods, Verification and Validation: Verification PrinciplesAbstractProgram verification is the problem, for a given program and a specification , of constructing a proof of correctness for the statement “program satisfies specification ” () or a proof of violation ([inline-graphic not available: see fulltext]). ...
Comments