Abstract
This paper extends the notion of slicing, which was originally proposed and studied for sequential programs, to concurrent programs and presents a graph-theoretical approach to slicing concurrent programs. In addition to the usual control and data dependences proposed and studied for sequential programs, the paper introduces three new types of primary program dependences in concurrent programs, named the selection dependence, synchronization dependence, and communication dependence. The paper also propose a new program representation for concurrent programs, named the Process Dependence Net (PDN), which is an arc-classified digraph to explicitly represent the five types of primary program dependences in the programs. As a result, various notions about slicing concurrent programs can be formally defined based on the representation, and the problem of slicing a concurrent program can be simply reduced to a vertex reachability problem in its PDN representation.
This work is partly supported by The Ministry of Education, Science and Culture of Japan under Grant-in-Aid for Scientific Research (C) No. 04650319 and by a grant from The Kurata Foundation.
Preview
Unable to display preview. Download preview PDF.
References
H. Agrawal and J. R. Horgan, “Dynamic Program Slicing”, Proc. ACM SIGPLAN'90, pp.246–256, June 1990.
K. Araki, Z. Furukawa, and J. Cheng, “A General Framework for Debugging”, IEEE-CS Software, Vol.3, No.3, pp.14–20, 1991.
J. Cheng, “Process Dependence Net: A Concurrent Program Representation”, Proc. JSSST 8th Conference, pp.513–516, September 1991.
J. Cheng, “Task Dependence Net as a Representation for Concurrent Ada Programs”, in J. van Katwijk (ed.), “Ada: Moving towards 2000”, LNCS, Vol.603, pp.150–164, Springer-Verlag, June 1992.
J. Cheng, “The Tasking Dependence Net in Ada Software Development”, ACM Ada Letters, Vol.12, No.4, pp.24–35, 1992.
J. Cheng and K. Ushijima, “Partial Order Transparency as a Tool to Reduce Interference in Monitoring Concurrent Systems”, in Y. Ohno (ed.), “Distributed Environments”, pp.156–171, Springer-Verlag, 1991.
J. Cheng, Y. Kasahara, M. Kamachi, Y. Nomura, and K. Ushijima, “Compiling Programs to Their Dependence-Based Representations”, Proc. 1993 IEEE Region 10 International Conference on Computer, Communication and Automation, to appear, October 1993.
W. H. Cheung, J. P. Black, and E. Manning, “A Framework for Distributed Debugging”, IEEE-CS Software, Vol.7, No.1, pp.106–115, 1990.
J. Ferrante, K. J. Ottenstein, and J. D. Warren, “The Program Dependence Graph and Its Use in Optimization”, ACM Transactions on Programming Languages and Systems, Vol.9, No.3, pp.319–349, 1987.
E. Duesterwald, R. Gupta, and M. L. Soffa, “Distributed Slicing and Partial Re-execution for Distributed Programs”, Proc. 5th Workshop on Languages and Compilers for Parallel Computing, pp.329–337, August 1992.
G. S. Goldszmidt, S. Temini, and S. Katz, “High-Level Language Debugging for Concurrent Programs”, ACM Transactions on Computer Systems, Vol.8, No.4, pp.311–336, 1990.
S. Horwitz, T. Reps, and D. Binkley, “Interprocedural Slicing Using Dependence Graphs”, ACM Transactions on Programming Languages and Systems, Vol.12, No.1, pp.26–60, 1990.
M. Kamkar, N. Shahmehri, and P. Fritzson, “Bug Localization by Algorithmic Debugging and Program Slicing”, Proc. PLILP '90, LNCS, Vol.456, pp.60–74, Springer-Verlag, August 1990.
M. Kamkar, N. Shahmehri, and P. Fritzson, “Interprocedural Dynamic Slicing”, Proc. PLILP '92, LNCS, Vol.631, pp.370–371, Springer-Verlag, August 1992.
B. Korel, “PELAS — Program Error-Locating Assistant System”, IEEE-CS Transactions on Software Engineering, Vol.14, No.9, pp.1253–1260, 1988.
B. Korel and R. Ferguson, “Dynamic Slicing of Distributed Programs”, Appl. Math. and Comp. Sci., Vol.2, No.2, pp.199–215, 1992.
B. Korel and J. Laski, “Dynamic Program Slicing”, Information Processing Letters, Vol.29, No.10, pp.155–163, 1988.
C. E. McDowell and D. P. Helmbold, “Debugging Concurrent Programs”, ACM Computing Surveys, Vol.21, No.4, pp.593–622, 1989.
G. J. Myers, “The Art of Software Testing”, John Wiley & Sons, 1979.
K. J. Ottenstein and L. M. Ottenstein, “The Program Dependence Graph in a Software Development Environment”, ACM Software Engineering Notes, Vol.9, No.3, pp.177–184, 1984.
K. J. Ottenstein and S. Ellcey, “Experience Compiling Fortran to Program Dependence Graphs”, Software — Practice and Experience, Vol.22, No.1, pp.41–62, 1992.
A. Podgurski and L. A. Clarke, “A Formal Model of Program Dependences and Its Implications for Software Testing, Debugging, and Maintenance”, IEEE-CS Transactions on Software Engineering, Vol.16, No.9, pp.965–979, 1990.
M. Weiser, “Programmers Use Slices When Debugging”, Communications of ACM, Vol.25, No.7, pp.446–452, 1982.
M. Weiser, “Program Slicing”, IEEE-CS Transactions on Software Engineering, Vol.SE-10, No.4, pp.352–357, 1984.
Author information
Authors and Affiliations
Editor information
Rights and permissions
Copyright information
© 1993 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Cheng, J. (1993). Slicing concurrent programs. In: Fritzson, P.A. (eds) Automated and Algorithmic Debugging. AADEBUG 1993. Lecture Notes in Computer Science, vol 749. Springer, Berlin, Heidelberg. https://doi.org/10.1007/BFb0019411
Download citation
DOI: https://doi.org/10.1007/BFb0019411
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-57417-0
Online ISBN: 978-3-540-48141-6
eBook Packages: Springer Book Archive