
\section{Entwurf des Visualisierungswerkzeugs}

Computerbasierte Visualisierungen basieren auf einer Menge von Daten und einem
Programm, das diese Daten visualisiert. Die Daten dieses Projektes sind 
die Modul-, Schnittstellen- und Bibliotheksbeschreibungen des
\emph{Tycoon}-Systems. Die Beziehungen der Objekte der Beschreibungen zueinander ergeben sich aus der
Semantik der den Beschreibungen zugrundeliegenden Programmiersprache \emph{TL}.
Thema dieser Studienarbeit ist ein Programm zur Visualiserung der Modul-,
Schnittstellen- und Bibliotheksbeschreibungen sowie der Beziehungen der
Objekte der Beschreibungen.

In den n"achsten Abschnitten werden Ort sowie Zeitpunkt der Erzeugung der
Bezugsinformationen bestimmt. Es werden Darstellungsart und
Darstellungsmittel ausgew"ahlt. Die Struktur des Werkzeugs, die bestimmt ist
durch die Darstellungsart und die Art der Erzeugung der Bezugsinformationen,
wird ermittelt.

\subsection{Erzeugung der Bezugsinformationen} \label{erzBez}
Um die Beziehungen der Objekte einer Programmbeschreibung zueinander
darzustellen, werden Bezugsinformationen ben"otigt (vgl. Kapitel \ref{kapBezugsinformationen}).
Diese Bezugsinformationen sind durch die Semantik der der Programmbeschreibung
zugrundeliegenden Programmiersprache festgelegt. Sie sind also implizit in der
Programmbeschreibung enthalten. F"ur die Visualisierung werden die
Bezugsinformationen jedoch explizit ben"otigt.

Hierdurch ergeben sich folgende Fragen:

\begin{itemize}
\item Wo sollen die Bezugsinformationen erzeugt werden, d.h. welches Programm
  erzeugt die Informationen?

\item Wann sollen die Bezugsinformationen erzeugt werden, bei Bedarf oder
  schon vorher?

\end{itemize}

Wenn die Bezugsinformationen vor dem Bedarf erzeugt werden, m"ussen sie
gespeichert werden. 

Es gibt folgende M"oglichkeiten der Speicherung:
\begin{itemize}
\item Die Informationen werden alle zusammen, d.h. zentral gespeichert.
\item Die Informationen werden verteilt gespeichert.
\end{itemize}

\subsubsection{Erzeugungsort (Programm)}

\begin{figure}[h]
  \centering{\includegraphics*{bz.eps}}
\caption{Erzeugung der Bezugsinformationen}
\label{bzfig}
\end{figure}

%\begin{figure}[h]
%  \centering{\includegraphics*{bzty.eps}}
%\caption{Erzeugung der Bezugsinformationen ("Ubersetzer)}
%\label{bztyfig}
%\end{figure}

Prinzipiell gibt es zwei M"oglichkeiten, die Bezugsinformationen zu ermitteln.
Einerseits kann ein separates Programm, eine Art "Ubersetzer, unter Verwendung der
Semantik der verwendeten Programmiersprache, die Bezugsinformationen direkt
erzeugen (vgl. Abb. \ref{bzfig}). 
Andererseits kann der "Ubersetzer die Bezugsinformationen w"ahrend des
"Ubersetzens, also als Seiteneffekt, generieren.

Die Erzeugung der Bezugsinformationen in einem externen Programm erfordert
einen Parser f"ur die Programmiersprache, sowie die algorithmische Umsetzung
jener Teile der Semantik, die die zur Darstellung ausgew"ahlten Beziehungen
beschreiben. F"ur die meisten Programmiersprachen gibt es keine formale Beschreibung der
Semantik ihrer Programmbeschreibungen. Eine solche formale Semantik ist
jedoch notwendig, damit verschiedene "Ubersetzer einer Programmbeschreibung zu
gleichen Ergebnissen kommen. Ein Ergebnis w"are hier die Menge von
Bezugsinformationen. 

Fast alle f"ur die Erzeugung von Bezugsinformationen
notwendigen Mechanismen sind bereits Teil des "Ubersetzers. Das Erstellen
eines eigenen Programms zur Erzeugung von Bezugsinformationen w"are also
doppelte Arbeit.

Da die Semantik der Programmiersprache bereits innerhalb des
"Ubersetzers implementiert ist, kann durch eine Erg"anzung bzw. Modifikation
des "Ubersetzers dieser veranla\ss t werden,  die Bezugsinformationen w"ahrend des
"Ubersetzens zu erzeugen. Um den Aufwand gering zu halten, wird in diesem
Projekt dieser Ansatz verfolgt.


\subsubsection{Erzeugungszeitpunkt}
Die Bezugsinformationen k"onnen jeweils bei Bedarf oder einmalig zur
"Ubersetzungszeit erzeugt werden. Werden die Informationen zur
"Ubersetzungszeit erzeugt, so belegen sie anschlie\ss end Speicherplatz, sind
jedoch bei Bedarf sofort verf"ugbar.

Der ben"otigte Speicherplatz ergibt sich aus der Gr"o\ss e der Beschreibung
einer Beziehung und der Anzahl der Beziehungen. Die Beschreibung einer
Beziehung beinhaltet die Positionen der in Beziehung stehenden
Programmbeschreibungen, sowie die Positionen der Bezug aufeinander nehmenden
Objekte der Programmbeschreibungen.

In einem hierachischen Dateisystem und bei einer durchschnittlichen Pfadl"ange
von 40 Zeichen ergibt sich f"ur den ben"otigten Speicherplatz einer
Beziehungsbeschreibung eine Menge von ca. 80 Zeichen. Bei 100 Beziehungen pro
Bibliothekseinheit (Inter- und Intrabibliothekseinheitenbeziehungen) 
ergibt sich pro Bibliothekseinheit ein ben"otigter
Speicherplatz von 8000 Zeichen. Bei einer Menge von 50 Bibliothekseinheiten
pro Bibliothek sind das 20000 Zeichen je Bibliothek.

Die Erzeugung der Bezugsinformationen bei Bedarf kann, je nach Art der
Beziehungen, viel Rechenzeit ben"otigen.  Besonders bei nicht referentiellen
Beziehungen (vgl. Kapitel \ref{kapBeziehungen}) kann die n"otige Rechenzeit
sehr gro\ss\ werden, da der Aufwand zu ihrer Bestimmung exponentiell wachsen
kann.

Da die Visualisierung der Bibliothekseinheiten dynamisch erfolgen soll, wird ein schneller Zugriff auf
die Bezugsinformationen ben"otigt. Ein schneller Zugriff ist nur bei
Vorhaltung m"oglich. Aus diesem Grund werden die Bezugsinformationen innerhalb
dieses Projektes einmalig zur "Ubersetzungszeit erzeugt.

\subsubsection{Persistente Speicherung der Bezugsinformationen}\label{persSpeiBez}

Die Bezugsinformationen einer Softwarebibliothek k"onnen an unterschiedlichen
Stellen gespeichert werden. Zum einen ist es m"oglich, alle Informationen an einem Ort
zu halten (zentral). Bei einer Anfrage ist nur dieser eine Ort zu durchsuchen.
Zum anderen k"onnen die Bezugsinformationen derart verteilt werden, da\ss\ sie den
jeweiligen Einheiten der Softwarebibliothek zugeordnet werden (dezentral). Diese L"osung hat
den Vorteil, da\ss\ beispielsweise bei einer Neu"ubersetzung eines Moduls nicht
die gesamten gespeicherten Bezugsinformationen bez"uglich des Softwaresystems
durchgesehen werden m"ussen. Die Bezugsinformationen f"ur Schnittstellen,
Bibliotheken und Module lassen sich weitgehend unabh"angig voneinander verwalten.
Diesem Vorteil steht allerdings der Nachteil des
h"oheren Verwaltungsaufwandes gegen"uber. 

Dieser h"ohere Verwaltungsaufwand resultiert daraus, da\ss\ es bei einer
verteilten Speicherung f"ur jede Bibliothekseinheit eine Menge von
Bezugsinformationen gibt. Da jedoch auch Beziehungen zwischen den
Bibliothekseinheiten bestehen (vgl. Kapitel \ref{kapBeziehungen}), bestehen
auch Beziehungen zwischen den Bezugsmengen der Bibliothekseinheiten. Diese
Beziehungen m"uss en nun auch verwaltet werden.

Die Bezugsinformationen werden innerhalb dieser Studienarbeit dezentral
Verwaltet. Diese geschieht auch im Hinblick auf eine Integration der
Verwaltung der \emph{TL}-Programmbeschreibungen in das \emph{Tycoon}-System.

\subsection{Art der Darstellung} \label{vTec}

\begin{figure}[h]
  \centering{\includegraphics*{allText.eps}}
\caption{Darstellung aller Beziehungen}
\label{allText}
\end{figure}

\begin{figure}[h]
  \centering{\includegraphics*{hypertext.eps}}
\caption{Hypertext mir Markierungen}
\label{hypertext}
\end{figure}

F"ur die Visualisierung von miteinander in Beziehung stehenden
Programmtexten und Bibliotheken ist eine Art der Darstellung n"otig,
die es erlaubt, einen Text mit Bez"ugen auf andere Texte anzuzeigen.

Es gibt verschiedene M"oglichkeiten, Beziehungen zwischen Texten
visuell darzustellen.  Beispielsweise k"onnen alle Texte, die
miteinander in Beziehung stehen, gleichzeitig dargestellt werden,
wobei die Beziehungen zwischen Objekten der Programmbeschreibungen,
z.B. mit Hilfe von Pfeilen ausgedr"uckt werden k"onnen (siehe Abb.
\ref{allText}).  Bei einer gro\ss en Anzahl von zusammenh"angenden
Texten wird eine solche Darstellung jedoch schnell un"ubersichtlich.

Eine andere M"oglichkeit der Darstellung von Bezugsinformationen
zwischen Texten ist der Hypertext. Hierbei wird jeweils nur ein Text
(bzw. ein Ausschnitt) angezeigt. Die Textstellen des Textes, die mit
anderen Texten in Beziehung stehen, werden dabei markiert. Durch
Ausw"ahlen einer so markierten Textstelle wird der gerade sichtbare
Text durch jenen ersetzt, mit dem die ausgew"ahlte Textstelle in Bezug
steht. Mit Hilfe des Hypertextes kann auch eine gro\ss e Anzahl von
zusammenh"angenden Texten dargestellt werden.

Aus Gr"unden der "Ubersichtlichkeit wurde der Hypertext als Darstellungsart
gew"ahlt.

\subsection{Struktur des Werkzeugs}

Bei der Wahl von Hypertext als Darstellungsart und dem "Ubersetzer als 
Erzeuger der Bezugsinformationen, ergibt sich die in Abbildung
\ref{Architektur} gezeigte Struktur des entwickelten Werkzeugs.

Es gibt zwei Datenmengen, die Menge der Programmbeschreibungen (Modul-,
Schnittstellen- und Biliotheksbeschreibungen) sowie die Menge der
Bezugsinformationen. Die Bezugsinformationen werden aus den
Programmbeschreibungen vom "Ubersetzer extrahiert. Aus den
Programmbeschreibungen wird mit Hilfe der Bezugsinformationen eine
Darstellungsbeschreibung f"ur Hypertext erzeugt. Die
Darstellungsbeschreibung wird vom Darstellungsmittel als Hypertext dargestellt.

\begin{figure}[h]
  \centering{\includegraphics*{architektur.eps}}
\caption{Aufbau des Visualisierungswerkzeugs}
\label{Architektur}
\end{figure}


%%% Local Variables: 
%%% mode: latex
%%% TeX-master: "quas"
%%% End: 
