Figure 2 displays the main window of the BUI with some example code loaded (we'll see how to load an example in Section 5). The main window contains two panels: the left panel is the project panel and the right panel is the code panel. The Project panel contains a tree that organizes the packages, classes, fields and methods of the Java software being analyzed.
.java
file. Rather, one
should think of the display as providing the Java abstract syntax of
the source code. When JJJC compiles a program, it creates a Java
abstract syntax tree (AST) representation as well as the underlying
Jimple intermediate representation. A system of internal
annotations implemented using hash tables associates each node
in the Java AST with its counterpart in the Jimple representation (and
vice versa). The display in the code window is generated by
dynamically decompiling the internal Jimple representation back to the
corresponding Java using the annotations. This display strategy makes
it easier to implement the visualization tools associated with
counterexample traces, slicing, and abstraction. However, it has the
disadvantage that textual features of the actual source code (e.g.,
comments, indentation, etc.) are not shown in the window.Now we'll give a brief description of each tool-bar button and menu in the main Bandera window.