A Case Study in Verification of Embedded Network Software

  • Kalyan C. Regula
  • Hampton Smith
  • Heather Harton Keown
  • Jason O. Hallstrom
  • Nigamanth Sridhar
  • Murali Sitaraman
Part of the Lecture Notes in Computer Science book series (LNCS, volume 7226)

Abstract

Embedded network systems support a variety of application domains, including environmental monitoring, social networking, and healthcare. These large networks of low-powered microcontroller-based nodes present challenges in ensuring correctness of the software that runs on these systems. Most embedded networked systems are programmed in C. Verifying software written in C is difficult. In this paper, we take a different approach: We report on our work using the RESOLVE language to program embedded networked systems. Our compiler leverages the RESOLVE verification system and maintains the correctness guarantees established during verification. The verified code is then translated into property-preserving C code that can run on the target hardware.

Keywords

Embed System Program Variable Proof Obligation Bound Model Check Concept Declaration 
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.

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. 1.
    Arora, A., et al.: Kansei: A high-fidelity sensing testbed. IEEE Intern. Comp. 10(2), 35–47 (2006)CrossRefGoogle Scholar
  2. 2.
    Bucci, P., et al.: Part III: Implementing components in resolve. SIGSOFT Softw. Eng. Notes 19(4), 40–51 (1994)MathSciNetCrossRefGoogle Scholar
  3. 3.
    Crocker, D., Carlton, J.: Verification of c programs using automated reasoning. In: SEFM 2007, pp. 7–14. IEEE Computer Society, Washington, DC, USA (2007)Google Scholar
  4. 4.
    Dalton, A., et al.: A testbed for visualizing sensornet behavior. In: IC3N 2008, pp. 1–7. IEEE Computer Society, Washington DC, USA (2008)Google Scholar
  5. 5.
    Edwards, S., et al.: Part ii: Specifying components in resolve. SIGSOFT Softw. Eng. Notes 19(4), 29–39 (1994)CrossRefGoogle Scholar
  6. 6.
    Filliâtre, J.-C., Marché, C.: Multi-prover Verification of C Programs. In: Davies, J., Schulte, W., Barnett, M. (eds.) ICFEM 2004. LNCS, vol. 3308, pp. 15–29. Springer, Heidelberg (2004)CrossRefGoogle Scholar
  7. 7.
    Hanna, Y., Rajan, H., Zhang, W.: Slede: A domain-specific verification framework for sensor network security protocol implementations. In: WiSec 2008, March 31-April 2, pp. 109–118. ACM, New York (2008)CrossRefGoogle Scholar
  8. 8.
    Harton, H.K.: Modular and Mechanical Verification Condition Generation for Object-Based Software. PhD thesis, Clemson University (2011)Google Scholar
  9. 9.
    Kulczycki, G.: Direct Reasoning. PhD thesis, Clemson University, Clemson, South Carolina (January 2004)Google Scholar
  10. 10.
    Kulczycki, G., Smith, H., Harton, H., Sitaraman, M., Ogden, W.F., Hollingsworth, J.E.: The Location Linking Concept: A Basis for Verification of Code Using Pointers. In: Joshi, R., Müller, P., Podelski, A. (eds.) VSTTE 2012. LNCS, vol. 7152, pp. 34–49. Springer, Heidelberg (2012)CrossRefGoogle Scholar
  11. 11.
    Leinenbach, D., Paul, W., Petrova, E.: Towards the formal verification of a c0 compiler: Code generation and implementation correctnes. In: SEFM 2005, pp. 2–12. IEEE Computer Society, Washington, DC, USA (2005)Google Scholar
  12. 12.
    Levis, P., et al.: Tossim: accurate and scalable simulation of entire tinyos applications. In: SenSys 2003, pp. 126–137. ACM, New York (2003)CrossRefGoogle Scholar
  13. 13.
    McCartney, W.P., Sridhar, N.: Abstractions for safe concurrent programming in networked embedded systems. In: SenSys 2006, New York, USA, pp. 167–180 (2006)Google Scholar
  14. 14.
    Merz, F., Falke, S., Sinz, C.: LLBMC: Bounded Model Checking of C and C++ Programs Using a Compiler IR. In: Joshi, R., Müller, P., Podelski, A. (eds.) VSTTE 2012. LNCS, vol. 7152, pp. 146–161. Springer, Heidelberg (2012)CrossRefGoogle Scholar
  15. 15.
    Schulte, W., et al.: A glimpse of a verifying C compiler. In: C/C++ Ver. Workshop (July 2007)Google Scholar
  16. 16.
    Sitaraman, M., et al.: Building a push-button resolve verifier: Progress and challenges. Formal Asp. Comput., 607–626 (2011)Google Scholar
  17. 17.
    Titzer, B., Lee, D., Palsberg, J.: Avrora: scalable sensor network simulation with precise timing. In: IPSN 2005, p. 67. IEEE Press, Piscataway (2005)Google Scholar
  18. 18.
    Tuch, H.: Formal verification of C systems code. J. Autom. Reason. 42(2-4), 125–187 (2009)MathSciNetMATHCrossRefGoogle Scholar
  19. 19.
    Werner-Allen, G., Swieskowski, P., Welsh, M.: Motelab: a wireless sensor network testbed. In: IPSN 2005, p. 68. IEEE Press, Piscataway (2005)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2012

Authors and Affiliations

  • Kalyan C. Regula
    • 1
  • Hampton Smith
    • 1
  • Heather Harton Keown
    • 1
  • Jason O. Hallstrom
    • 1
  • Nigamanth Sridhar
    • 2
  • Murali Sitaraman
    • 1
  1. 1.School of ComputingClemson UniversityClemsonUnited States
  2. 2.Electrical and Computer EngineeringCleveland State UniversityClevelandUnited States

Personalised recommendations