Photo
GNOSIS

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.

Image

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.