VILAS -- Visualisation of Large Software System

Large software systems consisting of hundred thousands of lines of code can hardly be managed without appropriate tools. Existing tools, however, fall short in unveiling the architecture of such software systems. At best, they show dependencies between program parts, but only on a rather low level. A global view of the software architecture is usually missing. Information is often shown textually and not graphically.

The aim of the VILAS project is therefore to develop a flexible framework for the automatic visualisation of large object-oriented software systems. We plan to show the static structure of a system in form of various graphs, which can be analysed using innovative navigation and abstraction mechanisms. This will make it clear how the building blocks of a system (variables, methods, classes, files, packages, directories or subsystems) depend on each other (by reference relations, call relations, inheritance relations, or include relations). Information about building blocks and dependencies is obtained from a software database, which is filled by the existing development environment SNiFF+.

Wherever possible, we will use common diagram notations (e.g. UML diagrams for classes). For diagrams on the level of methods, files or subsystems we will develop new notations.

The novel aspects of our project are:

  • The user can switch between various abstraction levels (method, class, file or subsystem level). When viewing a system on a higher level the dependencies on the lower levels are aggregated and shown as summary edges. Various layout algorithms support the clustering of related software parts.
  • Powerful selection, navigation and filtering techniques help to use the scarce screen space economically, to quickly navigate to interesting details, to hide irrelevant parts of a system and to show additional information on demand.
  • The diagram framework can also show arbitrary attributes of software parts and dependencies, such as complexity measures, version information, developers' data or other annotations.
  • In addition to natural subsystems such as packages or directories the user can also define subsystems on a logical base. Subsystems can be combined using set operations (union, intersection) and the result can again be visualised.
  • In order to make the visualisation efficient, large amounts of symbol information, indexes and other information have to be precalculated and kept in the database. Therefore we intentionally distinguish between a developent environment such as SNiFF+, which allows efficient program development, and an analysis environment such as VILAS, which is decoupled from program development and allows powerful and efficient browsing.

The project is a cooperation between the Institute of Practical Computer Science (System Software) at the University of Linz and the company TakeFive Software in Salzburg. The project proposal has been submitted to the Austrian Science Foundation (FWF) in September 1999.