skip to main content
research-article

Can C++ be made as safe as SPARK?

Published:18 October 2014Publication History
Skip Abstract Section

Abstract

SPARK offers a way to develop formally-verified software in a language (Ada) that is designed with safety in mind and is further restricted by the SPARK language subset. However, much critical embedded software is developed in C or C++. We look at whether and how benefits similar to those offered by the SPARK language subset and associated tools can be brought to a C++ development environment.

References

  1. Barnes, John. "SPARK - The Proven Approach to High Integrity Software". ISBN 978-0-957290-50-1, 2012. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. MIRA . "Guidelines for the Use of the C Language in Critical Systems", ISBN 978-1-906400-10-1 (paperback), ISBN 978-1-906400-11-8 (PDF), 2013.Google ScholarGoogle Scholar
  3. MIRA. "Guidelines for the Use of the C++ Language in Critical Systems", ISBN 978-906400-03-3 (paperback), ISBN 978-906400-04-0 (PDF), 2008.Google ScholarGoogle Scholar
  4. Lockheed Martin. "Joint Strike Fighter Air Vehicle C++ Coding Standards for the System Development and Demonstration Program", Document Number 2RDU00001 Rev C, December 2005.Google ScholarGoogle Scholar
  5. ISO/IEC 14882:2003, "Programming languages - C++", 2003.Google ScholarGoogle Scholar
  6. ISO/IEC 14882:2011, "Programming languages - C++", 2011.Google ScholarGoogle Scholar
  7. ISO/IEC TR 24772:2013 "Guidance to avoiding vulnerabilities in programming languages through language selection and use", second edition.Google ScholarGoogle Scholar
  8. Crocker, David, and Judith Carlton. "Verification of C programs using automated reasoning." Software Engineering and Formal Methods, 2007. SEFM 2007. Fifth IEEE International Conference on. IEEE, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. RTCA. DO-332 Object-Oriented Technology and Related Techniques Supplement to DO-178C and DO-278A, RTCA, 2011.Google ScholarGoogle Scholar
  10. Liskov, Barbara H., and Jeannette M. Wing. "A behavioral notion of subtyping." ACM Transactions on Programming Languages and Systems (TOPLAS) 16.6 (1994): 1811--1841. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. Dos Reis & Stroustrup. "Specifying C++ concepts", Dos Reis, Gabriel, and Bjarne Stroustrup. ACM SIGPLAN Notices 41.1 (2006): 295--308. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. Batty, Mark, et al. "Mathematizing C++ concurrency." ACM SIGPLAN Notices. Vol. 46. No. 1. ACM, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. IEEE 754-2008, "IEEE Standard for Floating-Point Arithmetic", ISBN 978-0-7381-5752-8, 2008.Google ScholarGoogle Scholar
  14. Leavens, Gary T. "An overview of Larch/C++: Behavioral specifications for C++ modules." Object-Oriented Behavioral Specifications. Springer US, 1996. 121--142.Google ScholarGoogle ScholarCross RefCross Ref
  15. Moy, Yannick, and Claude Marché. "The Jessie plugin for Deduction Verification in Frama-C - Tutorial and Reference Manual. INRIA & LRI, 2011."Google ScholarGoogle Scholar
  16. Dahlweid, Markus, et al. "VCC: Contract-based modular verification of concurrent C." Software Engineering-Companion Volume, 2009. ICSE-Companion 2009. 31st International Conference on. IEEE, 2009.Google ScholarGoogle Scholar
  17. Carlton, Judith, and David Crocker. "Escher Verification Studio: Perfect Developer and Escher C Verifier." Industrial Use of Formal Methods: Formal Verification: 155--193, 2013. ISBN 13: 9781848213630Google ScholarGoogle Scholar
  18. Jacobs, Bart, et al. "VeriFast: A powerful, sound, predictable, fast verifier for C and Java." NASA Formal Methods. Springer Berlin Heidelberg, 2011. 41--55. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. Rainer-Harbach, Marian. "Methods and Tools for the Formal Verification of Software", Technische Universität Wien, 2011. Retrieved from http://aragorn.ads.tuwien.ac.at/publications/bib/pdf/rainer-harbach_11.pdf, 12 June 2014.Google ScholarGoogle Scholar
  20. Crocker, David. "Safe object-oriented software: the verified design-by-contract paradigm." Proceedings of the Twelfth Safety-Critical Systems Symposium (ed. F. Redmill & T. Anderson) 19--41, Springer-Verlag, London, 2004. ISBN 1-85233-800-8.Google ScholarGoogle Scholar
  21. Spark 2014 Reference Manual, section 7.1.2. Retrieved from http://docs.adacore.com/spark2014-docs/html/lrm/packages.html#external-state, 31 August 2014.Google ScholarGoogle Scholar
  22. http://www.ncl.ac.uk/computing/research/project/4519, retrieved 31 August 2014.Google ScholarGoogle Scholar

Index Terms

  1. Can C++ be made as safe as SPARK?

            Recommendations

            Comments

            Login options

            Check if you have access through your login credentials or your institution to get full access on this article.

            Sign in

            Full Access

            PDF Format

            View or Download as a PDF file.

            PDF

            eReader

            View online with eReader.

            eReader
            About Cookies On This Site

            We use cookies to ensure that we give you the best experience on our website.

            Learn more

            Got it!