Skip to main content

Static Backward Program Slicing for Safety-Critical Systems

  • Conference paper
  • First Online:

Part of the book series: Lecture Notes in Computer Science ((LNPSE,volume 9111))

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

Chapter
USD   29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD   39.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD   54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Learn about institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. Agrawal, H.: On slicing programs with jump statements. SIGPLAN Not. 29(6), 302–312 (1994)

    Article  Google Scholar 

  2. 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)

    Google Scholar 

  3. 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)

    Google Scholar 

  4. 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)

    Google Scholar 

  5. 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)

    Google Scholar 

  6. 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)

    Google Scholar 

  7. Canfora, G.: Conditioned program slicing. Information and Software Technology 40(11–12), 595–607 (1998)

    Article  Google Scholar 

  8. Choi, J.D., Ferrante, J.: Static slicing in the presence of goto statements. ACM Trans. Program. Lang. Syst. 16(4), 1097–1113 (1994)

    Article  Google Scholar 

  9. 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)

    Article  MATH  Google Scholar 

  10. Harman, M., Binkley, D., Danicic, S.: Amorphous program slicing. In: Software Focus, pp. 70–79. IEEE Computer Society Press (1997)

    Google Scholar 

  11. 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)

    Google Scholar 

  12. Horwitz, S., Reps, T., Binkley, D.: Interprocedural slicing using dependence graphs. ACM Trans. Program. Lang. Syst. 12(1), 26–60 (1990)

    Article  Google Scholar 

  13. Korel, B.: Dynamic program slicing. Information Processing Letters 29 (October 1988)

    Google Scholar 

  14. Kraft, J.: Enabling Timing Analysis of Complex Embedded Software Systems. Ph.D. thesis, Mälardalen University Press (August 2010)

    Google Scholar 

  15. 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)

    Google Scholar 

  16. Lyle, J.R., Binkley, D.: Program slicing in the presence of pointers (1993) (extended abstract)

    Google Scholar 

  17. Lyle, J.R.: Evaluating Variations on Program Slicing for Debugging (Data-flow, Ada). Ph.D. thesis, College Park, MD, USA (1984)

    Google Scholar 

  18. 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)

    Chapter  Google Scholar 

  19. Nielson, F., Nielson, H.R., Hankin, C.: Principles of Program Analysis, 2nd edn. Springer (2005). iSBN 3-540-65410-0

    Google Scholar 

  20. Ottenstein, K.J., Ottenstein, L.M.: The program dependence graph in a software development environment. SIGSOFT Softw. Eng. Notes 9(3), 177–184 (1984)

    Article  Google Scholar 

  21. 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)

    Google Scholar 

  22. 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)

    Google Scholar 

  23. Tip, F.: A survey of program slicing techniques. Journal of Programming Languages 3, 121–189 (1995)

    Google Scholar 

  24. Weiser, M.: Program Slicing. IEEE Transactions on Software Engineering SE-10(4), 352–357 (1984)

    Google Scholar 

  25. 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

    Google Scholar 

  26. 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)

    Article  Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Husni Khanfar .

Editor information

Editors and Affiliations

Rights and permissions

Reprints 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)

Publish with us

Policies and ethics