Abstract
Static program slicing is a technique to detect the program parts (i.e. the “slice”) of the given program possibly affecting a given property. The technique is of interest for analysing safety-critical software, since it can identify the program parts that may affect various safety properties. Verification efforts can then be directed towards those parts, leading to a more efficient verification process.
We have developed a novel method for static backward program slicing. The method works for well-structured programs, as commonly demanded by coding standards for safety-critical software. It utilises the program structure to obtain a highly efficient slicing process, where control dependencies are inferred from the program structure, and the slicing is done on-the-fly concurrently with the data dependence analysis.
We have evaluated our method experimentally. For applications that require few slices to be taken, like checking for a set of safety properties, we obtain large speedups as compared with the standard method for static backward program slicing. We have also investigated how the speedup varies with various parameters such as code size, size of the slice relative to the full program, and relative frequency of conditions in the code.
This is a preview of subscription content, log in via an institution.
Buying options
Tax calculation will be finalised at checkout
Purchases are for personal use only
Learn about institutional subscriptionsPreview
Unable to display preview. Download preview PDF.
References
Agrawal, H.: On slicing programs with jump statements. SIGPLAN Not. 29(6), 302–312 (1994)
Ball, T., Horwitz, S.: Slicing programs with arbitrary control-flow. In: Fritzson, P.A. (ed.) Proc. First International Workshop on Automated and Algorithmic Debugging, AADEBUG 1993. LNCS, vol. 749. pp. 206–222. Springer, Heidelberg (1993)
Barros, J.B., da Cruz, D., Henriques, P.R., Pinto, J.S.: Assertion-based slicing and slice graphs. In: Proceedings of the 2010 8th IEEE International Conference on Software Engineering and Formal Methods, SEFM 2010, pp. 93–102. IEEE Computer Society, Washington, DC (2010)
Bent, L., Atkinson, D.C., Griswold, W.G.: A qualitative study of two whole-program slicers for C. University of California San Diego, Tech. rep. (2000)
Binkley, D., Harman, M.: A large-scale empirical study of forward and backward static slice size and context sensitivity. In: Proc. International Conference on Software Maintenance, ICSM 2003, p. 44. IEEE Computer Society, Washington, DC (2003)
Binkley, D., Harman, M.: A survey of empirical results on program slicing. In: Advances in Computers, Advances in Computers, vol. 62, pp. 105–178. Elsevier (2004)
Canfora, G.: Conditioned program slicing. Information and Software Technology 40(11–12), 595–607 (1998)
Choi, J.D., Ferrante, J.: Static slicing in the presence of goto statements. ACM Trans. Program. Lang. Syst. 16(4), 1097–1113 (1994)
Ferrante, J., Ottenstein, K.J., Warren, J.D.: The program dependence graph and its use in optimization. ACM Trans. Program. Lang. Syst. 9(3), 319–349 (1987)
Harman, M., Binkley, D., Danicic, S.: Amorphous program slicing. In: Software Focus, pp. 70–79. IEEE Computer Society Press (1997)
Hong, H.S., Lee, I., Sokolsky, O.: Abstract slicing: A new approach to program slicing based on abstract interpretation and model checking. In: 2013 IEEE 13th International Working Conference on Source Code Analysis and Manipulation (SCAM), pp. 25–34 (2005)
Horwitz, S., Reps, T., Binkley, D.: Interprocedural slicing using dependence graphs. ACM Trans. Program. Lang. Syst. 12(1), 26–60 (1990)
Korel, B.: Dynamic program slicing. Information Processing Letters 29 (October 1988)
Kraft, J.: Enabling Timing Analysis of Complex Embedded Software Systems. Ph.D. thesis, Mälardalen University Press (August 2010)
Lisper, B., Masud, A.N., Khanfar, H.: Static backward demand-driven slicing. In: Proceedings of the 2015 Workshop on Partial Evaluation and Program Manipulation, PEPM 2015, pp. 115–126. ACM, New York (2015)
Lyle, J.R., Binkley, D.: Program slicing in the presence of pointers (1993) (extended abstract)
Lyle, J.R.: Evaluating Variations on Program Slicing for Debugging (Data-flow, Ada). Ph.D. thesis, College Park, MD, USA (1984)
Mastroeni, I., Nikolić, D.J.: Abstract Program Slicing: From Theory towards an Implementation. In: Dong, J.S., Zhu, H. (eds.) ICFEM 2010. LNCS, vol. 6447, pp. 452–467. Springer, Heidelberg (2010)
Nielson, F., Nielson, H.R., Hankin, C.: Principles of Program Analysis, 2nd edn. Springer (2005). iSBN 3-540-65410-0
Ottenstein, K.J., Ottenstein, L.M.: The program dependence graph in a software development environment. SIGSOFT Softw. Eng. Notes 9(3), 177–184 (1984)
Reps, T., Horwitz, S., Sagiv, M., Rosay, G.: Speeding up slicing. In: Proceedings of the 2Nd ACM SIGSOFT Symposium on Foundations of Software Engineering, SIGSOFT 1994, pp. 11–20. ACM, New York (1994)
Sinha, S., Harrold, M.J., Rothermel, G.: System-dependence-graph-based slicing of programs with arbitrary interprocedural control flow. In: Proceedings of the 21st International Conference on Software Engineering, ICSE 1999, pp. 432–441. ACM, New York (1999)
Tip, F.: A survey of program slicing techniques. Journal of Programming Languages 3, 121–189 (1995)
Weiser, M.: Program Slicing. IEEE Transactions on Software Engineering SE-10(4), 352–357 (1984)
Weiser, M.D.: Program Slices: Formal, Psychological, and Practical Investigations of an Automatic Program Abstraction Method. Ph.D. thesis, Ann Arbor, MI, USA (1979), aAI8007856
Xu, B., Qian, J., Zhang, X., Wu, Z., Chen, L.: A brief survey of program slicing. SIGSOFT Softw. Eng. Notes 30(2), 1–36 (2005)
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2015 Springer International Publishing Switzerland
About this paper
Cite this paper
Khanfar, H., Lisper, B., Masud, A.N. (2015). Static Backward Program Slicing for Safety-Critical Systems. In: de la Puente, J., Vardanega, T. (eds) Reliable Software Technologies – Ada-Europe 2015. Ada-Europe 2015. Lecture Notes in Computer Science(), vol 9111. Springer, Cham. https://doi.org/10.1007/978-3-319-19584-1_4
Download citation
DOI: https://doi.org/10.1007/978-3-319-19584-1_4
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-319-19583-4
Online ISBN: 978-3-319-19584-1
eBook Packages: Computer ScienceComputer Science (R0)