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.
- Barnes, John. "SPARK - The Proven Approach to High Integrity Software". ISBN 978-0-957290-50-1, 2012. Google Scholar
Digital Library
- 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 Scholar
- 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 Scholar
- 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 Scholar
- ISO/IEC 14882:2003, "Programming languages - C++", 2003.Google Scholar
- ISO/IEC 14882:2011, "Programming languages - C++", 2011.Google Scholar
- ISO/IEC TR 24772:2013 "Guidance to avoiding vulnerabilities in programming languages through language selection and use", second edition.Google Scholar
- 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 Scholar
Digital Library
- RTCA. DO-332 Object-Oriented Technology and Related Techniques Supplement to DO-178C and DO-278A, RTCA, 2011.Google Scholar
- 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 Scholar
Digital Library
- Dos Reis & Stroustrup. "Specifying C++ concepts", Dos Reis, Gabriel, and Bjarne Stroustrup. ACM SIGPLAN Notices 41.1 (2006): 295--308. Google Scholar
Digital Library
- Batty, Mark, et al. "Mathematizing C++ concurrency." ACM SIGPLAN Notices. Vol. 46. No. 1. ACM, 2011. Google Scholar
Digital Library
- IEEE 754-2008, "IEEE Standard for Floating-Point Arithmetic", ISBN 978-0-7381-5752-8, 2008.Google Scholar
- Leavens, Gary T. "An overview of Larch/C++: Behavioral specifications for C++ modules." Object-Oriented Behavioral Specifications. Springer US, 1996. 121--142.Google Scholar
Cross Ref
- Moy, Yannick, and Claude Marché. "The Jessie plugin for Deduction Verification in Frama-C - Tutorial and Reference Manual. INRIA & LRI, 2011."Google Scholar
- 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 Scholar
- 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 Scholar
- 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 Scholar
Digital Library
- 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 Scholar
- 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 Scholar
- 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 Scholar
- http://www.ncl.ac.uk/computing/research/project/4519, retrieved 31 August 2014.Google Scholar
Index Terms
Can C++ be made as safe as SPARK?
Recommendations
Can C++ be made as safe as SPARK?
HILT '14: Proceedings of the 2014 ACM SIGAda annual conference on High integrity language technologySPARK 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 ...
Ironclad C++: a library-augmented type-safe subset of c++
OOPSLA '13The C++ programming language remains widely used, despite inheriting many unsafe features from C---features that often lead to failures of type or memory safety that manifest as buffer overflows, use-after-free vulnerabilities, or abstraction ...
Ironclad C++: a library-augmented type-safe subset of c++
OOPSLA '13: Proceedings of the 2013 ACM SIGPLAN international conference on Object oriented programming systems languages & applicationsThe C++ programming language remains widely used, despite inheriting many unsafe features from C---features that often lead to failures of type or memory safety that manifest as buffer overflows, use-after-free vulnerabilities, or abstraction ...







Comments