Visual Incremental Understanding of Java Source with DA4Java


finished by Mark Odermatt.


Program comprehension is a necessary step in achieving objectives, such as, fixing errors, changing or adding features, or improving code and design. Modern development environments lack of adequate visual support for advanced program comprehension tasks. Based on our experience with existing tools, such as Rigi, Creole, and Imagix-4D, we developed Dependency Analyzer for Java (DA4Java).The main objective of DA4Java is to reduce the cognitive effort to understand Java source code. DA4Java uses nested graphs and a set of features to incrementally compose graphs and filter irrelevant nodes and edges. The current implementation of DA4Java provides an initial set of features which you will extend in this Bachelor project.

The goals of this diploma thesis

The goal of this thesis is to extend DA4Java by undo/redo functionality, snapshot functionality, and Polymetric Views.

Task description

The first phase of this Bachelor project is concerned with understanding the current implementation of DA4Java and determining the state-of-the-art in source code visualization and navigation techniques. The publications on DA4Java, Shrimp & Creole, and CodeCrawler provide the starting points for your investigations. A cognitive model for program comprehension is presented by von Mayrhauser and Vans.

The second phase shall focus on extending DA4Java. The core features to implement are:

  • Improvements to the user-interface, such as, a tool-bar that allows the user to select and configure different layout algorithms and filters.
  • Visualization and & fillter of inheritance/subtyping and field access dependency relationships with an additional Eclipse view.
  • Undo/redo of the various add and filter functions.
  • Polymetric Views to visualize the size of source code entities. An extra view is needed to configure Polymetric Views, store and load configurations. Concerning the metrics a simple set of metrics, such as, number of methods and number of attributes, needs to be implemented.
  • Functionality to take snapshots from the current graph, store them, and load them to continue a previous analysis.

Alternative ideas to improve the visualizations of Java source code are welcome. A refactoring of the current source code will be done, if needed. The following libraries and models are needed for the implementation: Hibernate, FAMIX meta model, yFiles, and Evolizer.

In the last phase of your project you will evaluate your approach with the source code of an Eclipse plugin and write the final report.

The deliverables are as follows:

When What
1st month A report with ideas on how to implement the set of new features.
2nd month Improved user-interface, visualization and filter of other dependency relationships.
3rd month Undo/redo, snapshot functionality, and Polymetric Views.
4th month Evaluation and Final report.

General thesis guidelines

The typical rules of academic work must be followed. "So what is a Thesis" describes guidelines which must be followed. At the end of the thesis, a final report has to be written. The report should clearly be organized, follow the usual academic report structure, and has to be written in English using our s.e.a.l. LaTeX-template.

Since implementing software is also part of this thesis, state-of-the-art design, coding, and documentation standards for the software have to be obeyed.

The bachelor thesis has to be concluded with a final presentation for the members of the Software Evolution and Architecture Lab (s.e.a.l.).


Martin Pinzger, Prof. Harald Gall.

More information on "How to do a Bachelor Thesis at IFI" is provided here.