Distributed dynamic slicing of Java programs

We propose a novel dynamic slicing technique for distributed Java programs. We first construct the intermediate representation of a distributed Java program in the form of a set of Distributed Program Dependence Graphs (DPDG). We mark and unmark the edges of the DPDG appropriately as and when dependencies arise and cease during run-time. Our algorithm can run parallely on a network of computers, with each node in the network contributing to the dynamic slice in a fully distributed fashion. Our approach does not require any trace files to be maintained. Another advantage of our approach is that a slice is available even before a request for a slice is made. This appreciably reduces the response time of slicing commands. We have implemented the algorithm in a distributed environment. The results obtained from our experiments show promise.

[1]  Alfred V. Aho,et al.  Compilers: Principles, Techniques, and Tools , 1986, Addison-Wesley series in computer science / World student series edition.

[2]  Tulika Mitra,et al.  Compactly representing parallel program executions , 2003, PPoPP '03.

[3]  Jingde Cheng,et al.  Static slicing of concurrent object-oriented programs , 1996, Proceedings of 20th International Computer Software and Applications Conference: COMPSAC '96.

[4]  Mark Harman,et al.  Search Based Approaches to Component Selection and Prioritization for the Next Release Problem , 2006, 2006 22nd IEEE International Conference on Software Maintenance.

[5]  Hon Fung Li,et al.  Granularity-Driven Dynamic Predicate Slicing Algorithms for Message Passing Systems , 2004, Automated Software Engineering.

[6]  Xiangyu Zhang,et al.  Efficient forward computation of dynamic slices using reduced ordered binary decision diagrams , 2004, Proceedings. 26th International Conference on Software Engineering.

[7]  Baowen Xu,et al.  Slicing concurrent java programs , 2001, SIGP.

[8]  Rajiv Gupta,et al.  Distributed Slicing and Partial Re-execution for Distributed Programs , 1992, LCPC.

[9]  Zhao Jianjun Slicing Concurrent Java Programs , 1999 .

[10]  Keith Brian Gallagher,et al.  Using Program Slicing in Software Maintenance , 1991, IEEE Trans. Software Eng..

[11]  Rajib Mall,et al.  An edge marking technique for dynamic slicing of object-oriented programs , 2004, Proceedings of the 28th Annual International Computer Software and Applications Conference, 2004. COMPSAC 2004..

[12]  Rajib Mall,et al.  An efficient dynamic program slicing technique , 2002, Inf. Softw. Technol..

[13]  Doug Brown,et al.  Lex and Yacc , 1990 .

[14]  Jingde Cheng,et al.  Slicing Concurrent Programs - A Graph-Theoretical Approach , 1993, AADEBUG.

[15]  Katsuro Inoue,et al.  Design and implementation of bytecode-based Java slicing system , 2003, Proceedings Third IEEE International Workshop on Source Code Analysis and Manipulation.

[16]  Vijay K. Garg,et al.  On slicing a distributed computation , 2001, Proceedings 21st International Conference on Distributed Computing Systems.

[17]  Katsuro Inoue,et al.  Slicing methods using static and dynamic analysis information , 1999, Proceedings Sixth Asia Pacific Software Engineering Conference (ASPEC'99) (Cat. No.PR00509).

[18]  Anand Krishnaswamy Program Slicing: An Application of Object-oriented Program Dependency Graphs , 1994 .

[19]  Hon Fung Li,et al.  Predicate-based dynamic slicing of message passing programs , 2002, Proceedings. Second IEEE International Workshop on Source Code Analysis and Manipulation.

[20]  Vijay K. Garg,et al.  Computation Slicing: Techniques and Theory , 2001, DISC.

[21]  Tao Wang,et al.  Using compressed bytecode traces for slicing Java programs , 2004, Proceedings. 26th International Conference on Software Engineering.

[22]  Herbert Schildt Java: The Complete Reference , 1996 .

[23]  Mariam Kamkar,et al.  Interprocedural dynamic slicing with applications to debugging and testing , 1993, Linköping studies in science and technology dissertations.

[24]  Mariam Kamkar,et al.  Dynamic slicing of distributed programs , 1995, Proceedings of International Conference on Software Maintenance.

[25]  Jianjun Zhao,et al.  Multithreaded dependence graphs for concurrent Java programs , 1999, 1999 Proceedings International Symposium on Software Engineering for Parallel and Distributed Systems.

[26]  Rajib Mall,et al.  An Efficient Technique for Dynamic Slicing of Concurrent Java Programs , 2004, AACC.

[27]  Eugene H. Spafford,et al.  Debugging with dynamic slicing and backtracking , 1993, Softw. Pract. Exp..

[28]  Mark Weiser,et al.  Programmers use slices when debugging , 1982, CACM.

[29]  Neil Walkinshaw,et al.  The Java system dependence graph , 2003, Proceedings Third IEEE International Workshop on Source Code Analysis and Manipulation.

[30]  Janusz W. Laski,et al.  Dynamic Program Slicing , 1988, Inf. Process. Lett..

[31]  Rajib Mall Fundamentals of Software Engineering , 2004, FSEN 2013.

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

[33]  Donglin Liang,et al.  Slicing objects using system dependence graphs , 1998, Proceedings. International Conference on Software Maintenance (Cat. No. 98CB36272).

[34]  Mary Jean Harrold,et al.  Slicing object-oriented software , 1996, Proceedings of IEEE 18th International Conference on Software Engineering.

[35]  Rajib Mall,et al.  An efficient method for computing dynamic program slices , 2002, Inf. Process. Lett..