Analysis of Java Programs Using Bytecode Based Frameworks

Java SDG(System dependence Graph) API and JOANA (Java Object-sensitive Analysis) are two bytecode based analysis frameworks available for analyzing object oriented java programs for different applications. In the present era, the continuous evolution of the customer expectations and requirements has resulted in the increase of size of the software. This arises the problems in maintaining software. Both the frameworks i.e Java SDG API and Joana consist of different variety of analysis techniques which are based on dependence graph generation and computation of slices of an input program. In our work, we make a comparative analysis study on the effectiveness and efficiency of both these above mentioned analysis frameworks in generating the corresponding intermediate dependence graph and computing slices. The dependence graph we have generated is SDG and we have used backward slicing approach in order to compute slices. The two-phase graph reachability algorithm is used in our work in case of Java SDG API in order to perform slicing. The two web start applications are used in order to generate and view SDG in case of Joana which are IFC console and Joana graph viewer. The analysis is based on the bytecode of the program under consideration. The experimental analysis shows that Joana can be extended for more diverse applications.

[1]  Emden R. Gansner,et al.  Graphviz - Open Source Graph Drawing Tools , 2001, GD.

[2]  Josep Silva,et al.  A vocabulary of program slicing-based techniques , 2012, CSUR.

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

[4]  Jens Krinke,et al.  Barrier slicing and chopping , 2003, Proceedings Third IEEE International Workshop on Source Code Analysis and Manipulation.

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

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

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

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

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

[10]  Eugene Kuleshov Using the ASM framework to implement common Java bytecode transformation patterns , 2007 .

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

[12]  Baowen Xu,et al.  Slicing Java generic programs using generic system dependence graph , 2009, Wuhan University Journal of Natural Sciences.

[13]  A. De Lucia Program slicing: methods and applications , 2001, Proceedings First IEEE International Workshop on Source Code Analysis and Manipulation.