Usable Verification of Object-Oriented Programs by Combining Static and Dynamic Techniques

  • Julian Tschannen
  • Carlo A. Furia
  • Martin Nordio
  • Bertrand Meyer
Part of the Lecture Notes in Computer Science book series (LNCS, volume 7041)


With formal techniques becoming more and more powerful, the next big challenge is making software verification practical and usable. The Eve verification environment contributes to this goal by seamlessly integrating a static prover and an automatic testing tool into a development environment. The paper discusses the general principles behind the integration of heterogeneous verification tools; the peculiar challenges involved in combining static proofs and dynamic testing techniques; and how the combination, implemented in Eve through a blackboard architecture, can improve the user experience with little overhead over usual development practices. Eve is freely available for download.


Combine Static Correctness Proof Correctness Score Dynamic Technique Separation Logic 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Ammons, G., Bodík, R., Larus, J.R.: Mining specifications. In: POPL, pp. 4–16 (2002)Google Scholar
  2. 2.
    Barnett, M., Leino, K.R.M., Schulte, W.: The Spec# Programming System: An Overview. In: Barthe, G., Burdy, L., Huisman, M., Lanet, J.-L., Muntean, T. (eds.) CASSIS 2004. LNCS, vol. 3362, pp. 49–69. Springer, Heidelberg (2005)CrossRefGoogle Scholar
  3. 3.
    Beyer, D., Henzinger, T.A., Jhala, R., Majumdar, R.: The software model checker Blast. STTT 9(5-6), 505–525 (2007)CrossRefGoogle Scholar
  4. 4.
    Cadar, C., Ganesh, V., Pawlowski, P.M., Dill, D.L., Engler, D.R.: EXE: Automatically generating inputs of death. ACM Trans. Inf. Syst. Secur. 12 (2008)Google Scholar
  5. 5.
    Chalin, P.: Are practitioners writing contracts? In: Butler, M., Jones, C.B., Romanovsky, A., Troubitsyna, E. (eds.) Fault-Tolerant Systems. LNCS, vol. 4157, pp. 100–113. Springer, Heidelberg (2006)CrossRefGoogle Scholar
  6. 6.
    Cousot, P., Cousot, R.: Abstract interpretation: A unified lattice model for static analysis of programs by construction or approximation of fixpoints. In: POPL, pp. 238–252 (1977)Google Scholar
  7. 7.
    Dallmeier, V., Knopp, N., Mallon, C., Hack, S., Zeller, A.: Generating test cases for specification mining. In: ISSTA (July 2010)Google Scholar
  8. 8.
    Distefano, D., Parkinson, M.J.: jStar: Towards practical verification for Java. In: Proceedings of OOPSLA, pp. 213–226 (2008)Google Scholar
  9. 9.
    Ernst, M.: Dynamically Discovering Likely Program Invariants. PhD thesis, University of Washington, US (2000)Google Scholar
  10. 10.
    Ernst, M.D.: How tests and proofs impede one another: The need for always-on static and dynamic feedback. In: Fraser, G., Gargantini, A. (eds.) TAP 2010. LNCS, vol. 6143, pp. 1–2. Springer, Heidelberg (2010)CrossRefGoogle Scholar
  11. 11.
    Eve: Eiffel verification environment,
  12. 12.
    Flanagan, C., Leino, K.R.M., Lillibridge, M., Nelson, G., Saxe, J.B., Stata, R.: Extended static checking for Java. In: PLDI, pp. 234–245. ACM, New York (2002)Google Scholar
  13. 13.
    Godefroid, P., Klarlund, N., Sen, K.: DART: directed automated random testing. In: Proceedings of PLDI, pp. 213–223. ACM, New York (2005)Google Scholar
  14. 14.
    Hoare, C.A.R., Misra, J.: Preface to special issue on software verification. ACM Comput. Surv. 41(4) (2009)Google Scholar
  15. 15.
    Hunt, J.: Blackboard architectures, JayDee Technology Ltd. 27 (2002)Google Scholar
  16. 16.
    Jacobs, B., Smans, J., Piessens, F.: A quick tour of the VeriFast program verifier. In: Ueda, K. (ed.) APLAS 2010. LNCS, vol. 6461, pp. 304–311. Springer, Heidelberg (2010)CrossRefGoogle Scholar
  17. 17.
    Korel, B.: Automated test data generation for programs with procedures. In: Proceedings of ISSTA, pp. 209–215. ACM, New York (1996)Google Scholar
  18. 18.
    Meyer, B.: Seven principles of software testing. Computer 41, 99–101 (2008)CrossRefGoogle Scholar
  19. 19.
    Meyer, B., Fiva, A., Ciupa, I., Leitner, A., Wei, Y., Stapf, E.: Programs that test themselves. IEEE Software 42, 46–55 (2009)Google Scholar
  20. 20.
    Nordio, M., Calcagno, C., Meyer, B., Müller, P., Tschannen, J.: Reasoning about Function Objects. In: Vitek, J. (ed.) TOOLS 2010. LNCS, vol. 6141, pp. 79–96. Springer, Heidelberg (2010)CrossRefGoogle Scholar
  21. 21.
    Polikarpova, N., Ciupa, I., Meyer, B.: A comparative study of programmer-written and automatically inferred contracts. In: ISSTA, pp. 93–104 (2009)Google Scholar
  22. 22.
    Rajamani, S.K.: Verification, testing and statistics. In: Cavalcanti, A., Dams, D.R. (eds.) FM 2009. LNCS, vol. 5850, pp. 33–40. Springer, Heidelberg (2009)CrossRefGoogle Scholar
  23. 23.
    Sen, K., Marinov, D., Agha, G.: CUTE: a concolic unit testing engine for C. In: Proceedings of ESEC/FSE, pp. 263–272. ACM, New York (2005)CrossRefGoogle Scholar
  24. 24.
    International conference on tests and proofs. LNCS. Springer, Heidelberg (2007-2010)Google Scholar
  25. 25.
    Tillmann, N., de Halleux, J.: Pex–white box test generation for .NET. In: Beckert, B., Hähnle, R. (eds.) TAP 2008. LNCS, vol. 4966, pp. 134–153. Springer, Heidelberg (2008)CrossRefGoogle Scholar
  26. 26.
    Tillmann, N., Schulte, W.: Parameterized unit tests. In: Proceedings of ESEC/FSE, pp. 253–262. ACM, New York (2005)CrossRefGoogle Scholar
  27. 27.
    Tschannen, J., Furia, C.A., Nordio, M., Meyer, B.: Verifying Eiffel programs with Boogie. In: BOOGIE workshop (2011),
  28. 28.
    Usable verification workshop (November 2010),,
  29. 29.
    Wei, Y., Furia, C.A., Kazmin, N., Meyer, B.: Inferring better contracts. In: Proceedings of ICSE 2011, pp. 191–200 (2011)Google Scholar
  30. 30.
    Wei, Y., Gebhardt, S., Oriol, M., Meyer, B.: Satisfying test preconditions through guided object selection. In: Proceedings of ICST 2010, pp. 303–312 (2010)Google Scholar
  31. 31.
    Wei, Y., Oriol, M., Meyer, B.: Is coverage a good measure of testing effectiveness? Technical Report 674, ETH Zurich (2010)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2011

Authors and Affiliations

  • Julian Tschannen
    • 1
  • Carlo A. Furia
    • 1
  • Martin Nordio
    • 1
  • Bertrand Meyer
    • 1
  1. 1.Chair of Software EngineeringETH ZurichSwitzerland

Personalised recommendations