Not logged in.

Contribution Details

Type Master's Thesis
Scope Discipline-based scholarship
Title Visual Analysis of Java Class Dependencies
Organization Unit
Authors
  • Katja Gräfenhain
Supervisors
  • Martin Pinzger
  • Beat Fluri
  • Harald Gall
Institution University of Zurich
Faculty Faculty of Economics, Business Administration and Information Technology
Date 2007
Abstract Text A number of design principles deal with dependencies and interrelations of software modules. They all strive for tight cohesion within, and loose coupling between modules. In the objectoriented paradigm the goal of loose coupling is mirrored at package and class level. Dependencies, for instance, stem from class inheritance, subtyping, method calls, and attribute accesses. The maintainability of object-oriented systems is affected by dependencies. It is therefore important to identify the inherent design to avoid breaking of existing design rules or to make necessary corrections for future changes. Revere engineering helps to understand software systems by analyzing the source code and creating representations at a higher level of abstraction. Visualization plays an important role in reverse engineering and allows to quickly gain an overview of a large system. Since the revision history of a software system also contains important information about its evolution, including data from versioning systems is valuable. In this thesis we developed a tool for visualizing Java class dependencies and changes. Our approach is based on existing visualization techniques and uses hierarchical graphs to represent the structure of the system. For visualizing dependencies and expressing the strength of coupling, the polymetric view principle is adopted. The focus of our work was on browsing and navigating dependency relationships. Most of the existing visualization approaches initially load a visual representation of the whole system and provide browsing facilities to focus on the demanded issues. We support this top-down strategy to software analysis as well by providing powerful filter facilities. Those filter techniques help to break down a cluttered image of a large system and to focus on the relevant parts. In addition, we support a bottom-up approach to reverse engineering. We provide a navigation technique that lets the user create a visualization of the portions she is interested in. We allow to start with a visualization of a small part and let the user incrementally expand it through adding dependent elements. By allowing to focus on the portions of interest, our approach is scalable and can be used to address specific questions in the mass of underlying information.
Zusammenfassung Viele Design-Empfehlungen für Software behandeln die Abhängigkeiten und das Zusammenspiel von Modulen. In allen wird eine starke Kohäsion innerhalb, und eine lose Kopplung zwischen den Modulen als erstrebenswert angesehen. Im Kontext objektorientierter Programmierung wird das Ziel loser Kopplung auf Klassen und Pakete übertragen. Abhängigkeiten entstehen beispielsweise aus Vererbung von Klassen, Implementierung definierter Schnittstellen, Methodenaufrufen und Attributzugriffen. Abhängigkeiten beeinflussen die Wartbarkeit von objektorientierten Softwaresystemen. Deshalb ist es wichtig, das Design dieser zu erkennen um nicht gegen die bestehenden Prinzipien zu verstossen oder um Korrekturen, die für zukünftige Software-Änderungen notwendig sind, durchzuführen. Reverse Engineering hilft, ein Softwaresystem zu verstehen, indem der Quellcode analysiert, und eine abstraktere Darstellung des Systems erzeugt wird. Visualisierungen spielen dabei eine wichtige Rolle und ermöglichen es, einen schnellen Überblick über ein grosses System zu gewinnen. Auch die Versionierungsdaten enthalten wichtige Informationen über die Evolution eines Softwaresystems. Es ist deshalb sinnvoll diese in den Reverse Engineering-Prozess einzubeziehen. Im Rahmen dieser Diplomarbeit haben wir ein Werkzeug zur Visualisierung von Abhängigkeiten zwischen Java-Klassen sowie deren Änderung entwickelt. Unser Ansatz vereint bestehende Visualisierungsmethoden. Die Struktur eines Systems wird mittels hierarchischer Graphen dargestellt. Um Abhängigkeiten zu visualisieren und die Stärke der Kopplung auszudrücken, wurde das Prinzip der Polymetric View übernommen. Der Fokus unserer Arbeit lag im Navigieren von Abhängigkeitsbeziehungen. Die meisten Visualisierungstechniken erzeugen zu Beginn eine Darstellung des gesamten Systems und bieten Möglichkeiten diese zu durchsuchen und auf bestimmte Aspekte zu fokusieren. Diese top-down Strategie der Softwareanalyse wird von uns durch das Bereitstellen mächtiger Filtertechniken auch unterstützt. Diese helfen dabei, ein ungeordnetes Bild eines grossen Systems zu zerlegen und sich auf die relevanten Teile zu konzentrieren. Zusätzlich unterstützen wir das Verfolgen eines bottom-up Ansatzes im Reverse Engineering. Wir bieten eine Navigierungstechnik an, die den Nutzer diejenigen Teile, die ihn interessieren, visualisieren lässt. Wir erlauben ihm, mit der Darstellung eines kleinen Teils zu beginnen und diesen durch das hinzufügen abhängiger Elemente inkrementell zu erweitern. Dadurch, dass er es ermöglicht sich auf die interessierenden Teile zu konzentrieren, skaliert unser Ansatz und ist auch geeignet um im Kontext grosser Informationsmengen spezifische Fragen anzugehen.
Export BibTeX