System Verification through Program Verification

  • Daniel Dietsch
  • Bernd Westphal
  • Andreas Podelski
Part of the Lecture Notes in Computer Science book series (LNCS, volume 6664)


We present an automatable approach to verify that a system satisfies its requirements by verification of the program that controls the system. The approach can be applied if the interaction of the program with the system hardware can be faithfully described by a table relating domain phenomena and program variables. We show the applicability of the approach with a case study based on a real-world system.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Barnett, M., Chang, B.Y.E., DeLine, R., Jacobs, B., Leino, K.R.M.: Boogie: A Modular Reusable Verifier for Object-Oriented Programs. In: de Boer, F.S., Bonsangue, M.M., Graf, S., de Roever, W.-P. (eds.) FMCO 2005. LNCS, vol. 4111, pp. 364–387. Springer, Heidelberg (2006)CrossRefGoogle Scholar
  2. 2.
    Bjørner, D.: Domains as a prerequisite for requirements and software domain perspectives and facets, requirements aspects and software views. In: Broy, M., Rumpe, B. (eds.) RTSE 1997. LNCS, vol. 1526, pp. 1–41. Springer, Heidelberg (1998)CrossRefGoogle Scholar
  3. 3.
    Bjørner, D.: Domain engineering: A software engineering discipline in need of research. In: Hlavác, V., Jeffery, K.G., Wiedermann, J. (eds.) SOFSEM 2000. LNCS, vol. 1963, pp. 1–17. Springer, Heidelberg (2000)CrossRefGoogle Scholar
  4. 4.
    Bjørner, D.: Domain engineering: a “Radical innovation” for software and systems engineering? A biased account. In: Dershowitz, N. (ed.) Verification: Theory and Practice. LNCS, vol. 2772, pp. 100–144. Springer, Heidelberg (2004)CrossRefGoogle Scholar
  5. 5.
    Caspi, P., Pilaud, D., Halbwachs, N., Plaice, J.: Lustre: A declarative language for programming synchronous systems. In: POPL, pp. 178–188 (1987)Google Scholar
  6. 6.
    Cohen, E., Dahlweid, M., Hillebrand, M.A., Leinenbach, D., Moskal, M., Santen, T., Schulte, W., Tobies, S.: VCC: A Practical System for Verifying Concurrent C. In: Berghofer, S., Nipkow, T., Urban, C., Wenzel, M. (eds.) TPHOLs 2009. LNCS, vol. 5674, pp. 23–42. Springer, Heidelberg (2009)CrossRefGoogle Scholar
  7. 7.
    Halbwachs, N., Raymond, P., Ratel, C.: Generating Efficient Code From Data-Flow Programs. In: PLILP, vol. 22, pp. 207–218 (1991); special Issue on WOFACS 1998Google Scholar
  8. 8.
    Hall, A.: Realising the benefits of formal methods. J. UCS 13(5), 669–678 (2007)Google Scholar
  9. 9.
    IEC 61131 Programmable controllers,
  10. 10.
    Jackson, D.: A Direct Path to Dependable Software. Commun. ACM 52(4), 78–88 (2009)CrossRefGoogle Scholar
  11. 11.
    Jackson, M.: Software Requirements & Specifications: A Lexicon of Practice, Principles and Prejudices. ACM Press/Addison-Wesley Publishing Co., New York, NY, USA (1995)Google Scholar
  12. 12.
    Jackson, M., Zave, P.: Deriving specifications from requirements: An example. In: ICSE, pp. 15–24 (1995)Google Scholar
  13. 13.
    Jones, C.B.: Systematic software development using VDM. Prentice Hall International (UK) Ltd., Hertfordshire (1986)MATHGoogle Scholar
  14. 14.
    Kant, E., Barstow, D.R.: The refinement paradigm: The interaction of coding and efficiency knowledge in program synthesis. IEEE Trans. Software Eng. 7(5), 458–471 (1981)CrossRefGoogle Scholar
  15. 15.
    Lano, K.: The B Language and Method: A Guide to Practical Formal Development. Springer, New York (1996)CrossRefGoogle Scholar
  16. 16.
    Leinenbach, D., Santen, T.: Verifying the microsoft hyper-V hypervisor with VCC. In: Cavalcanti, A., Dams, D. (eds.) FM 2009. LNCS, vol. 5850, pp. 806–809. Springer, Heidelberg (2009)CrossRefGoogle Scholar
  17. 17.
    Nami, M.R., Tehrani, M.S., Sharifi, M.: Applying domain engineering using raise into a particular banking domain. SIGSOFT Softw. Eng. Notes 32(2), 1–6 (2007)CrossRefGoogle Scholar
  18. 18.
    Seater, R., Jackson, D., Gheyi, R.: Requirement Progression in Problem Frames: Deriving Specifications from Requirements. Requir. Eng. 12(2), 77–102 (2007)CrossRefGoogle Scholar
  19. 19.
    Snook, C.F., Harrison, R.: Practitioners’ views on the use of formal methods: an industrial survey by structured interview. Information & Software Technology 43(4), 275–283 (2001)CrossRefGoogle Scholar
  20. 20.
    The RAISE Method Group: The RAISE Development Method. The BCS Practitioners Series, Prentice-Hall International, Englewood Cliffs (1995)Google Scholar
  21. 21.
    The Verifying C Compiler at Codeplex,
  22. 22.
  23. 23.
    Westphal, B., Dietsch, D., Podelski, A., Pahlow, L.: Successful software subcontracting by system verification (submitted)Google Scholar
  24. 24.
    Woodcock, J., Larsen, P.G., Bicarregui, J., Fitzgerald, J.: Formal methods: Practice and experience. ACM Comput. Surv. 41(4), 1–36 (2009)CrossRefGoogle Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2011

Authors and Affiliations

  • Daniel Dietsch
    • 1
  • Bernd Westphal
    • 1
  • Andreas Podelski
    • 1
  1. 1.Albert-Ludwigs Universität FreiburgFreiburgGermany

Personalised recommendations