Applications
The analysis that Gnosis provides can be used in several ways. We are
currently investigating three specific applications:
- Optimization of Java applications.
We are currently investigating an approach in which the analysis information
computed using Gnosis is stored as annotations in Java .class files.
By modifying a Just-in-Time compiler to recognize and exploit these
annotations, the effect of having full interprocedural analyses information
can be explored without requiring extensive modifications to a JIT.
We are currently experimenting with annotations that encode type information
at method entry points. Preliminary results appear to be encouraging.
- Change impact analysis. Under
an NSF grant, we are conducting joint work with Professor Barbara Ryder
(Rutgers University) where analysis information computed with Gnosis
is used for determining the impact of programs changes. An example of
where this is quite useful is in determining which test cases in a regression
test bucket should be executed given a set of changes to an application.
Moreover, if a given regression test fails, we can pinpoint which of
the changes have potentially caused the failure of that test.
- Program understanding tools.
Ittai Balaban (a PhD student at NYU) explored the visualization of call
graph information in the Eclipse environment, using various light-weight,
unobtrusive visualizations. This provides the developer with additional
means for understanding the potential dynamic behavior of the program
being developed, which can be useful in uncovering hidden problems in
Java programs. An example of this capability is shown in the snapshot
below.

Future Work
In addition to the work discussed above, we are planning to explore the
use of Gnosis to support the automation of refactorings in Eclipse. In
this context, we are particularly interested in refactorings for which
the checking of the preconditions involves nontrivial interprocedural
analysis.
|