Abstract
SPARK 2014 is a modern programming language and a new state-of-the-art tool set for development and verification of high-integrity software. In this paper, we explore the capabilities and limitations of its latest version in the context of building a flight stack for a high-altitude unmanned glider. Towards that, we deliberately applied static analysis early and continuously during implementation, to give verification the possibility to steer the software design. In this process we have identified several limitations and pitfalls of software design and verification in SPARK, for which we give workarounds and protective actions to avoid them. Finally, we give design recommendations that have proven effective for verification, and summarize our experiences with this new language.
The source code for this project is available at github.com/tum-ei-rcs/StratoX.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Similar content being viewed by others
Notes
- 1.
This particular case has been fixed in recent versions of GNATprove.
- 2.
This also has been fixed in recent versions of the embedded ARM RTS.
References
AdaCore: Ada Drivers Library (2015). https://github.com/AdaCore
Brandon, C., Chapin, P.: The use of SPARK in a complex spacecraft. In: HILT (2016)
Burns, A.: The ravenscar profile. ACM SIGAda Ada Lett. 19(4), 49ā52 (1999)
Chapman, R., Schanda, F.: Are we there yet? 20 years of industrial theorem proving with SPARK. In: Klein, G., Gamboa, R. (eds.) ITP 2014. LNCS, vol. 8558, pp. 17ā26. Springer, Cham (2014). doi:10.1007/978-3-319-08970-6_2
Dross, C., Efstathopoulos, P., Lesens, D., Mentr, D., MentrĆ©, D., Moy, Y.: Rail, space, security: three case studies for SPARK 2014. In: ERTS2 2014, pp. 1ā10 (2014)
FilliĆ¢tre, J.C., Paskevich, A.: Why3: Where Programs Meet Provers (2013)
Hoang, D., Moy, Y., Wallenburg, A., Chapman, R.: SPARK 2014 and GNATprove. Int. J. Softw. Tools Technol. Transf. 17(6), 695ā707 (2015)
Meier, L., Tanskanen, P., Fraundorfer, F., Pollefeys, M.: PIXHAWK: a system for autonomous flight using onboard computer vision. In: ICRA, pp. 2992ā2997 (2011)
Schonberg, E., Pucci, V.: Implementation of a simple dimensionality checking system in Ada 2012. In: HILT 2012, pp. 35ā42. ACM, New York (2012)
Trojanek, P., Eder, K.: Verification and testing of mobile robot navigation algorithms: a case study in SPARK. In: IROS 2014, pp. 1489ā1494 (2014)
Xiang, J., Knight, J., Sullivan, K.: Real-world types and their application. In: Koornneef, F., Gulijk, C. (eds.) SAFECOMP 2015. LNCS, vol. 9337, pp. 471ā484. Springer, Cham (2015). doi:10.1007/978-3-319-24255-2_34
Acknowledgements
Thanks to the SPARK 2014 development and support team of AdaCore for their guidance and insights.
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
Ā© 2017 Springer International Publishing AG
About this paper
Cite this paper
Becker, M., Regnath, E., Chakraborty, S. (2017). Development and Verification of a Flight Stack for a High-Altitude Glider in Ada/SPARK 2014. In: Tonetta, S., Schoitsch, E., Bitsch, F. (eds) Computer Safety, Reliability, and Security. SAFECOMP 2017. Lecture Notes in Computer Science(), vol 10488. Springer, Cham. https://doi.org/10.1007/978-3-319-66266-4_7
Download citation
DOI: https://doi.org/10.1007/978-3-319-66266-4_7
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-319-66265-7
Online ISBN: 978-3-319-66266-4
eBook Packages: Computer ScienceComputer Science (R0)