Dynamic Slicing of Aspect-Oriented Programs

Program slicing is a decomposition technique which has many applications in various software engineering activities such as program debugging, testing, maintenance etc. Aspect-oriented programming (AOP) is a new programming paradigm that enables modular implementation of cross-cutting concerns such as exception handling, security, synchronization, logging etc. The unique features of AOP such as join-point, advice, aspect, introduction etc. pose difficulties for slicing of AOPs. We propose a dynamic slicing algorithm for aspect-oriented programs. Our algorithm uses a dependence-based representation called Dynamic Aspect-Oriented Dependence Graph (DADG) as the intermediate program representation. The DADG is an arc-classified digraph which represents various dynamic dependences between the statements of the aspect-oriented program. We have used a trace file to store the execution history of the program. We have developed a tool called Dynamic Depenedence Slicing Tool (DDST) to implement our algorithm. We have tested our algorithm on many programs for 40-50 runs. The resulting dynamic slice is precise as we create a node in the DADG for each occurrence of the statement in the execution trace.

[1]  M. J. Harrold,et al.  Slicing Objects Using System Dependence Graph , 1998 .

[2]  Robert J. Walker,et al.  Evaluating Emerging Software Development Technologies: Lessons Learned from Assessing Aspect-Oriented Programming , 1999, IEEE Trans. Software Eng..

[3]  G. Kiczales,et al.  Aspect-oriented programming and modular reasoning , 2005, Proceedings. 27th International Conference on Software Engineering, 2005. ICSE 2005..

[4]  David W. Binkley,et al.  Program slicing , 2008, 2008 Frontiers of Software Maintenance.

[5]  Jianjun Zhao,et al.  Slicing aspect-oriented software , 2002, Proceedings 10th International Workshop on Program Comprehension.

[6]  Oege de Moor,et al.  Measuring the dynamic behaviour of AspectJ programs , 2004, OOPSLA.

[7]  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..

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

[9]  Timon D. ter Braak,et al.  Extending Program Slicing in Aspect-Oriented Programming with InterType Declarations , 2006 .

[10]  Shinji Kusumoto,et al.  Program slicing tool for effective software evolution using aspect-oriented technique , 2003, Sixth International Workshop on Principles of Software Evolution, 2003. Proceedings..

[11]  Baowen Xu,et al.  Dynamic slicing object-oriented programs for debugging , 2002, Proceedings. Second IEEE International Workshop on Source Code Analysis and Manipulation.

[12]  John R. Gilbert,et al.  Aspect-Oriented Programming of Sparse Matrix Code , 1997, ISCOPE.

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

[14]  Rajib Mall,et al.  An Overview of Slicing Techniques for Object-Oriented Programs , 2006, Informatica.

[15]  Jian-jun Zhao Dynamic slicing of object-oriented programs , 2009, Wuhan University Journal of Natural Sciences.

[16]  William G. Griswold,et al.  An Overview of AspectJ , 2001, ECOOP.

[17]  Joseph Robert Horgan,et al.  Dynamic program slicing , 1990, PLDI '90.

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

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

[20]  Rajib Mall,et al.  Computation of intraprocedural dynamic program slices , 2003, Inf. Softw. Technol..

[21]  Durga Prasad Mohapatra,et al.  A Node-Marking Technique for Dynamic Slicing of Aspect-Oriented Programs , 2007, 10th International Conference on Information Technology (ICIT 2007).

[22]  Yeong-Tae Song,et al.  Forward dynamic object-oriented program slicing , 1999, Proceedings 1999 IEEE Symposium on Application-Specific Systems and Software Engineering and Technology. ASSET'99 (Cat. No.PR00122).

[23]  Gregor Kiczales,et al.  RG: A Case-Study for Aspect-Oriented Programming , 1997 .

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

[25]  Martin Rinard,et al.  System Dependence Graph Construction for Aspect-Oriented Programs , 2003 .

[26]  Gregor Kiczales,et al.  Aspect-oriented programming , 2001, ESEC/FSE-9.

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

[28]  Baowen Xu,et al.  Slicing object-oriented java programs , 2001, SIGP.

[29]  Frank Tip,et al.  A survey of program slicing techniques , 1994, J. Program. Lang..

[30]  Carlo Ghezzi,et al.  Coding Different Design Paradigms for Distributed Applications with Aspect-Oriente , 1999 .