There are many tools and techniques to help developers debug and test their programs.
Dynamic data flow analysis is such a technique. Existing approaches for performing dynamic
data flow analysis for object oriented programs have tended to be data focused and procedural
in nature. An approach to dynamic data flow analysis that used object oriented principals would
provide a more natural solution to analysing object oriented programs.
Dynamic data flow analysis approaches consist of two primary aspects; a model of the data
flow information, and a method for collecting action information from a running program. The
model for data flow analysis presented in this thesis uses a meta-level object oriented approach.
To illustrate the application of this meta-level model, a model for the Java programming language
is presented. This provides an instantiation of the meta-level model provided. Finally,
several methods are presented for collecting action information from Java programs.
The meta-level model contains elements to represent both data items and scoping components
(i.e. methods, blocks, objects, and classes). At runtime the model is used to create a
representation of the executing program that is used to perform dynamic data flow analysis.
The structure of the model is created in such a way that locating the appropriate meta-level
entity follows the scoping rules of the language. In this way actions that are reported to the
meta-model are routed through the model to their corresponding meta-level elements.
The Java model presented contains classes that can be used to create the runtime representation
of the program under analysis. Events from the program under analysis are then used to
update the model. Using this information developers are able to locate where data items are
incorrectly used within their programs.
Methods for collecting action information from Java programs include source code instrumentation,
as used in earlier approaches, and approaches that use Java byte code transformation,
and the facilities of the Java Platform Debugger Architecture. While these approaches
aimed to achieve a comprehensive analysis, there are several issues that could not be resolved
using the approaches covered. Of the approaches presented byte code transformation is the
most practical.
Identifer | oai:union.ndltd.org:ADTP/216589 |
Date | January 2005 |
Creators | Cain, Andrew Angus, n/a |
Publisher | Swinburne University of Technology. |
Source Sets | Australiasian Digital Theses Program |
Language | English |
Detected Language | English |
Rights | http://www.swin.edu.au/), Copyright Andrew Angus Cain |
Page generated in 0.0019 seconds