Skip to main content
Log in

Slicing Software for Model Construction

  • Published:
Higher-Order and Symbolic Computation

Abstract

Applying finite-state verification techniques (e.g., model checking) to software requires that program source code be translated to a finite-state transition system that safely models program behavior. Automatically checking such a transition system for a correctness property is typically very costly, thus it is necessary to reduce the size of the transition system as much as possible. In fact, it is often the case that much of a program's source code is irrelevant for verifying a given correctness property.

In this paper, we apply program slicing techniques to remove automatically such irrelevant code and thus reduce the size of the corresponding transition system models. We give a simple extension of the classical slicing definition, and prove its safety with respect to model checking of linear temporal logic (LTL) formulae. We discuss how this slicing strategy fits into a general methodology for deriving effective software models using abstraction-based program specialization.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Similar content being viewed by others

References

  1. Ball, T. and Horwitz, S. Slicing programs with arbitrary control-flow. In Lecture Notes in Computer Science, Vol. 749, Proceedings of the First International Workshop on Automated and Algorithmic Debugging, P. Fritzson (Ed.). Springer-Verlag, 1993.

  2. Ball, T. and Horwitz, S. Slicing programs with arbitrary control flow (extended version). Technical Report 1128, University of Wisconsin, December 1992.

  3. Bates, S. and Horwitz, S. Incremental program testing using program dependence graphs. In Conference Record of the Twentieth Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, Charleston, South Carolina, January 1993, pp. 384–396.

  4. Burch, J.R., Clarke, E.M., McMillan, K.L., Dill, D.L., and Hwang, L.J. Symbolic model checking: 1020 states and beyond. In Proceedings of the Fifth Annual IEEE Symposium on Logic in Computer Science, 1990, pp. 428–439.

  5. Cattel, T. Process control design using SPIN. In Proceedings of the First SPIN Workshop, October 1995.

  6. Chang, J. and Richardson, D.J.H. Static and dynamic specification slicing. In Proceedings of the Fourth Irvine Software Symposium, April 1994.

  7. Choi, J.D. and Ferrante, J. Static slicing in the presence of GOTO statements. ACMTransactions on Programming Languages and Systems, 16(4) (1994) 1097–1113.

    Google Scholar 

  8. Cimatti, A., Giunchiglia, F., Mongardi, G., Torielli, F., and Traverso, P. Model checking safety critical software with SPIN: An application to a railway interlocking system. In Proceedings of the Third SPIN Workshop, April 1997.

  9. Cimitile, A., De Lucia, A., and Munro, M. Identifying reusable functions using specification driven program slicing: A case study. In Proceedings of the International Conference on Software Maintenance, G. Caldiera and K. Bennett (Eds.). Washington, October 1995, IEEE Computer Society Press, pp. 124–133.

  10. Clarke, E.M., Fujita, M., Rajan, S.P., Reps, T., Shankar, S., and Teitelbaum, T. Program slicing of hardware description languages. In Proceedings of CHARME'99, September 1999.

  11. Clarke, E.M., Grumberg, O., and Long, D.E. Model checking and abstraction. ACM Transactions on Programming Languages and Systems, 16(5) (1994) 1512–1542.

    Google Scholar 

  12. Corbett, J.C., Dwyer, M.B., Hatcliff, J., Laubach, S., Păsăreanu, C.S., Robby, and Hongjun Zheng. Bandera: Extracting finite-state models from Java source code. In Proceedings of the 22nd International Conference on Software Engineering, June 2000.

  13. Corbett, J.C. Evaluating deadlock detection methods for concurrent software. IEEE Transactions on Software Engineering, 22(3) (1996) 161–180.

    Google Scholar 

  14. Cousot, P. and Cousot, R. Abstract interpretation: A unified lattice model for static analysis of programs by construction or approximation of fixpoints. In Conference Record of the Fourth Annual ACM Symposium on Principles of Programming Languages, 1977, pp. 238–252.

  15. Dams, D. Abstract interpretation and partition refinement for model checking. PhD Thesis, Eindhoven University of Technology, July 1996.

  16. Dams, D., Gerth, R., and Grumberg, O. Abstract interpretation of reactive systems. ACM Transactions on Programming Languages and Systems, 19(2) (1997) 253–291.

    Google Scholar 

  17. Dwyer, M. and Hatcliff, J. Slicing software for model construction. In Proceedings of the 1999 ACMWorkshop on Partial Evaluation and Program Manipulation (PEPM'99), January 1999, O. Danvy (Ed.). BRICS Notes Series NS-99-1.

  18. Dwyer, M., Hatcliff, J., and Nanda, M. Using partial evaluation to enable verification of concurrent software. ACM Computing Surveys, 30(es), September 1998. Special issue dedicated to 1998 Symposium on Partial Evaluation.

  19. Dwyer, M.B. and Pasareanu, C.S. Filter-based model checking of partial systems. In Proceedings of the Sixth ACM SIGSOFT Symposium on Foundations of Software Engineering, November 1998.

  20. Dwyer, M.B. and Pasareanu, C.S. Model checking generic container implementations.Technical Report 98-10, Kansas State University, Department of Computing and Information Sciences, 1998.

  21. Dwyer, M.B., Pasareanu, C.S., and Corbett, J.C. Translating Ada programs for model checking: A tutorial. Technical Report 98-12, Kansas State University, Department of Computing and Information Sciences, 1998.

  22. Dwyer, M.B., Avrunin, G.S., and Corbett, J.C. Patterns in property specifications for finite-state verification. In Proceedings of the 21st International Conference on Software Engineering, May 1999.

  23. Gamma, E., Helm, R., Johnson, R., and Vlissides, J. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley, 1994.

  24. Godefroid, P. and Wolper, P. Using partial orders for the efficient verification of deadlock freedom and safety properties. In Proceedings of the Second Workshop on Computer Aided Verification, July 1991, pp. 417–428.

  25. Gomard, C.K. and Jones, N.D. Compiler generation by partial evaluation. In Information Processing '89. Proceedings of the IFIP 11th World Computer Congress, G.X. Ritter (Ed.). IFIP, North-Holland, 1989, pp. 1139–1144.

    Google Scholar 

  26. Hatcliff, J. An introduction to partial evaluation using a simple flowchart language. In Proceedings of the 1998 DIKU International Summer School on Partial Evaluation, J. Hatcliff, P. Thiemann, and T. Mogensen (Eds.). number (to appear) in Tutorials in Computer Science, Copenhagen, Denmark, June 1998.

  27. Hatcliff, J., Corbett, J.C., Dwyer, M.B., Sokolowski, S., and Hongjun Zheng. A formal study of slicing for multi-threaded programs with JVM concurrency primitives. In Proceedings of the 6th International Static Analysis Symposium (SAS'99), September 1999. Lecture Notes in Computer Science, Vol. 1694 pp. 1–18.

    Google Scholar 

  28. Hatcliff, J., Dwyer, M.B., and Laubach, S. Staging static analysis using abstraction-based program specialization. In Principles of Declarative Programming 10th International Symposium, PLILP'98, September 1998. LNCS Vol. 1490.

  29. Hatcliff, J., Dwyer, M.B., Laubach, S., and Muhammad, N. Specializing configurable systems for finite-state verification. Technical Report 98–4, Kansas State University, Department of Computing and Information Sciences, 1998.

  30. Hatcliff, J., Dwyer, M.B., and Hongjun Zheng. Slicing software for model construction (extended version). Technical Report 99–14, Kansas State University, Department of Computing and Information Sciences, 1999.

  31. Heimdahl, M.P.E. and Whalen, M.W. Reduction and slicing of hierarchical state machines. In Lecture Notes in Computer Science, Vol. 1013, Proceedings of the Sixth European Software Engineering Conference (ESEC/FSE 97), M. Jazayeri and H. Schauer (Eds.). Springer-Verlag, September 1997, pp. 450–467.

  32. Holzmann, G.J. The model checker SPIN. IEEE Transactions on Software Engineering, 23(5) (1997) 279–294.

    Google Scholar 

  33. Horwitz, S., Prins, J., and Reps, T. On the adequacy of program dependence graphs for representing programs. In Proceedings of the Fifteenth Annual ACMSymposium on Principles of Programming Languages, San Diego, California, January 1988, pp. 146–157.

  34. Huth, M. and Ryan, M. Logic in Computer Science: Modelling and Reasoning about Systems. Cambridge University Press, 2000.

  35. Millett, L.I. and Teitelbaum, T. Slicing Promela and its applications to model checking, simulation, and protocol understanding. In Proceedings of the 4th International SPIN Workshop, 1998.

  36. Jones, N.D., Gomard, C.K., and Sestoft, P. Partial Evaluation and Automatic Program Generation. Prentice-Hall International, 1993.

  37. Loiseaux, C., Graf, S., Sifakis, J., Bouajiani, A., and Bensalem, S. Property preserving abstractions for the verification of concurrent systems. Formal Methods in System Design, 6(1) (1995) 11–44.

    Google Scholar 

  38. Manna, Z. and Pnueli, A. The Temporal Logic of Reactive and Concurrent Systems: Specification. Springer-Verlag, 1991.

  39. McMillan, K.L. Symbolic Model Checking. Kluwer Academic Publishers, 1993.

  40. Podgurski, A. and Clarke, L.Aformal model of program dependences and its implications for software testing, debugging, and maintenance. IEEE Transactions on Software Engineering, 16(9) (1990) 965-979.

    Google Scholar 

  41. Ramalingam, G. and Reps, T. Semantics of program representation graphs. Technical Report #900, University of Wisconsin, Madison, December 1989.

    Google Scholar 

  42. Reps, T. and Turnidge, T. Program specialization via program slicing. In Lecture Notes in Computer Science, Vol. 1110, Partial Evaluation. Dagstuhl Castle, Germany, February 1996, O. Danvy, R. Glück, and P. Thiemann (Eds.). Springer-Verlag, Berlin, 1996, pp. 409–429.

    Google Scholar 

  43. Reps, T. and Yang, W. The semantics of program slicing. Technical Report #777, Computer Sciences Department, University of Wisconsin, Madison, WI, June 1988.

    Google Scholar 

  44. Reps, T. and Yang, W. The semantics of program slicing and program integration. In Proceedings of the Colloquium on Current Issues in Programming Languages, Barcelona, Spain, March 13–17, 1989. Lecture Notes in Computer Science, Springer-Verlag, New York, NY, March 1989.

    Google Scholar 

  45. Schmidt, D. and Steffen, B. Program analysis as model checking of abstract interpretations. In Lecture Notes in Computer Science, Vol. 1503, Proceedings of the 5th International Static Analysis Symposium (SAS'98), G. Levi (Ed.). Springer-Verlag, Berlin, 1998, pp. 351–380.

    Google Scholar 

  46. Sloane, A.M. and Holdsworth, J. Beyond traditional program slicing. In Proceedings of the 1996 International Symposium on Software Testing and analysis, S.J. Zeil (Ed.). ACM Press, New York, January 1996, pp. 180–186.

    Google Scholar 

  47. Tip, F. A survey of program slicing techniques. Journal of programming languages, 3 (1995) 121–189.

    Google Scholar 

  48. Vallee-Rai, R. and Hendren, L. Jimple: Simplifying Java bytecode for analyses and transformations. Technical Report 1998-4, Sable Research Group, School of Computer Science, McGill University, July 1998.

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

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Rights and permissions

Reprints and permissions

About this article

Cite this article

Hatcliff, J., Dwyer, M.B. & Zheng, H. Slicing Software for Model Construction. Higher-Order and Symbolic Computation 13, 315–353 (2000). https://doi.org/10.1023/A:1026599015809

Download citation

  • Issue Date:

  • DOI: https://doi.org/10.1023/A:1026599015809

Navigation