Skip to main content

A Language for Building Verified Software Components

  • Conference paper
Safe and Secure Software Reuse (ICSR 2013)

Abstract

Safe and secure reuse is only achievable by deploying formally verified software components. This paper presents essential design objectives for languages for building such components and highlights key features in RESOLVEā€”a prototype for such languages. It explains why the language must include specifications as an integral constituent and must have clean and rich semantics, which preclude unconstrained aliasing and other unwanted side-effects. In order that arbitrarily complex components can be given concise and verification amenable specifications, an adequate language must also include an open-ended mechanism for incorporating additional mathematical theories. Given these essential characteristics, safe and secure reuse cannot be attained within popular languages, such as C++ or Java, either by constraining them or by extending them. Better languages are necessary.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 39.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. Hoare, C.A.R.: The Verifying Compiler. A Grand Challenge for Computing Research. JACMĀ 50(1), 63ā€“69 (2003)

    ArticleĀ  Google ScholarĀ 

  2. Klebanov, V., et al.: The 1st Verified Software Competition: Experience Report. In: Butler, M., Schulte, W. (eds.) FM 2011. LNCS, vol.Ā 6664, pp. 154ā€“168. Springer, Heidelberg (2011)

    ChapterĀ  Google ScholarĀ 

  3. Sitaraman, M., et al.: Reasoning About Software-Component Behavior. In: Frakes, W.B. (ed.) ICSR 2000. LNCS, vol.Ā 1844, pp. 266ā€“283. Springer, Heidelberg (2000)

    ChapterĀ  Google ScholarĀ 

  4. Sitaraman, M., Adcock, B., Avigad, J., Bronish, D., Bucci, B., Frazier, D., Friedman, H.M., Harton, H.K., Heym, W., Kirschenbaum, J., Krone, J., Smith, H., Weide, B.W.: Building a Push-Button RESOLVE Verifier: Progress and Challenges. Formal Aspects of ComputingĀ 23(5), 607ā€“626 (2011)

    ArticleĀ  Google ScholarĀ 

  5. Adcock, B.: Working Towards the Verified Software Process. Ph. D. thesis, Computer Science and Engineering, The Ohio State University (2010)

    Google ScholarĀ 

  6. Harton, H.K.: Mechanical and Modular Verification Condition Generation for Object-Based Software. Ph. D. Dissertation, Clemson University, 305 pages (2011)

    Google ScholarĀ 

  7. Cook, C.T., Harton, H.K., Smith, H., Sitaraman, M.: Specification engineering and modular verification using a web-integrated verifying compiler. In: Proceedings of the International Conference on Software Engineering (ICSE), pp. 1379ā€“1382 (2012)

    Google ScholarĀ 

  8. Kulczycki, G.: Direct Reasoning. Ph. D. Dissertation, Clemson University, 183 pages (2004)

    Google ScholarĀ 

  9. Smith, H.: Engineering Specifications and Mathematics for Verified Software. Ph. D. Dissertation, Clemson University, (to appear, 2013)

    Google ScholarĀ 

  10. Kirschenbaum, J., Adcock, B., Bronish, D., Smith, H., Harton, H., Sitaraman, M., Weide, B.W.: Verifying Component-Based Software: Deep Mathematics or Simple Bookkeeping? In: Edwards, S.H., Kulczycki, G. (eds.) ICSR 2009. LNCS, vol.Ā 5791, pp. 31ā€“40. Springer, Heidelberg (2009)

    ChapterĀ  Google ScholarĀ 

  11. Harms, D.E., Weide, B.W.: Copying and Swapping: Influences on the Design of Reusable Software Components. IEEE Transactions on Software EngineeringĀ 17(5), 424ā€“435 (1991)

    ArticleĀ  Google ScholarĀ 

  12. 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)

    ChapterĀ  Google ScholarĀ 

  13. DeMillo, R.A., Lipton, R.J., Perlis, A.J.: Social Processes and Proofs of Theorems and Programs. Comm. ACMĀ 22(5), 271ā€“280 (1979)

    ArticleĀ  Google ScholarĀ 

  14. Cook, C.T., Drachova, S., Sun, Y.-S., Sitaraman, M., Carver, J., Hollingsworth, J.E.: Specification and reasoning in SE Projects Using a Web IDE. In: Proceedings Conference on Software Engineering Education & Technology, CSEE&T (2013)

    Google ScholarĀ 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

Ā© 2013 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Kulczycki, G. et al. (2013). A Language for Building Verified Software Components. In: Favaro, J., Morisio, M. (eds) Safe and Secure Software Reuse. ICSR 2013. Lecture Notes in Computer Science, vol 7925. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-38977-1_23

Download citation

  • DOI: https://doi.org/10.1007/978-3-642-38977-1_23

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-642-38976-4

  • Online ISBN: 978-3-642-38977-1

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics