Skip to content

General Information

maschwie edited this page Jan 8, 2012 · 1 revision

Overview

The GIANT project is about the development of a fast browsing tool for large graphs with enhanced analysis features like multiple selections and a fully integrated scripting language. The development team is 6 persons, all students of the University of Stuttgart, Germany. The project is part of our studies in Software Engineering.

The project was started in November 2002 and ran until November 2003. It was supervised by the Department of Programming Languages .

GIANT was developed to display graphs that are used for reengineering purposes. These graphs are basically abstract syntax trees with lots of additional semantic information. The Project Bauhaus provides tools that can parse various programming languages and create a language independent representation called IML.

The IML graphs are made availble through a reflection interface that is supported by GIANT. Even for small programms these graphs can have quite a large number of nodes and edges. In example a simple stack implementation written in C with 39 SLOC results in a graph of 223 nodes and 683 edges. The IML graph for the popular download tool wget contains more that 340,000 nodes and over 770,000 edges and occupies about 200 megabytes of memory!

Besides the requirement to display large graphs the application was to be developed in Ada using GtkAda. Orginally GtkAda 1.2.13 was used but later replaced by 2.2.0. Other tools that were used include AUnit and XMLAda. The GSL parser was generated by aflex and ayacc.

For the development of GIANT a classical phase-model approache was choosen that worked out very well. During the course of the project important documentation like a specification and a manual were created.

This page is meant as a project documentation and will hopefully be useful for other similar projects (like other Studienprojekte).

Features

The specification contains a detailed description of GIANT's capabilities in German. See below for a list of the major features:

  • Smooth navigation through large graphs (> 100,000 nodes)
    
  • Advanced edge selection
    
  • Extensible scripting language
    
  • Customizable menus through GSL scripts
    
  • Flexible and easy to replace reflection interface for graph reading
    
  • Interruptable operations
    
  • Available for Linux, Solaris and Windows
    

Requirements

The binary distribution of GIANT should work on most machines. The Linux version was compiled on a Debian GNU/Linux system. Please make sure you have GtkAda 2.2.0 installed if using the dynamically linked version.

Clone this wiki locally