Visual Analysis of Java Class Dependencies

Status

finished by Katja Graefenhain

Introduction

Reverse engineering techniques aid in maintaining and evolving large, complex software systems. Sophisticated visualization techniques to handle the mass of reverse engineered information play an important role. In this Diploma Thesis the focus is on developing means to visualize and navigate the dependencies and changes of Java classes with graphs. Such graphs give programmers a condensed view of the class design and allow architects to reason about implementation and design specific aspects.

The goals of this diploma thesis

The goal of this Diploma Thesis is to develop means to visualize and navigate the dependencies and changes of Java classes with graphs. The means shall be implemented as an Eclipse plugin using the Evolizer core components.

Task description

The thesis comprises a scientific and an engineering part. In the scientific part you will investigate and evaluate the state-of-the-art in browsing and navigating static source code data and changes. The focus is on graph-like techniques such as CodeCrawler, Creole, and ArchView and the design and implementation specific aspects you can analyze with these tools.

The engineering part is concerned with the implementation of a Eclipse plugin that uses our Evolizer core plugins. Some basic requirements for the implementation are:

  • Visualize dependency graph of classes. A user selects a class and wants to know the dependencies to other classes. Dependencies, for instance, stem from class inheritance or subtyping, method calls, and attribute accesses.
  • Navigate dependency graph. Having the dependencies of a Java class the user should be able to browse and navigate to dependent classes. Sophisticated filtering techniques are a key to keep the graph understandable.
  • Visualize changes in dependency graph. The user should be able to select an observation period of which changes are computed and visualized in the graph. For instance, changes in the class interface and changes in the class dependency graph.
  • Polymetric Views. The visualization technique should follow the Polymetric View principles and allow the user to map different measures onto the graphical attributes of nodes and edges. Such view configurations should be storable and selectable by the user.

The output of the implementation phase is a prototype tool implemented as a plug-in into the Eclipse IDE. Visualization techniques and view configurations then are evaluated in a case study with a Java open source project (e.g., Ant, Eclipse, Cocoon, etc.).

The deliverables are as follows:

When What
end of 1st month State-of-the-art report containing an evaluation of existing graph-like visualization techniques.
end of 2nd month A catalogue of view configurations to visualize design and implementation specific aspects.
end of 4th month A prototype tool for browsing and navigating class dependencies and changes within the Eclipse IDE.
end of 5th month A validation of the technique and prototype tool with a Java open source software system.
last month Finishing Diploma Thesis

General thesis guidelines

The typical rules of academic work must be followed. "So what is a (Diploma) 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 diploma thesis has to be concluded with a final presentation.

Advisor

Dr. Martin Pinzger, Beat Fluri, Prof. Harald Gall.

More information on "What is a Diploma Thesis and How to do a Diploma Thesis at IFI" is provided here.