Das Programm Schematext hat bei der Erstellung der
Konzeption für die Dokumentation sehr geholfen. Mit dem Programm
war es schnell und einfach möglich, Konzepte auf ihre Praxistauglichkeit
zu überprüfen. So konnte durch Anpassen der entsprechenden
Expanderfunktion zum Beispiel die Hintergrundfarbe schnell
geändert werden. Dadurch ließ sich leicht eine geeignete
Farbkombination für die Frames finden.
Für eine Anwendung der Werkzeugumgebung zur Dokumentation
muß die Werkzeugumgebung einfach zu bedienen sein. Besonders
die Eingabe der Informationen für die Dokumentation muß
einfach sein. Dafür ist Schematext jedoch nur bedingt geeignet.
Wie man im Kapitel 3.3.2 sieht, ist das Hinzufügen von Informationen
arbeitsaufwendig. Die Änderung der Darstellung der Informationen,
die unter Schematext einfach ist, ist bei dem Einsatz der Werkzeugumgebung
nur noch selten notwendig, da das Konzept für die Dokumentation
fertig ist. Deshalb stellt sich die Frage, ob ein anderes Programm
Schematext nicht ersetzen kann. Denn die Werkzeugumgebung von
Schematext benötigt nur die Funktionen für die automatische
Generierung. FrontPage zusammen mit dem Software Developer's Kit
kann diese Funktionen auch übernehmen.
Bei der Nutzung von Schematext als Werkzeug in der Werkzeugumgebung
gibt es Probleme, weil das Programm keine OLE-Schnittstelle besitzt,
über die ein externes Programm oder andere Werkzeuge Schematext
steuern können. Aus diesem Grund treten Probleme
Wenn neue Daten von externen Quellen in die Dokumentation eingefügt
werden sollen, muß ein Importfilter diese Daten in die SDL-Datei
und in die entsprechende HTML-Datei im FrontPage-Verzeichnis schreiben.
So sind vom Importfilter, zum Beispiel für das Einfügen
einer neuen Klasse, mehrere Schritte durchzuführen:
Diese Schritte sind durch die Struktur der SDL-Datei zum Teil
sehr aufwendig.
Da das Importieren der Daten nicht ausreicht, muß das Schema
in Schematext weiter bearbeitet werden. Für eine komfortable
Benutzerführung stellt Schematext keine Funktionen zur Verfügung.
In vielen Fällen muß der Anwender eine Folge von Aktionen
ausführen, z.B. eine Klasse anlegen, Methoden anlegen, Attribute
anlegen und Links zwischen den Objekten erzeugen. Eine gute Benutzerführung
fragt den Anwender nach Einfügen einer Klasse, ob er die
zugehörigen Methoden und Attribute eingeben möchte.
Dies ist mit Schematext nicht möglich. Auch das Vormerken
von noch zu erledigenden Arbeiten unterstützt Schematext
nicht. Da die Bearbeitung von einer Dokumentation komplex ist,
wäre es für den Anwender vorteilhaft, wenn er diese
Arbeiten in einer ToDo-Liste verwalten kann und von dort aus die
Arbeiten beginnen kann.
Ebenfalls nachteilig für eine Benutzerführung ist, daß
die Menüs und Fenster von Schematext fest vorgegeben sind.
Da die Anpassung der Fenster an die Erfordernisse der Dokumentation
nicht möglich ist, muß die Eingabe und das Verändern
von zusätzlichen Daten (z.B. eine Versionsnummer) über
Schemefunktionen im Expander Editor erfolgen. Dies erfordert jedoch
mehr Kenntnisse bei dem Anwender als eine einfache Eingabe in
einem angepaßten Fenster.
Problematisch sind auch die Zugriffsmöglichkeiten auf die
Daten von anderen Knoten. In einigen Fällen ist es sinnvoll,
wenn Schematext bei der Generierung einer HTML-Seite auf die Scheme-Funktionen
von anderen Knoten zugreifen kann. Damit wäre es zum Beispiel
möglich, unterschiedliche Bezeichner für Link zu verwenden.
So besteht ein Link zu einem Entwurfsmuster immer aus dem kompletten
Namen mit Typ und dem Kontext des Entwurfsmusters. In der schmalen
Spalte des Inhaltsverzeichnisses kann man aber zum Teil auf den
Typ verzichten. Eine zweite Schemefunktion, z.B. "name-kurz",
kann den kürzeren Name zwar aufnehmen, aber bei der Generierung
des Links kann Schematext nicht auf diese Funktion zugreifen.
Dieses Verhalten von Schematext vergrößert auch die
Komplexität der Beziehungen im Struktur Editor. So sind aus
diesem Grund mehrere Links von unterschiedlichen Unterknoten zum
gleichen Ziel notwendig, siehe Abschnitt 3.3.1, da kein Zugriff
auf die Links von dem Hauptknoten möglich ist.
FrontPage besteht aus drei Teilprogrammen:
Der FrontPage Editor dient zum Bearbeiten von einzelnen HTML-Seiten,
wie in Abschnitt 3.1.5 beschrieben. Der FrontPage Explorer hilft
beim Bearbeiten und bei der Wartung eines HTML-Angebotes. Dieser
Explorer zeigt den Zusammenhang zwischen den einzelnen HTML-Seiten
an, indem das Programm die Links graphisch darstellt. Der Benutzer
kann dann von hier aus den FrontPage Editor aufrufen. Zusätzlich
bietet das Programm weitere Funktionen für die Verwaltung
der HTML-Seiten, so kann man mit dem FrontPage Explorer die HTML-Seiten
verschieben und das Programm korrigiert automatisch die Links
zwischen den Seiten. Außerdem kann der FrontPage Explorer
überprüfen, ob alle Links zwischen den HTML-Seiten korrekt
sind. Die ToDo-List hilft bei der Verwaltung der anstehenden Arbeiten.
So können von den beiden anderen Programmen direkt Einträge
in diese Liste hinzugefügt werden. Dies ist zum Beispiel
beim Erstellen einer neuen Seite sinnvoll. Von dieser Seite gehen
eventuell Links zu noch nicht angelegten Seiten. Der FrontPage
Editor legt dann diese Seite an und fügt die Seite in die
ToDo-Liste ein, damit diese Seite später bearbeitet wird.
Durch die Bearbeitung der Seite wird diese aus der ToDo-Liste
gestrichen. Durch Anzeigen der ToDo-Liste erhält man so immer
einen aktuellen Stand über die noch auszuführenden Arbeiten.
Dies ist bei der Erstellung von HTML-Angeboten besonders wichtig,
da diese nicht linear strukturiert sind.
Der Benutzer kann alle drei Programmteile über Schnittstellen
anpassen [Microsoft]. Der FrontPage Software Developer's Kit beschreibt
für diesen Zweck die Schnittstellen der Programme. Es stehen
mehrere Möglichkeiten zur Verfügung:
Wesentliche Voraussetzung zur Erweiterung der Programme ist das
Hinzufügen von neuen Menüpunkten, die das Erreichen
der neuen Funktionen ermöglichen. Die neuen Menüpunkte
dienen zum Starten von eigenen externen Programmen. Die Registry
von Windows nimmt die Daten für die neuen Menüpunkte
auf.
Einige Funktionen benötigen neue HTML-Tags. Ein weiteres
Programm kann dann diese HTML-Tags zum Beispiel in einem anschließenden
Übersetzungsschritt durch eigene Texte ersetzen. Da der FrontPage
Editor ihm unbekannte HTML-Tags nur durch ein Zeichen darstellt,
ist es für eine WYSIWYG-Darstellung notwendig, für neu
eingeführte HTML-Tags entsprechende Ersetzungen zu definieren.
Der FrontPage Editor kann bei der Darstellung auf dem Bildschirm
diese Tags durch definierte HTML-Tags, Text und/oder Grafiken
ersetzen.
Mit Templates und Wizards kann FrontPage neue Seiten interaktiv
erstellen. Dabei gibt es Templates und Wizards für einzelne
Seiten, die der FrontPage Editor benutzt, und auch Templates und
Wizards für mehrere Seiten, die der FrontPage Explorer benutzt.
Die Templates und Wizards definieren das Layout der Seite. Diese
Seiten stehen dann zur weiteren Bearbeitung zur Verfügung
und der Benutzer hat bei der Nutzung der Templates bzw. Wizards
Arbeit gespart. Die Templates sind einfache Dateien, die den Aufbau
der Seite beschreiben und auch mit FrontPage erstellt werden.
Die Wizards sind eigenständige Programme, die FrontPage mit
Parameter aufrufen. Der Wizard kann nicht nur ein Grundgerüst
der Seite erstellen, sondern auch durch weitere Befehle die Bearbeitung
der Seite unterstützen. Deshalb ist die Erstellung von neuen
Seiten mit Wizards wesentlich flexibler, aber die Entwicklung
eines neuen Wizard ist aufwendiger und eine Programmiersprache,
wie Visual Basic oder C++, ist erforderlich.
Alle drei Programme besitzen eine OLE-Schnittstelle, mit der die
Bearbeitung der Daten durchgeführt wird. So kann ein externes
Programm über die OLE-Schnittstelle des FrontPage Editors
eine Seite im Editor öffnen und dort Text hinzufügen.
Ebenso kann die ToDo-Liste durch externe Kommandos verändert
werden.
Damit das Erstellen einer Dokumentation nicht zu aufwendig ist,
muß die Werkzeugumgebung Teile der HTML-Seiten selbst erstellen.
Dies ist durch Programmierung eines Wizards für FrontPage
möglich. Ein Wizard kann, wie Schematext, die Frames für
den Kopf, das Inhaltsverzeichnis und die Navigationsleiste erstellen.
Er muß jedoch einige Eingabedaten bekommen. So muß
für den Kopf der Name das Objektes und für das Inhaltsverzeichnis
die Beziehungen zu anderen Objekten bekannt sein. Diese Daten
müssen in einer Datenbank zur Verfügung stehen oder
direkt von der Entwicklungsumgebung kommen. Der Vorteil, den hier
eine Datenbank bietet, ist hier noch größer als in
Abschnitt 4.1.1. Denn eine SDL-Datei kann noch einige Daten aufnehmen,
hier jedoch existiert keine Gelegenheit zum Ablegen der Daten.
Der Wizard kann für das Erstellen der HTML-Seiten die OLE-Funktionen
des FrontPage Editors nutzen. Dazu muß der Wizard, wie die
Scheme-Funktionen im Schematextexpander, die HTML-Befehle in die
HTML-Datei schreiben. Unter Schematext ist für die Generierung
des Kopf-Frames die Scheme-Funktion "Generate" zuständig:
(define (generate node)
(html-header node)
(emit "<table width=100%><tr><td width=20%>" nl)
(emit-anchor-top to-home-link)
(if (and to-toc-link (not (included? node)))
(begin (emit (std-img icon-void) nl)
(emit-anchor-top to-toc-link)))
(if (and to-index-link (not (included? node)))
(begin (emit (std-img icon-void) nl)
(emit-anchor-top to-index-link)))
(emit "</td><td width=60%>" nl)
(title node)
(emit "</td><td width=20%></td></tr></table>" nl))
Diese Funktion kann einfach nach C/C++ portiert werden. Dazu müssen
die folgenden Umwandlungen vorgenommen werden:
| Scheme |
C/C++ |
die Funktionsaufrufe wie (html-header node)
| in Funktionsaufrufe, z.B.html_header(node)
|
| die Ausgabefunktion "emit", wie (emit "</td><td width=60%>" nl) | durch OLE-Funktionen vom FrontPage EditorvtiInsertHTML
|
die Abfragefunktionen, wie to-home-link
| durch Variablen oder Datenbankabfragen |
die if-Funktion, wie(if (and to-index-link ...)))
| durch die if-Funktion, z.B.if (to_index_link and ...)
|
die Ausgabefunktion "emit-contents", wie(emit-content node)
| durch Aufruf des Frontpage EditorsvtiOpenWebPage( ... );
|
Der Wizard kann dann das Layout
der HTML-Seite genauso erzeugen, wie es Schematext kann. Dabei
ist die Reihenfolge umgekehrt. Der Wizard erzeugt zuerst das Layout
als Grundgerüst und dann kann der Benutzer den zusätzlichen
Text eingeben. Bei Schematext gibt der Benutzer zuerst den Text
ein und dann erzeugt Schematext die komplette HTML-Seite. Durch
diese Reihenfolge bestehen bei der FrontPage-Lösung schon
alle HTML-Seiten, wenn der Anwender die Texte editiert. Der Anwender
kann deshalb beim Eingeben von Links die komfortablen Eingabefenster
von FrontPage benutzen und muß nicht die Zahlen für
die Links aus Schematext heraussuchen.
Zur Unterstützung des Anwenders sind Eintragungen durch den
Wizard in der ToDo-Liste möglich. So kann der Wizard alle
zu bearbeitenden Seiten in diese Liste eintragen, so daß
der Anwender immer über die notwendigen Arbeiten informiert
ist. Bei der Eingabe der Texte kann der Anwender auch unterstützt
werden, da hier die FrontPage Menüs angepaßt werden
können.
Schwierigkeiten treten bei Änderungen der Software in der
Entwicklungsumgebung auf. Der Wizard kann nicht direkt aus den
neuen Daten die Seiten erzeugen. Denn der Anwender hat eventuell
schon zusätzliche Texte in den Seiten eingegeben. Diese Texte
darf der Wizard nicht überschreiben. Wenn die Daten fest
vorgegebene Abschnitte betreffen, wie z.B. Linklisten, ist dies
meist kein Problem. Der Anwender hat an diesen Stellen keine Änderungen
vorgenommen. Der Wizard muß also nur den Abschnitt ersetzen.
Um die richtigen Stellen zu finden, sind eventuell zusätzliche
Marken erforderlich. Diese Marken können HTML-Kommentare
sein.
Schwieriger ist es, wenn die Änderungen Bestandteil des Textes
sind. Da der Wizard hier nicht zwischen den Eingaben des Anwenders
und den automatisch erzeugten Texten unterscheiden kann, muß
der Wizard diese notwendigen Änderungen dem Anwender überlassen.
Der Wizard kann aber die notwendigen Tätigkeiten in die ToDo-Liste
eintragen. Eine andere Lösung für dieses ist es, die
Eingaben von FrontPage auch in die Datenbank zu übernehmen
und dann aus der Datenbank die HTML-Seiten zu generieren. Hierzu
muß jedoch auch ein Programm zur Übernahme der Daten
in die Datenbank geschrieben werden, das die in FrontPage geschriebenen
Texte extrahiert.
Bei der Benutzerführung ist die Lösung mit einem Wizard
für FrontPage besser als die Lösung mit Schematext.
So entfällt das umständliche Wechseln zwischen den Programmen
Schematext und FrontPage Editor. Auch die Eingabe von Links aus
dem Text ist unter FrontPage wesentlich einfacher.
Es ist auch kein Auftrennen der Seite in kleinere Abschnitte notwendig,
wodurch die Eingabe überschaubarer wird. Allerdings muß
bei einer Lösung mit FrontPage vom Anwender erwartet werden,
daß er Teile der Seite nicht verändert. So darf er
nicht die Linkziele für die Abschnittsüberschriften
löschen. Denn sonst fehlen diese Linkziele später in
dem fertigen Produkt und der Browser findet dann die Linkziele
nicht und gibt Fehlermeldungen aus. Ein Schutz dieser Textteile
ist in FrontPage leider nicht möglich.
Auch bei der Gestaltung der Seiten ist eine Lösung mit einem
FrontPage Wizard einer Lösung mit Schematext überlegen.
Durch die eigene Programmierung bestehen bedeutend mehr Gestaltungsmöglichkeiten
als mit Schematext. Der Schema Expander dient zwar auch
der Programmierung, jedoch sind bei ihm einige Einschränkungen
vorhanden. An einigen Stellen sind nicht alle benötigen Daten
zu ermitteln, da kein Zugriff auf externe Funktionen anderer Objekte
möglich ist (siehe Abschnitt 4.2.1).
Für den Einsatz von Schematext spricht der Aufwand bei der
Programmierung. Hier sind nur ein Programm für das Einfügen
der Daten in die SDL-Datei notwendig, dabei können einige
Programmteile aus den Filtern aus Abschnitt 3.3.3 wiederverwendet
werden, so daß der Aufwand wahrscheinlich nicht so groß
ist. Bei der Lösung mit dem Wizard für FrontPage muß
der Wizard neu geschrieben werden. Dort sind neben einem Importprogramm
auch Programme für das Erstellen der Seiten erforderlich.
Da diese Seiten für die unterschiedlichen Objektarten, wie
Klassendiagramme, Klassen und Methoden, ein unterschiedliches
Layout besitzen, muß für jedes dieser Objekte eine
eigene Funktion geschrieben werden (In Schematext ändert
sich bei unterschiedlichen Objekten nur der Knotentypidentifikationsnummer.).
Obwohl dabei schon die Vorgaben aus dem Schematext Expander
vorhanden sind, ist der Arbeitsaufwand dafür groß.
Ein weiterer Vorteil von Schematext ist die Möglichkeit,
mehrere Varianten der Dokumentation zu erzeugen. Damit das Know-How
der Entwicklungsfirma geschützt bleibt, dürfen die Kunden
nicht alle Details des Entwurfs erfahren. So wird von dem Beispiel
OSEFA im Internet eine Version veröffentlicht. Damit nicht
alle die Details der Implementierung erfahren, fehlt bei dieser
Dokumentation die Beschreibung der Klassen. Für den internen
Gebrauch an der FH-Konstanz ist die Dokumentation komplett für
eine Weiterentwicklung vorhanden. Schematext hat beide Varianten
aus dem gleichen Datenbestand erstellt. Die Auswahl der Variante
erfolgt einfach über eine Funktion im Schema Expander.
Bei der Lösung mit FrontPage ist das Generieren von zwei
Varianten nicht so einfach, da der Wizard das Grundgerüst
der Dokumentation schon vor der Eingabe erstellt. Somit müssen
die Eingaben für die zwei Varianten zweimal vorgenommen werden.
Für die Weiterentwicklung der Werkzeugumgebung ist meiner
Meinung nach ein Wechsel auf eine Lösung mit FrontPage vorzunehmen.
Denn mit Schematext sind die Probleme bei der Benutzerführung
zu groß, so daß keine annehmbare Lösung erreichbar
ist. Die Probleme mit einem FrontPage Wizard sind lösbar,
auch wenn der Arbeitsaufwand für die Lösung groß
ist.