3.2 Was soll realisiert werden?

In diesem Kapitel steht die Form der Dokumentation im Vordergrund. Dazu untersuche ich die Struktur der Dokumente des Entwurfs und ermittle die daraus die notwendigen Links zwischen den einzelnen Teilen der Dokumentation. Danach folgt eine Beschreibung der Bildschirmaufteilung und eine Aufteilung der Links. Im nächsten Abschnitt behandle ich den Aufbau des Glossar. Als nächstes wird eine Notationserweiterung für die Diagramme vorgeschlagen. Zuletzt folgt noch ein Darstellung der Abschnitte in der Dokumentation, die für die Nachdokumentation des Framework OSEFA notwendig waren..

3.2.1 Struktur

Bei dem Entwurf eines Programmes entstehen viele Dokumente. Bei der Dokumentation ist darauf zu achten, daß diese Dokumente verfügbar sind. Dabei muß jedoch eine Struktur gefunden werden, mit welcher der Leser den Programmaufbau leicht verstehen kann und schnell das Dokument mit der gewünschten Informationen findet. Sind die Dokumente unstrukturiert, müßte der Leser alle Dokumente durchlesen und wahrscheinlich wäre das Verständnis für den Programmaufbau nicht sehr groß.
Für die Einarbeitung in den Aufbau des Dokumentes bieten sich die Ergebnisse der Analyse an. Sie zeigen einerseits die wesentlichen Teile des Programmaufbaus, andererseits ist die Darstellung dieser Informationen nicht durch zusätzliche Klassen zu komplex. Von den Analyseergebnissen kann man dann auch schnell zu den Details, wie zum Beispiel der Beschreibung einer Klasse, gelangen.

Abbildung 18: Struktur der Dokumentation des Entwurfs
Aus diesem Grund werden dem Leser, wie in Abbildung 18 dargestellt, mehrere Möglichkeiten zum Einstieg in die Dokumentation angeboten:

Das zuerst angezeigte Klassendiagramm dient nur für einen Überblick mit den wichtigsten Klassen und ihren Beziehungen, wie sie während des Entwurfs entstehen. Der Leser kann von diesem Diagramm weitere Diagramme erreichen, in diesen Diagrammen werden jeweils Ausschnitte aus dem Überblicksdiagramm verfeinert und durch weitere Klassen ergänzt.
Der Einstieg über die Hot Spots ist nur für Frameworks vorgesehen. Bei Frameworks kann man davon ausgehen, daß ein großer Teil der Leser der Dokumentation des Entwurfs schon mit dem Framework gearbeitet hat und eigene Programme mit Hilfe der Konfiguration des Frameworks erstellt hat. Das Wissen daraus kann bei Benutzung der Hot Spots als Einstieg in die Dokumentation die Einarbeitungszeit verkürzen.
Eine weitere Hilfe beim Verständnis in den Programmaufbau soll die Nutzung von den Entwurfsmustern als Teil der Dokumentation sein. Ein Leser, der die Entwurfsmuster kennt, kann viel schneller die Beziehungen zwischen den Klassen verstehen. Aus diesem Grund sind die Entwurfsmuster in den Klassendiagrammen markiert. Zusätzlich werden die Entscheidungen bei der Auswahl und der Nutzung des Entwurfsmusters als eigener Teil in die Dokumentation eingefügt.
Neben der Verbindung zwischen den Dokumenten müssen auch Verbindungen zwischen den Versionen der Dokumente vorhanden sein. Da Software häufigen Änderungen unterliegt, müssen diese Änderungen auch in der Dokumentation enthalten sein. Aus diesem Grund muß zu jedem Dokument ein Versionsbaum entstehen, der die Veränderungen in dem Dokument im Lauf der Zeit dokumentiert. Bei der von mir erstellten Dokumentation sollten die Änderungen gegenüber der vorherigen Version in den Texten mit Hilfe von Farben markiert werden, damit der Leser schneller die Änderungen erkennen kann. Dabei sind drei Farben genutzt worden, jeweils eine Farbe für unveränderten Text, für veränderten Text und für neuen zusätzlichen Text. Bei Entwurfsmustern wird kein Versionsbaum erstellt, sondern die lineare Entwicklung von der Auswahl der Muster bis zur technischen Realisierung des Musters in vier Schritten dokumentiert, vgl. Abschnitt 2.1.2 .

3.2.2 Bildaufteilung

Die dargestellten Informationen müssen geeignet strukturiert werden, damit sich der Leser zurechtfindet. Durch die komplexen Strukturen innerhalb eines Hypertext kann es leicht passieren, daß der Leser die falschen auswählt und keinen Weg zurück zu den gewünschten Informationen findet. Der Leser ist dann "lost in hyper-space" [Nielsen, 1993]. Zur Vermeidung diese Zustand ist es notwendig, daß die Links ausreichend beschrieben sind. Zusätzlich ist es für den Leser hilfreich, wenn er ständig darüber informiert ist, wo er sich befindet.

Abbildung 19: Bildschirmaufteilung
Aus diesem Grund habe ich die in Abbildung 19 dargestellte Bildschirmaufteilung gewählt. In dem Kopfteil kann ein kurzer Text über die Art der angezeigten Information angezeigt werden. Dabei soll der Text aus dem Typ des Objektes, z.B. Klassendiagramm, Entwurfsmuster oder Klasse und den konkreten Namen des Objektes bestehen.
Im Teil Inhalt werden die eigentlichen Informationen über das jeweilige Objekt angezeigt. Da viele Objekte, wie die Klassen und die Entwurfsmuster, mit Text beschrieben werden, reicht der Platz in diesem Bildschirmteil meist nicht aus um den kompletten Text darzustellen. Darum kann in diesem Bildschirmteil gescrollt werden.
Im Bildschirmteil für das Inhaltsverzeichnis werden Links zu einzelnen Abschnitten im Text des Inhaltsteils angeboten. Diese Links sollen dem Leser ein schnelles Bewegen zu den für ihn relevanten Textteilen ermöglichen. Dies ist nötig, da der Browser große Texte nicht immer komplett im Inhaltsteil darstellen kann. Außerdem sollen hier Links zu weiteren Informationen zu diesem Objekt angeboten werden. Im unteren Teil des Bildschirms werden zusätzliche Links zur Navigation dargestellt .
Die in Abbildung 19 dargestellte Bildschirmaufteilung reicht jedoch nicht aus. Es fehlt die Möglichkeit auf die Links der Objekte auf höheren Ebenen (vgl. Abbildung 18) zuzugreifen. Da diese Objekte den Kontext der angezeigten Informationen beschreiben, kann es für das Verständnis nötig sein diese Dokumente zu lesen. Deshalb wurde die Bildschirmaufteilung erweitert.

Abbildung 20: c³-Struktur
Die in Abbildung 20 dargestellte Aufteilung des Bildschirms, mit c³-Struktur bezeichnet, ermöglicht es dem Leser immer wichtige Links der oberen Ebenen anzuzeigen. Bei dieser Bildschirmaufteilung werden die für die Orientierung wichtigen Köpfe mehrerer Ebenen gezeigt. Damit kann der Leser nicht nur das aktuelle Objekt identifizieren, sondern auch der Kontext des Objektes ist vorhanden. Die für die Navigation wichtigen Bildschirmteile, Inhaltsverzeichnis und Navigation, werden ebenfalls dargestellt. Mit Hilfe der hier dargestellten Links kann der Leser schnell in die höheren Ebenen zurückkehren und sich dort über den Kontext informieren. Bei einem Wechsel in eine tiefere Ebene wird nur der Bildschirmteil Inhalt überschrieben. Die anderen Bildschirmteile bleiben weiterhin auf dem Bildschirm.
Damit der Leser nicht durch sehr starke Aufteilung des Bildschirms verwirrt wird, werden den einzelnen Ebenen unterschiedliche Hintergrundfarben zugeteilt. Damit der Kontrast nicht zu sehr leidet, werden helle Farbtöne verwendet. Die Systemebene ist rosa. Bis zur Ebene der Methoden und der Attribute, die türkis ist, wird die Farbe immer kälter, so daß ein Tiefeneindruck entsteht.

3.2.3 Die Links zur Navigation

Der wesentliche Vorteil einer Dokumentation mit Hypertext gegenüber einer Dokumentation auf Papier ist, daß mit Hypertext sich komplexere Dokumentstrukturen aufbauen lassen. Ein sequentieller Text kann durch eine Gliederung allenfalls eine baumartige Struktur bekommen. Ein Hypertext kann durch Links eine beliebige Struktur besitzen.
Deshalb stellt sich die Frage, wo und welche Links in der Dokumentation sein sollen, die die Dokumentenstruktur widerspiegeln. In der Bildschirmaufteilung im Abschnitt 3.2.2 wurden zwei Bildschirmteile (Inhaltsverzeichnis und Navigation) für die Links vorgesehen.
Das Inhaltsverzeichnis nimmt unterschiedliche Typen von Links auf. Zum einen sind dort Links zu den einzelnen Abschnitten im Text. Da bei einem Wechsel in eine tiefere Ebene der Inhalt zu diesem Objekt überschrieben wird, ist auch ein Link vorhanden, der den Rücksprung zu dieser Ebene ermöglicht. Dieser Link überschreibt dann alle Informationen der unteren Ebenen und schreibt den Inhalt in den entsprechenden Bildschirmteil.
Im Inhaltsverzeichnis sind zusätzlich Links zu weiter beschreibenden Grafiken, dies können Klassendiagramme, Interaktionsdiagramme oder Zustandsdiagramme sein. Diese Grafiken werden nicht direkt in den Inhalt geschrieben, weil diese Grafiken meist sehr groß sind und deshalb viel Platz auf dem Bildschirm beanspruchen. Kleinere Grafiken können auch direkt in den Text eingefügt werden. Weitere Links im Inhaltsverzeichnis führen zu den Testfällen und den darunter liegenden Ebenen. So sind zum Beispiel bei den Entwurfsmustern Links zu allen Klassen aufgeführt, die im Muster enthalten sind.
Der zweite Bildschirmteil, der Platz für Links enthält, ist die Navigationsleiste. Sie nimmt die Kontext bezogenen Links auf. Dies sind zum Beispiel Links zu anderen Objekten der gleichen Ebene. So sind bei den Klassen Links zu anderen Klassen des gleichen Entwurfsmusters vorhanden. Diese Links dienen dem Verständnis des Zusammenwirkens der Klassen. Dies ist vor allen bei Klassen sinnvoll, die in unterschiedlichen Mustern mit unterschiedlichen Rollen auftreten. Denn hier wird ja im umgebenen Rahmen der c³-Struktur nur ein Entwurfsmuster dargestellt. Mit den hier angebotenen Links kann man auch das Zusammenwirken der Klasse mit den Klassen des anderen Entwurfsmusters zum Ausdruck bringen. Zusammen mit diesen Links ist auch ein Link zu dem Entwurfsmuster vorhanden. Damit kann man sich auch dort über den Kontext der Klasse im Entwurfsmuster informieren. Auf den anderen Ebenen der Dokumentation sind ähnliche Links vorhanden, die sich auf den dortigen Kontext beziehen. Bei den Entwurfmustern ist zum Beispiel ein Verweis auf den Hot Spot und ein Verweis zu dem Originalmuster nach [Gamma et al., 1995] vorhanden.
Hier sind auch Links zu den anderen Versionen eines Objektes. Da bei der Softwareentwicklung immer wieder Änderungen am Entwurf vorgenommen werden, entstehen auch Dokumente für unterschiedliche Versionen des Objektes. Da diese zum Teil für das Verständnis über den Entwurf wichtig sein können, sind diese alten Dokumente von hier aus erreichbar.
Zusätzlich sind in diesem Bildschirmteil weitere Links mit speziellen Funktionen, so ist hier ein Link für den Rücksprung zur zuletzt angezeigten Seite. Wobei diese Links auf eine Ebene bezogen sind. Das heißt, daß der Link auf der Systemebene die letzte Seite auf der Systemebene wieder anzeigt und für die anderen Ebenen entsprechend. Hier sind auch weitere Links, wie die Links zur Erklärung der Notation der Grafiken.
In dem eigentlichen Inhalt sind ebenfalls Links. Besonders bei grafischen Beschreibungen ist es sinnvoll, direkt aus der Grafik zu den gewünschten Dokumenten zu springen. Dies sind neben den Klassen auch die Hot Spots und die Entwurfsmuster, die durch eine Notationserweiterung in den Grafiken sichtbar sind.
Bei Beschreibungen mit Text können ebenfalls zusätzliche Links im Bildschirmteil Inhalt sinnvoll sein. Wenn im Text eine Aufzählung vorkommt, so sollten von dort aus direkt Links zu den Beschreibungen der einzelnen Elementen der Aufzählung vorhanden sein. Dies erleichtert das Lesen der Dokumentation, da dann die Links nicht mehr im Inhaltsverzeichnis gesucht werden müssen. Allerdings müssen diese Begriffe auch im Inhaltsverzeichnis vorhanden sein, damit ein Leser, der sich gut in der Dokumentation auskennt, schnell zu den gewünschten Informationen kommt.
Im Fließtext können auch Links vorkommen. Im Text vorkommende Begriffe sollten erklärt werden, wenn dies nötig ist. Diese Erklärung kann im Glossar erfolgen. In diesem Fall muß ein Link in das Glossar vorhanden sein. Das gleiche gilt bei der Erwähnung von Literatur, bei der ein Link in das Literaturverzeichnis vorhanden sein muß. Werden Begriffe aus darunterliegenden Ebenen in dem Text erwähnt, so muß auch von hier ein direkter Link vorhanden sein. So werden zum Beispiel in den Entwurfsmustern häufig die beteiligten Klassen erwähnt. Es kann vorkommen, daß die Begriffe an unterschiedlichen Stellen erklärt werden, z.B. weil für einen Begriff ein Eintrag im Glossar steht und gleichzeitig dieser Begriff der Name einer Klasse ist. In diesem Fall sollen beide Links erzeugt werden, wobei der Link zur Klasse durch "[class]" markiert wird, damit der Leser die beiden Links unterscheiden kann. Die Erweiterung mit dem zusätzlichen Link zur Klasse soll nur an Stellen eingefügt werden, wo dies sinnvoll ist, z.B. bei den Entwurfsmustern.

3.2.4 Das Glossar

Durch die Erklärung von Begriffen im Glossar kann das Verständnis der Dokumentation wesentlich erleichtert werden. Denn für einen Leser ohne Erfahrung mit dem Entwurf des Programmes stehen im Glossar die nötigen weiteren Erklärungen zur Verfügung. Der erfahrene Leser jedoch wird nicht durch für ihn unnötige Informationen gestört, da diese ihm schon bekannt sind.
Damit ein Glossar nützlich ist, muß der Zugriff auf die Begriffserklärungen einfach sein. Die Nutzung von HTML erleichtert den Zugriff auf diese Begriffe, weil hier Links zu den Erklärungen direkt in den Text eingefügt werden können. Dem Leser wird gegenüber gedruckten Dokumentationen das Blättern erspart. Dafür muß jedoch bei jedem Auftreten des Begriffs ein Link eingefügt werden. Die Effektivität des Glossars läßt sich noch weiter erhöhen, wenn bei der Erklärung eines Begriffs im Glossar diese Erklärung den Text, in dem der Begriff steht, nicht überdeckt. Denn dann kann der Leser beide Texte gleichzeitig lesen und so den Text schneller verstehen. Dafür ist es jedoch notwendig, daß der Bildschirm groß genug ist, um beide Texte gleichzeitig darzustellen.
Die erklärten Begriffe sollten nicht nur über den Text erreichbar sein, es muß auch eine alphabetische Liste aller Begriffe vorhanden sein. Diese Liste muß weiter unterteilt werden, wenn die Liste zu lang wird, was schnell vorkommt, da meist viele Begriffe erklärt werden müssen.
Bei der Erklärung eines Begriffes sollte auch die Entwicklung des Begriffes in der Programmentwicklung berücksichtigt werden. Meist werden die Begriffe in der Analysephase entdeckt und dort definiert. Im weiteren Verlauf der Entwicklung kann sich die Definition des Begriffs verändern. Eine Veränderung der Definition kann zum Beispiel durch eine Korrektur von Unklarheiten während der Analyse notwendig sein. Diese Veränderungen sollten auch festgehalten werden. Ist die Veränderung nur eine Ergänzung der Definition, kann dies durch einfaches Anhängen an die alte Definition erfolgen. Wird der Begriff komplett neu definiert, so sollte die alte Definition auch weiterhin lesbar sein. Es ist natürlich kenntlich zu machen, daß diese Definition veraltet ist. Dieses Festhalten der Entwicklung eines Begriffes kann das Verstehen dieses Begriffes wesentlich erleichtern. Gerade wenn der Begriff wegen Unklarheiten komplett neu definiert wird, hilft es dem Leser, wenn er erkennt, welche Definition falsch ist. Ohne dieses Festhalten kann es sein, daß der Leser zuerst den Begriff ebenfalls falsch versteht. Das Festhalten von alten Definitionen eines Begriffes ist auch nötig, wenn sich die Definition zwischen zwei Versionen ändert. Liest jemand die Dokumentation der alten Version, so muß er Zugriff auf die alte Definition haben.

Abbildung 21: Entwicklung eines Begriffs
Neben den Änderungen der Definition von Begriffen können sich Begriffe auch anders verändern, wie in Abbildung 21 dargestellt. Diese Veränderungen gleichen den Entwicklungen der Klassen. Ein Begriff kann verfeinert und aggregiert werden. Bei der Verfeinerung wird ein Begriff in mehrere andere Begriffe aufgeteilt, zum Beispiel gibt es in dem Framework OSEFA den Begriff Ablaufsteuerung. Dieser Begriff teilt sich in Grob- und Feinsteuerung auf. Diese zwei Begriffe zusammen ergeben die Ablaufsteuerung. Ein Begriff kann auch aggregiert werden. Die neuen Begriffe sind dann Teile des alten Begriffs. Diese Beziehungen müssen auch als Links in der Beschreibung der Begriffe enthalten sein.
Die Begriffe im Glossar können einer Klasse im Programmcode entsprechen. Das heißt, die Begriffe wurden in der Analyse gefunden und dann beim dem Entwurf als Klasse aufgenommen. Diese Beziehung muß als Rückverweis in die Dokumentation des Entwurfs als Link aufgenommen werden.

3.2.5 Diagramme

Vor allem in der Analyse- und der Designphase werden bei der Softwareentwicklung viele Diagramme, wie Klassendiagramme und Interaktionsdiagramme, erzeugt. Diese Form der Darstellung erleichtert das Verständnis für die Software. Deshalb sollte die Dokumentation diese Diagramme auch enthalten. Die Diagramme sollten auch in den unterschiedlichen Versionen in der Dokumentation enthalten sein, weil die Folge von Versionen die Entwicklung der Software verdeutlicht. Die aktuelle Version muß natürlich immer zuerst erreichbar sein.
Diese Diagramme werden meist mit Hilfe von Entwicklungstools erstellt. In den Klassendiagrammen dieser Entwicklungstools fehlen jedoch wichtige Informationen. In diesen Diagrammen sind keine Entwurfsmuster und keine Hot Spots markiert. Da diese Informationen für das Verständnis des Programmes hilfreich sein können, müssen die Diagramme um diese Informationen ergänzt werden.
Dazu ist eine Erweiterung der Notation notwendig, siehe Abbildung 22. Die Entwurfsmuster werden durch einen hellblauen Hintergrund gekennzeichnet. Alle Klassen eines Musters werden hellblau hinterlegt. Treten Überschneidungen bei den Entwurfsmustern auf, weil einige Klassen in mehreren Entwurfsmustern enthalten sind, so wird der Hintergrund an den entsprechenden Stellen dunkler (in der Abbildung bei der Klasse CNC_Maschine). Die Beschriftung der Entwurfsmuster erfolgt mit gelben Rechtecken mit schwarzer Schrift, die am Rand des blauen Hintergrunds plaziert werden. Es wird der Name des Entwurfsmusters und eine Bezeichnung für die Aufgabe des Entwurfsmusters angegeben.
Hot Spots werden ebenfalls mit gelben Rechtecken markiert. Sie werden in der Nähe der beteiligten Klassen plaziert. Die Beschriftung gibt den Zweck des Hot Spots an und verdeutlicht, daß es sich um einen Hot Spot handelt. Dabei wird als weitere Unterscheidung zu den Entwurfsmustern eine rote Schrift verwendet.
Damit die Diagramme in weiteren Diagrammen verfeinert werden können, wird die Notation noch um graue Rahmen erweitert. Dieser Rahmen gibt an, daß die Beziehungen zwischen den Klassen in diesem Rahmen in einem weiteren Diagramm detaillierter dargestellt werden. In den neuen Diagramm können dann auch neue Klassen hinzugefügt werden. An dem Rahmen ist ein weißes Rechteck mit schwarzen Rahmen und schwarzer Schrift vorhanden, das den Namen des Diagramms angibt.

Abbildung 22: Klassendiagramm mit Entwurfsmuster und Hot Spots, vgl. [Schmid, 1996b]

3.2.6 Erweiterung der Struktur bei der Dokumentation von OSEFA

Im Rahmen der Diplomarbeit wurde das Framework OSEFA als Beispiel genommen. Für ein Framework sind neben der Dokumentation des Entwurfs auch andere Teile zu dokumentieren, damit das Framework nutzbar ist. Aus diesem Grund sind in dem Beispiel zu dem Abschnitt mit der Beschreibung des Entwurfs zwei weitere Abschnitte vorhanden.
Ein Framework kann nicht alle Bereiche im Anwendungskontext abdecken. Deshalb muß sich der mögliche Benutzer des Frameworks einen schnellen Überblick über die Fähigkeiten des Frameworks machen können. Mit diesen Informationen kann der Benutzer dann entscheiden, ob er dieses Framework nutzen will. Diese Informationen werden dem Benutzer im Abschnitt Einleitung zur Verfügung gestellt. Hier werden neben der allgemeinen Beschreibung des Frameworks OSEFA mit der Problembeschreibung, dem Lösungskonzepts und Beispielen, auch technische Informationen über die Einsetzbarkeit von OSEFA gegeben. Dazu zählen die Abgrenzung des Fertigungsgebietes mit Beschreibung der Voraussetzungen im Fertigungsablauf (Frozen Spots) und den variablen Teilen des Frameworks (Hot Spots) [Schmid, 1996a]. Weiterhin stehen Informationen über die Portierbarkeit und die Intregrierbarkeit von OSEFA zur Verfügung.
Der zweite zusätzliche Abschnitt, der Abschnitt Konfiguration, besteht aus mehreren Arbeitsanleitungen. Mit Frameworks lassen sich einfach und schnell ein neues Programm für eine bestimmte Konfiguration erstellen. Bei Black-Box Frameworks, wie das Framework OSEFA [Schmid, 1996b], geschieht die Anpassung nur durch Einbinden und Parameterisieren der vorhandenen Komponenten. Für die Anpassung von OSEFA geschieht dies, indem eine bestimmte Funktion neu erstellt wird [Peters, 1997]. Diese Funktion dient zur Erstellung der benötigten Komponenten aus Klassen und der Verknüpfung von den Komponenten. Die Erstellung dieser Funktion wird in mehreren Arbeitsanleitungen in einem Unterabschnitt des Abschnittes Konfiguration gezeigt. In zwei weiteren Unterabschnitten wird die Erstellung von Konfigurationsdateien beschrieben. Diese Konfigurationsdateien dienen der Parameteresierung von OSEFA. Wünschenswerte direkte Querverbindungen zwischen den Hot Spots in diesem Abschnitt und der Beschreibung des Entwurfs dieses Hot Spots sind nicht vorhanden. Denn die mit der gegenwärtigen Werkzeugumgebung erzeugten HTML-Seiten können die umliegenden Frames nicht aufbauen (Konzepte zur Lösung dieses Problemes siehe Abschnitt 4.3.1).
Da diese zwei Abschnitte nicht zum eigentlichen Thema der Diplomarbeit der Dokumentation des Entwurfs gehören, werden diese Abschnitte nicht weiter betrachtet. Der Aufbau der beiden Abschnitte gleicht im wesentlichen dem Abschnitt Design, den ich in den vorherigen Abschnitten beschrieben habe.


© Technische Informatik