Some keywords about my research are:
program understanding, dynamic analysis.
My research is all about acquiring program
understanding through dynamic analysis techniques. Let me
first tell you why this is so important.
Program understanding
is the process every software engineer goes through
when trying to familiarize himself with an existing software asset.
The goal of this process is to attain a sufficient level of
understanding about the software and it's structure to be able to
perform a range of (maintenance-related) operations on it in a
responsible way.
To achieve this, three strategies come to mind. We
can understand the program by looking at the source code -- static
analysis -- by looking at the program's runtime behavior --
dynamic analysis, or a combination of both.
In object-oriented software systems one of the major drawbacks of
static analysis is the (almost) inability to see through the late
binding process that is present in systems with polymorphism. As
such, by looking at the source code alone, it is very difficult to
see which classes will actually be working together at runtime.
Therefore, there has been a tendency to use dynamic analysis to
solve this problem. Dynamic analysis, however, also has a major
drawback in the fact that a huge amount of runtime data (or trace
data) is collected. Analyzing these huge event traces
efficiently is still a matter for further research.
My research consists of finding heuristics that
can help in analyzing the event trace more efficiently. As such, the
goal of my research can be summarized as:
"finding key classes in a system's design
through dynamic analysis that are worth looking at when begin
the program understanding process."