Loading...
Exploring the Suitability of Existing Tools for Constructing Executable Java Slices
Iyer, Divya
Iyer, Divya
Citations
Altmetric:
Abstract
Java is a managed programming language, and Java programs are executed in a virtual machine (VM) environment. Java VMs not only execute the primary application program, but also perform several other auxiliary tasks at runtime. Some of these auxiliary tasks, including the program proling and security checks, are typically performed inline with the program execution, stalling the applica- tion progress and slowing program execution. We hypothesize that the execution of individual inline auxiliary tasks do not need knowledge of the entire previ- ous program state. In such cases, it might be possible to abstract individual or sets of auxiliary tasks, along with the code statements that compute the required program state, and execute them in a separate thread. The results of such ab- stracted auxiliary tasks can then be made available to the main program before they are needed, eliminating the execution time stall and improving runtime pro- gram eciency. However, to test this hypothesis we need access to robust tools to determine and generate the program slice required for each auxiliary task. The goal of this thesis is to study existing Java slicers, test their ability to generate correct executable slices, and evaluate their suitablity for this project. Additionally, we also aim to compare the size of the static slice with the minimal dynamic program slice for each task. This comparison will allow us to determine the quality of the static slicing algorithm for Java programs, and provide us with knowledge to enhance the slicing algorithm, is possible. To our knowledge, one of the most robust static Java slicer implementation available publicly is the Indus Java Analysis Framework developed at Kansas State University. We also found the latest dynamic java slicer, which was developed at Saarland University. For this thesis we study these two state-of-the-art Java slicers and evaluate their suit- ability for our parallelization project. We found that although the Indus slicer is a very ecient and robust tool for the tasks it was originally intended to perform (debugging), the slicer routinely fails to produce correct executable slices. Moreover, the code base has several dependences with older (and now defunct) libraries and also needs all source code to be compiled with obsolete JDK com- pilers. After a detailed study of the Indus static slicer we conclude that massive changes to the Indus code-base may be necessary to bring it up-to-date and make it suitable for our project. We also found that the Saarland dynamic Java slicer is able to correctly produce dynamic program slices and has few dependences on other tools. Unfortunately, this slicer frequently runs out of memory for longer (standard benchmark-grade) programs, and will also need to be updated for our tasks.
Description
Date
2012-05-31
Journal Title
Journal ISSN
Volume Title
Publisher
University of Kansas
Collections
Research Projects
Organizational Units
Journal Issue
Keywords
Computer science