Slicing Concurrent Programs Based on Program Reachability Graphs

Program slicing is an effective and established technique to analyze sequential programs. However, owing to intransitive dependences between statements, it is hard to get precise slices of concurrent programs with traditional slicing algorithms for sequential programs. This paper proposes a novel representation, thread interaction reachability graph (TIRG), for concurrent programs with shared memory, interleaving semantics and mutual exclusion. Based on TIRG, dependences can be analyzed globally and we construct a new dependence graph (MSDG), where each node is a 2-tuple composed of program state and statement. The research shows that dependences in MSDG are transitive and more precise slice can be obtained by traversing MSDG compared with previous approaches.

[1]  Jens Krinke,et al.  Context-sensitive slicing of concurrent programs , 2003, ESEC/FSE-11.

[2]  David W. Binkley,et al.  Interprocedural slicing using dependence graphs , 1990, TOPL.

[3]  David W. Binkley,et al.  Interprocedural slicing using dependence graphs , 1988, SIGP.

[4]  Jens Krinke,et al.  Static slicing of threaded programs , 1998, PASTE '98.

[5]  Jianjun Zhao,et al.  Slicing concurrent Java programs , 1999, Proceedings Seventh International Workshop on Program Comprehension.

[6]  Mangala Gowri Nanda,et al.  Slicing concurrent programs , 2000, ISSTA '00.

[7]  Markus Müller-Olm,et al.  On optimal slicing of parallel programs , 2001, STOC '01.

[8]  Mangala Gowri Nanda,et al.  Interprocedural slicing of multithreaded programs with applications to Java , 2006, TOPL.

[9]  Matthew J. Bridges,et al.  Static Interprocedural Slicing of Shared Memory Parallel Programs , 2002, PDPTA.

[10]  Baowen Xu,et al.  A brief survey of program slicing , 2005, SOEN.

[11]  Alan Burns,et al.  Real-Time Systems and Programming Languages , 2009 .

[12]  Jeffrey G. Gray,et al.  Pattern transformation for two-dimensional separation of concerns , 2005, ACM SIGSOFT Softw. Eng. Notes.

[13]  Jingde Cheng,et al.  Task dependence nets for concurrent systems with Ada 95 and its applications , 1997, TRI-Ada '97.

[14]  James C. Corbett,et al.  A Formal Study of Slicing for Multi-threaded Programs with JVM Concurrency Primitives , 1999, SAS.

[15]  Dennis Giffhorn,et al.  Precise slicing of concurrent programs , 2009, Automated Software Engineering.