Abstract
Static program analysis is a viable, sound and automatic technique to prove correctness properties about programs, both functional properties as well as non-functional properties. It is one of the techniques, highly recommended for high criticality levels by several international software-quality standards for the domains of transportation, healthcare, factory automation, and electric/electronic systems. The precision of static analysis increases the more information is made available to it. This additional information can be given by programmer annotations, or it can be transferred from the model level in model-based software design. We give an introduction to static program analysis as a verification technology, describe several applications to the development of safety-critical systems, and show how it can be integrated into a model-based design flow.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
Similar content being viewed by others
References
AbsSint, http://www.absint.com/ait
Blanchet, B., Cousot, P., Cousot, R., Feret, J., Mauborgne, L., Miné, A., Monniaux, D., Riva, X.: A static analyzer for large safety-critical software. In: Proceedings of the ACM SIGPLAN 2003 Conference on Programming Language Design and Implementation, PLDI 2003, pp. 196–207. ACM, New York (2003)
Cousot, P., Cousot, R.: Abstract interpretation: A unified lattice model for static analysis of programs by construction or approximation of fixpoints. In: POPL 1977: Proceedings of the 4th ACM SIGACT-SIGPLAN Symposium on Principles of Programming Languages, pp. 238–252. ACM, New York (1977)
Ferdinand, C., Heckmann, R., Langenbach, M., Martin, F., Schmidt, M., Theiling, H., Thesing, S., Wilhelm, R.: Reliable and precise WCET determination for a real-life processor. In: Henzinger, T.A., Kirsch, C.M. (eds.) EMSOFT 2001. LNCS, vol. 2211, pp. 469–485. Springer, Heidelberg (2001)
Ferdinand, C., Heckmann, R., Sergent, T.L., Lopes, D., Martin, B., Fornari, X., Martin, F.: Combining a high-level design tool for safety-critical systems with a tool for WCET analysis on executables. In: ERTS2 (2008)
Ferdinand, C., Wilhelm, R.: Efficient and precise cache behavior prediction for real-time systems. Real-Time Systems 17(2-3), 131–181 (1999)
Kästner, D., Ferdinand, C.: Efficient verification of non-functional safety properties by abstract interpretation: Timing, stack consumption, and absence of runtime errors. In: Proceedings of the 29th International System Safety Conference, ISSC 2011, Las Vegas (2011)
Kästner, D., Ferdinand, C.: Static verification of non-functional requirements in the ISO-26262. Embedded World Congress (2012)
Kästner, D., Kiffmeier, U., Fleischer, D., Nenova, S., Schlickling, M., Ferdinand, C.: Integrating model-based code generators with static program analyzers. In: Embedded World. Design & Elektronik (2013)
Kildall, G.A.: A unified approach to global program optimization. In: Fischer, P.C., Ullman, J.D. (eds.) POPL, pp. 194–206. ACM (1973)
Kreiker, J., Tarlecki, A., Vardi, M.Y., Wilhelm, R.: Modeling, Analysis, and Verification - the Formal Methods Manifesto 2010 (Dagstuhl Perspectives Workshop 10482). Dagstuhl Manifestos 1(1), 21–40 (2011)
Leroy, X.: Formally verifying a compiler: Why? how? how far? In: CGO. IEEE (2011)
Lev-Ami, T., Reps, T.W., Sagiv, S., Wilhelm, R.: Putting static analysis to work for verification: A case study. In: ISSTA, pp. 26–38 (2000)
PolySpace, http://www.mathworks.de/products/polyspace/
Raymond, P., Maiza, C., Parent-Vigouroux, C., Carrier, F.: Timing analysis enhancement for synchronous program. In: RNTS (2013)
Seidl, H., Wilhelm, R., Hack, S.: Compiler Design - Analysis and Transformation. Springer (2012)
Souyris, J., Pavec, E.L., Himbert, G., Jgu, V., Borios, G.: Computing the worst-case execution time of an avionics program by abstract interpretation. In: Proceedings of the 5th Intl Workshop on Worst-Case Execution Time (WCET) Analysis, pp. 21–24 (2005)
Wilhelm, R.: Determining bounds on execution times. In: Zurawski, R. (ed.) Handbook on Embedded Systems, ch. 14. CRC Press (2006)
Yahav, E.: Verifying safety properties of concurrent java programs using 3-valued logic. In: Hankin, C., Schmidt, D. (eds.) POPL, pp. 27–40. ACM (2001)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2014 Springer International Publishing Switzerland
About this paper
Cite this paper
Wilhelm, R. (2014). Software Quality Assurance by Static Program Analysis. In: Winkler, D., Biffl, S., Bergsmann, J. (eds) Software Quality. Model-Based Approaches for Advanced Software and Systems Engineering. SWQD 2014. Lecture Notes in Business Information Processing, vol 166. Springer, Cham. https://doi.org/10.1007/978-3-319-03602-1_1
Download citation
DOI: https://doi.org/10.1007/978-3-319-03602-1_1
Publisher Name: Springer, Cham
Print ISBN: 978-3-319-03601-4
Online ISBN: 978-3-319-03602-1
eBook Packages: Computer ScienceComputer Science (R0)