Skip to main content
Log in

Granularity-Driven Dynamic Predicate Slicing Algorithms for Message Passing Systems

  • Published:
Automated Software Engineering Aims and scope Submit manuscript

Abstract

Program Slicing is a well-known decomposition technique that transforms a large program into a smaller one that contains only statements relevant to the computation of a selected function. In this paper, we present two novel predicate-based dynamic slicing algorithms for message passing programs. Unlike more traditional slicing criteria that focus only on parts of the program that influence a variable of interest at a specific position in the program, a predicate focuses on those parts of the program that influence the predicate. The dynamic predicate slices capture some global requirements or suspected error properties of a distributed program and computes all statements that are relevant. The presented algorithms differ from each other in their computational approaches (forward versus backward) and in the granularity of information they provide. A proof of correctness of these algorithms is provided. Through the introduction of dominant states and dominant events, critical statement executions are identified that change the value of the global predicate. Under this formulation, optimizing dynamic predicate slicing becomes a meaningful goal as well. Finally, we present how predicate slices can be applied to support comprehension tasks for analyzing and maintaining distributed programs.

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.

Institutional subscriptions

Similar content being viewed by others

References

  • Agrawal, H. 1994. On slicing programs with jump statements. In Proceedings of the ACMSIGPLAN'94 Conference on Programming Language Design and Implementation, pp. 112–135.

  • Agrawal, H., DeMillo, R., and Spafford, E. 1993. Debugging with dynamic slicing and backtracking. Software?Practice and Experience, 23(6):589–616.

    Google Scholar 

  • Agrawal, H. and Horgan, J. 1990. Dynamic program slicing. In Proceedings of the ACM SIGPLAN'90 Conference on Programming Language Design and Implementation, SIGPLAN Notices, vol. 25, no. 6, pp. 246–256.

  • Binkley, D. and Gallagher, K. 1996. Program slicing. Adv.in Computers, Academic Press, vol. 43, pp. 1–52.

    Google Scholar 

  • Borger, E. 1997. Integrating ASM into the software development life cycle. Journal of Universal Computer Science, 3(5):603–665.

    Google Scholar 

  • Canfora, G., Cimitile, A., and De Lucia, A. 1998. Conditioned program slicing. Information and Software Technology, 40(11/12):595–607.

    Google Scholar 

  • Chandy, K.M. and Misra, J. 1988. Parallel Program Design: A Foundation. Addison Wesley Publishing.

  • Chandy, K.M. and Lamport, L. 1985. Distributed snapshots: Determining global states of distributed systems. ACM TOCS, 3(1):63–75.

    Google Scholar 

  • Chen, J.L., Wang, F.J., and Chen, Y.L. 1997. Slicing object oriented Programms. In Proceedings of the APSEC'97, Hongkong, China, pp. 395–404.

  • Cheng, J. 1993. Slicing concurrent programs a graph-approach. In P. Fritzson, editor, Proceedings of the First International Workshop on Automated and Algorithmic Debugging, vol. 749 of Lecture Notes in Computer Science, Springer-Verlag, pp. 232–245.

  • Choi, J.-D., Miller, B., and Netzer, R.H.B. 1991. Techniques for debugging parallel programs with flowback analysis. ACM Transactions on Programming Languages and Systems, 13(4):491–530.

    Google Scholar 

  • Chung, I.S., Chang, B.-M., Kim, B.M., and Jo, J.-W. 2002. Abstract program slicings. Twentieth IASTED International Conference Applied Informatics (AI 2002), Innsbruck, Austria, Feb. 18–21.

  • Das, S., Dill, D., and Park, S. 1999. Experience with predicate abstraction. Lecture notes in Computer Science, Springer Verlag, vol. 1633, pp. 160–171.

    Google Scholar 

  • De Lucia, A. 2001. Program slicing: Methods and applications. In 1st IEEE International Workshop on Source Code Analysis and Manipulation (Florence, Italy), IEEE Computer Society Press, Los Alamitos, California, USA, pp. 142–149.

    Google Scholar 

  • Duesterwald, E., Gupta, R., and Soffa, M. 1992. Distributed slicing and partial re-execution for distributed programs. In Proceedings of the Fifth Workshop on Languages and Compilers for Parallel Computing, New Haven, Connecticut, pp. 329–337.

  • Dumais, G. and Li, H.F. 2002. State lattice decomposition and distributed predicate detection. IEEE Trans.on Parallel and Distributed Systems, 13(4):373–387.

    Google Scholar 

  • Gallagher, K. and Lyle, J. 1991. Using program slicing in software maintenance. IEEE Transactions on Software Engineering, 17(8):751–761.

    Google Scholar 

  • Garg,V.K. and Mittal, N. 2001. On slicing a distributed computation. In Proceedings of the 21st IEEE International Conference on Distributed Computing Systems (ICDCS), Phoenix, Arizona, USA, pp. 322–329.

  • Ghosh, S. 2002. Towards measurement of testability of concurrent object-oriented programs using fault insertion:A preliminary investigation. In Second IEEE International Workshop on Source Code Analysis and Manipulation (SCAM'02), Montreal, Canada, pp. 17–25.

  • Gopal, R. 1991. Dynamic program slicing based on dependence relations. In Proceedings of the Conference on Software Maintenance, pp. 191–200.

  • Graf, S. and Saidi, H. 1997. “Construction of abstract state graphs with PCS”. Lecture notes in Computer Science, Springer-Verlag, vol. 1254, pp. 72–83.

    Google Scholar 

  • Gropp,W., Lusk, E., and Skjellum, A. 1994. Using MPI: Portable Parallel Programming with the Message-Passing Interface. Cambridge, Massachusetts: The MIT Press.

    Google Scholar 

  • Gupta, R., Harrold, M., and Soffa, M., 1992. An approach to regression testing using slicing. In Proceedings of the Conf.on Software Maintenance, pp. 299–306.

  • Gupta, R., Soffa, M., and Howard, J. 1997. Hybrid slicing: Integrating dynamic information with static analysis. ACM Transactions on Software Engineering and Methodology, 6(4):370–397.

    Google Scholar 

  • Hall, R.J. 1995. Automatic extraction of executable program subsets by simultaneous dynamic program slicing. Automated Software Engineering, 2 1:33–53.

    Google Scholar 

  • Harman, M. and Danicic, D. 1997. Amorphous program slicing. IEEE International Workshop on Program Comprehension, Dearborn, Michigan, USA. May 28–30, pp. 70-79.

  • Harman, M. and Danicic, S. 1998. A new algorithm for slicing unstructured programs. Journal of Software Maintenance, 10(6):415–441.

    Google Scholar 

  • Harman, M. and Gallagher, K. editors. 1998. Journal of Information and Software Technology Special Issue on Program Slicing, Elsevier, vol. 40.

  • Harman, M., Hierons, R., Danicic, S., Howroyd, J., and Fox, C. 2001. Node coarsening calculi for program slicing. IEEE Working Conference on Reverse Engineering (WCRE 2001), Oct. 2–5, Stuttgart, Germany.

  • Harman, M., Hierons, R., Fox, C., Danicic, S., and Howroyd, J. 2001. Pre/post conditioned slicing. IEEE International Conference on Software Maintenance (ICSM'01), Nov. 07–09, Florence, Italy, pp. 138-148.

  • Hart, J.M. 1995. Experinece with logical code analysis in software reuse and reengineering. In AIAA Computing in Aeorspace, vol. 10, pp. 1243–1262, San Antonio, TX, March 28-30.

    Google Scholar 

  • Hendley, R. et al. 1995. Case study?Narcissus: Visualizing information. Proceedings of the IEEE Information Visualization 95, pp. 90–96.

  • Horwitz, S., Reps, T., and Binkley, D. 1990. Interprocedural slicing using dependence graphs. ACM Transactions on Programming Languages and Systems, 12(1):26–61.

    Google Scholar 

  • Horwitz, S. and Reps, T. 1992. The use of program dependence graphs in software engineering. In Proceedings of the 14th Int.Conference on Software Engineering, Melbourne, Australia, pp. 392–411.

  • Kamkar, M. and Krajina, P. 1995. Dynamic slicing of distributed programs. In International Conference on Software Maintenance, pp. 222–229.

  • Kamkar, M., Fritzson, P., and Shahmehri, N. 1993. Three approaches to interprocedural dynamic slicing. Microporcessing and Microprogramming, (38):625–636.

  • Korel, B. and Ferguson, R. 1992. Dynamic slicing of distributed programs. Applied Mathematics & Computer Science Journal, 2(2):199–215.

    Google Scholar 

  • Korel, B. and Laski, J. 1988. Dynamic program slicing. In Process Letters, 29(3):155–163.

    Google Scholar 

  • Korel, B. and Rilling, J. 1998a. Program slicing in understanding of large programs. In IEEE Proceedings of the 6th IWPC '98, Ischia, Italy, June pp. 145–152.

  • Korel, B. and Rilling, J. 1998b. CASE and dynamic program slicing in software maintenance. Special issue of the International Journal of Computer Science and Information Management.

  • Korel, B. and Yalamanchili, S. 1994. Forward derivation of dynamic slices. Proceedings of the Intern.Symposium on Software Testing and Analysis, Seattle, pp. 66–79.

  • Krishnaswamy, A. 1994. Program slicing: An application of object-oriented program dependency Graphs. Technical Report TR94–108, Cs Dep., Clemson University.

  • Krinke, J. 1998. Static slicing of threaded programs. In Proceedings of the ACM SIGPLAN/SIGFSOFT Workshop on Program Analysis for Software Tools and Engineering (PASTE'98), pp. 35–42.

  • Kung, D., Gao, J. et al. 1995. Developing an object-oriented software testing and maintenance environment. In Communications of the ACM, vol. 38, issue 10, pp. 75–87.

    Google Scholar 

  • Larsen, L.D. and Harrold M.J. 1996. Slicing object oriented software. In Proceeding of the 18th International Conference on Software Engineering, March.

  • Law, R.C.H. 1994. Object-oriented program slicing. Ph.D thesis, University of Regina, Regina, Canada.

    Google Scholar 

  • Leblanc, T. and Mellor-Crummey, J. 1987. Debugging parallel programs with instant replay. IEEE Transactions on Computers, C-36 (4):471–482.

    Google Scholar 

  • Lyle, J. and Weiser, M. 1986. Experiments on slicing-based debugging tools. Proceedings of the 1st Conference on Empirical Studies of Programming, pp. 187–197.

  • Mittal, N. and Garg, V.K. 2001a. Computation slicing techniques and theory. In Proceedings of the 15th International Symposium on Distributed Computing (DISC), pp. 78–92, Lisbon, Portugal, Oct. 2001. © Springer-Verlag.

  • Mittal, N. and Garg, V.K. 2001b. On detecting global predicates in distributed computations. In Proceedings of the 21st IEEE Internation Conference on Distributed Computing Systems, April, pp. 3–10.

  • MPI_Forum, Message Passing Interface Forum, http://www.mpi-forum.org

  • Müller-Olm, M. and Seidl, H. 2001. On optimal slicing of parallel programs. In Proceedings of the thirty-third annual ACM symposium on Theory of computing, Hersonissos, Greece, July, pp. 647–656.

  • Murata, T., Nelson, P.C., and Yim, J. 1991. Predicate-transition net model for multiple agent planning. Information Science, 57/58:361–384

    Google Scholar 

  • Pratt, V.R. 1986. Modeling concurrency with partial orders. International Journal of Parallel Programming, 15(1).

  • Probst, D.K. and Li, H.F. 1990. Modeling reactive hardware processing using partial orders. In Semantics of Concurrency Workshop in Computing, pp. 324–343.

  • Rilling, J. and Karanth, B. 2001. A hybrid program slicing framework. IEEE International Workshop on Source Code Analysis and Manipulation SCAM 2001, Florence, Italy.

  • Rilling, J. 2001. MOOSE—A task-driven program comprehension environment. In IEEE Computer Society Press in the Proceedings of the 25th Annual International Computer Software & Applications Conference (COMPSAC 2001). Chicago, Illinois.

  • Rilling, J., Li, H.F., and Goswami, D. 2002. Predicate-based dynamic slicing of message passing programs. In Second IEEE International Workshop on Source Code Analysis and Manipulation (SCAM'02), Montreal, Canada, pp. 133–143.

  • Simith, R. and Korel's, B. 2000. Slicing event traces of large software system. AADEBUGG'00.

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

    Google Scholar 

  • Weiser, M. 1982. Programmers use slices when debugging. Communications of the ACM, 25:446–452.

    Google Scholar 

  • Weiser, M. 1984. Program slicing. IEEE Transactions on Software Engineering, 10(4):352–357.

    Google Scholar 

  • Xu, H. and Shatz, S.M. 2001. A framework for modeling agent-oriented software. In Proceedings of the 21st International Conference on Distributed Computing Systems, Phoenix.

  • Yokoo, M., Durfee, E., Ishida, T., and Kuwabara, K. 1998. The distributed constraint satisfaction problem: Formailization and algorithms. IEEE Transaction on Knowledge and Data Engineering, 10(5):673–685.

    Google Scholar 

  • Zhao, J. 1998. Dynamic slicing of object-oriented programs. Technical-Report SE–98-119, Information Processing Society of Japan, pp. 17-23.

  • Zhao, J. 1999. Slicing concurrent Java Programs. Seventh International Workshop on Program Comprehension, May 05–07, Pittsburgh, Pennsylvania, pp. 126-136.

  • Zhao, J., Cheng, J., and Ushijima, V. 1996. Static slicing of concurrent object-oriented programs. In Proceedings of the 20th IEEE Annual International Computer Software and Applications conference, IEEE Computer Society Press, pp. 312–320.

  • Zhao, J., Cheng, J., and Ushijima, K. 2001. Computing executable slices for concurrent logic programs. In Second Asia-Pacific Conference on Quality Software. IEEE Computer Society Press.

Download references

Author information

Authors and Affiliations

Authors

Rights and permissions

Reprints and permissions

About this article

Cite this article

Li, H.F., Rilling, J. & Goswami, D. Granularity-Driven Dynamic Predicate Slicing Algorithms for Message Passing Systems. Automated Software Engineering 11, 63–89 (2004). https://doi.org/10.1023/B:AUSE.0000008668.12782.6c

Download citation

  • Issue Date:

  • DOI: https://doi.org/10.1023/B:AUSE.0000008668.12782.6c

Navigation