In diesem Kapitel zeige ich die für die Implementierung
notwendigen Arbeiten. Zusätzlich wird auch das Zusammenspiel
der einzelnen Werkzeuge in der implementierten
Werkzeugumgebung dargestellt. Der erste Abschnitt zeigt die
Konfiguration von Schematext für die Werkzeugumgebung.
Danach folgt eine Darstellung des Datenflusses zwischen den
einzelnen Werkzeugen in der Werkzeugumgebung. Daran
schließen sich zwei Abschnitte an, die sich mit zwei
Arbeitsschritten beschäftigen. Dies ist zum einen das
Konvertieren der Daten von Schematext nach FrontPage und
umgekehrt und zum anderen das automatische Einfügen von
Links mit dem Programm SED. Es folgt ein Beschreibung der
Arbeiten für das Einfügen von Diagrammen und zuletzt zeige
ich an einem Beispiel die Arbeiten, die auszuführen sind, um
neue Daten in die Dokumentation aufzunehmen.
Ausgangspunkt für die Arbeit mit der Werkzeugumgebung ist
das Programm Schematext. Hier wird das Aussehen aller Objekte
definiert. Für alle Arten von Beschreibungen wurden Knotentypen
eingeführt. Es existieren Knotentypen für die
Klassendiagramme, die Hot Spots, Entwurfsmuster, Klassen
usw., siehe Abbildung 23. Für alle diese Knotentypen
wurde die Bildschirmaufteilung entsprechend den Vorgaben aus
Kapitel 2.2.2 mit Hilfe von Frames realisiert. Dafür sind Unterknotentypen
eingeführt worden, die jeweils den Inhalt eines Frames
beschreiben. Die Unterknotentypen für Bildschirmteile
Kopf, Inhaltsverzeichnis und Navigation wurden so
konfiguriert, daß Schematext diese Frames weitgehend
automatisch generiert.
Beim Bildschirmteil, der die Informationen aufnehmen soll,
wurden die einzelnen Unterknotentypen zusätzlich um
weitere Unterknotentypen ergänzt, um die Texte weiter
zu gliedern. So existieren bei den Entwurfsmustern die Unterknotentypen
Intent, Motivation, Applicability, Structure, Participants,
Consequences, Implementation und Related Pattern. Bei den
Entwurfsmustern entspricht die Einteilung weitgehend der
Einteilung der Entwurfsmuster in [Gamma et. al., 1995].
Zusammen mit den Knotentypen wurden auch die Linktypen
erstellt und deren Aussehen festgelegt. Die Beziehungen
zwischen den Knotentypen, die die Linktypen
ausdrücken , sind sehr komplex. Denn in den meisten Fällen
gehen die Links für eine Beziehung zwischen zwei
Objekten nicht nur von einem Frame aus, sondern von mehreren
Frames, z.B. vom Verzeichnis- und vom Inhaltsframe gehen Links
zu dem gleichen Objekt. Für alle Links aus
unterschiedlichen Frames muß trotz des gleichen Ziels ein
eigener Linktyp definiert werden.
Damit Schematext die Navigationsleiste automatisch
generieren kann wurden weitere Linktypen notwendig.
Die meisten der schon vorhandenen Linktypen konnten
nicht verwendet werden, da diese von einem Frame ausgehen.
Damit aber die Seite bei Nutzung eines Links in der
Navigationsleiste richtig aufgebaut werden kann, muß der Linktyp
vom Hauptknotentyp ausgehen. Deshalb ist noch ein Linktyp
von dem Hauptknotentyp zu den Objekten notwendig.
Für die automatische Generierung der Navigationsleiste
wurden zusätzlich einige Linktypen doppelt
ausgeführt. Bei einem Linktyp wird auch ein Link in
der Navigationsleiste eingefügt, bei dem anderen Linktyp
wird kein weiterer Linktyp hinzugefügt.

Abbildung 23:
Schema der
Dokumentation (Ausschnitt)
Da in der Navigationsleiste wenig Platz ist, werden einige
HTML-Seiten linear verbunden, z.B. alle Klassen in einem
Entwurfsmuster oder alle Entwurfsmuster. Das heißt, der
Leser kommt nur zu der vorherigen oder der nachfolgenden
Seite einer Liste und kann sich von dort weiter nach vorne
bzw. hinten bewegen, um alle Seiten der Liste zu erreichen.
Die Links zu diesen Seiten werden als Pfeile dargestellt.
Diese Pfeile werden von Schematext automatisch generiert.
Dazu benötigt Schematext jedoch einen Knoten von dem Links
zu jedem Element der Liste ausgehen, damit Schematext die
Elemente der Liste kennt. Bei einigen dieser Listen, z.B. den
Klassen eines Entwurfsmusters, können vorhandene Knoten,
hier das Entwurfsmuster, genutzt werden. Bei anderen Listen,
z.B. der Liste aller Entwurfsmuster, ist ein neuer Knoten
notwendig. Dabei wurde der dazugehörige Knotentyp so
angelegt, daß die daraus von Schematext erstellte HTML-Seite
nicht sichtbar wird, da diese Seite keinen Inhalt hat.
Für die Versionierung wurden ebenfalls solche Knotentypen
angelegt. Damit läßt sich allerdings nur eine lineare Liste
aufbauen. Somit ist auch kein Versionsbaum möglich, was für
das Beispiel der Nachdokumentation von OSEFA nicht
erforderlich ist, sondern nur eine Liste von aufeinander
folgenden Versionen. In dem Abschnitt 4.3.3 ist eine Lösung
für einen Versionsbaum vorhanden.
3.3.2 Der
Datenfluß in der Werkzeugumgebung
Der Datenaustausch zwischen den einzelnen Programmen in
der Werkzeugumgebung erfolgt über Dateien. Dies ist nötig,
weil keine direkte Anbindung von FrontPage an Schematext
existiert. Da keine OLE-Server-Schnittstelle für Schematext
existiert und keine Informationen über die
OLE-Client-Schnittstelle von Schematext zu erhalten war, war
es nicht möglich, selbst eine komfortablere Anbindung über
die OLE-Schnittstelle zu entwickeln.
Für das Einfügen von neuen Daten in die Dokumentation
ist es notwendig, daß in Schematext neue Knoten
erzeugt werden. Der Knotentyp entspricht dem Typ des
beschriebenen Objekts. Danach werden neue Links
erzeugt. Diese Links gehen von dem Verzeichnis in die
Unterknoten des Inhalts. Mit diesen Links werden alle
Abschnitte des Textes im Verzeichnis aufgeführt. Weiterhin
muß ein Link von dem Unterknoten Navigation zu
dem Hauptknoten erzeugt werden, damit Schematext die
Navigationsleiste erzeugen kann.
Nun folgt die Erzeugung von den Links zwischen den
einzelnen Objekten. Der erzeugte Knoten steht in
Beziehung mit anderen Objekten. Diese Beziehungen sollen als
Links im erzeugten HTML-Dokument erscheinen. Deshalb müssen
diese in Schematext als Links eingegeben werden. Dazu
werden die vordefinierten Linktypen verwendet. Auch
die Links, die später in die Texte eingefügt werden
sollen, werden erzeugt.
Danach erfolgt die Konvertierung der Daten nach HTML für
FrontPage. Dafür wird das Schema in Schematext gespeichert
und dann der Filter für den Export benutzt, siehe Abbildung
24. Dieser erzeugt für alle neuen Unterknoten eine
HTML-Datei. Diese Dateien werden in einem Unterverzeichnis
des Verzeichnisses von FrontPage erzeugt. Der Filter wird in
Kapitel 3.3.3 beschrieben.

Abbildung 24:
Der Datenfluß in der Werkzeugumgebung
Die neuen HTML-Dateien können nun mit dem FrontPage
Editor bearbeitet werden. Der Filter hat für alle Unterknoten
eine Datei erstellt. Es müssen aber nur die Dateien
bearbeitet werden, die für den Frame Inhalt zuständig sind.
Diese Dateien stehen, wenn der Text nicht in kleinere
Abschnitte unterteilt ist, im Verzeichnis "<Knotentypname>_Inhalt<...>".
Wenn der Text in kleinere Abschnitt unterteilt ist, wie bei
den Entwurfsmustern mit Intent, Motivation usw., so stehen
die Dateien in den Verzeichnissen "<Knotentypname>_<Abschnittname><...>".
Bei der Eingabe von Texten in FrontPage können auch Links
zu anderen Seiten der Dokumentation erzeugt werden. Es muß
jedoch ein spezielles Format für den Linknamen
eingehalten werden, da die Namen der Zieldateien erst nach
dem Kompilieren mit Schematext bekannt sind. Damit diese Links
von anderen Links, die nach Zielen außerhalb der
Dokumentation verweisen, unterscheidbar sind, werden zwei
spezielle Protokolle eingeführt. Während ein Link
mit dem Protokoll "gi:" einen Link aus der
von Schematext generierten Linkliste entfernt und ihn an die
neue Stelle einfügt, wird bei einem Link mit dem
Protokoll "ci:" eine Kopie des Links aus der
Linkliste erzeugt. Statt an das Protokoll nun die Domain und
den Pfad der Datei anzuhängen, wird an das Protokoll nun die
Linknummer aus Schematext angehängt. Die Linknummer
wird in Schematext im Menü "Eigenschaften" des Links
angezeigt. Sie besteht aus den Buchstaben "li",
einem Bindestrich und einer Zahl. Ein Vollständiger Linkname
kann zum Beispiel "gi:li-488" sein.
Der Filter für den Import schreibt die Eingaben zurück
in die SDL-Datei von Schematext. Dafür stehen zwei
Wege zur Verfügung. Bei einem Weg werden zusätzlich zur
Konvertierung auch Querverweise ins Glossar eingefügt. Da
das Einfügen von Querverweisen sehr lange dauert und
gleichzeitig zu Problemen führt (siehe Abschnitt 3.3.4),
gibt es auch die Möglichkeit diesen Ersetzungsvorgang
auszulassen. Mit dem so erzeugten Text können dann schnell
Änderungen überprüft werden.
Da die Möglichkeiten des Schematext Editors sehr
begrenzt sind, wurde eine Möglichkeit gesucht, die das
Editieren von Inhalten mit FrontPage ermöglicht. Durch die
Kombination von Schematext und FrontPage hat man einerseits
einen komfortablen HTML-Editor und anderseits kann Schematext
viele Teile automatisch generieren. Da der FrontPage Editor
nur HTML-Dateien lesen kann, wurde es nötig, die SDL-Datei
in mehrere HTML-Dateien zu konvertieren.

Abbildung 25:
Gewünschte Dateienanordnung
Da aus einer Datei mehrere Dateien erstellt werden müssen
stellt sich zuerst die Frage, wo diese Dateien gespeichert
werden sollen und wie diese Dateien heißen sollen. Damit die
Dateien leicht gefunden werden können, habe ich ein eigenes
Verzeichnis "FrontPage" für diese Dateien
angelegt. Da jedoch sehr viele Dateien entstehen, ist es
nötig weitere Unterverzeichnisse anzulegen. Zuerst war
geplant, daß für jeden Knotentyp ein eigenes
Verzeichnis erstellt wird und in diesem Verzeichnis für alle
Unterknotentypen weitere Unterverzeichnisse erstellt
werden. In diesen Unterverzeichnisse sollten dann die Dateien
abgespeichert werden, so daß sich die in Abbildung 25
dargestellte baumartige Verzeichnisstruktur ergeben hätte.
Die Strukturierung nach Unterknotentypen ist sinnvoll,
weil einige Unterknotentypen nur für die Generierung
notwendig sind und in die Unterknoten keine Daten
eingegeben werden müssen. Damit sind alle Dateien
zusammengefaßt, die die Texte aufnehmen.
Mit dieser Verzeichnisstruktur ist jedoch das Einfügen
von Grafiken schlecht möglich. Die Grafiken, die bei der
Bearbeitung mit FrontPage in die HTML-Dateien eingefügt
werden, müssen auch für die von Schematext erstellten
HTML-Dateien zugreifbar sein. FrontPage fügt beim Einfügen
von Grafiken die relativen Adressen der Grafiken in die
HTML-Datei ein. Damit ist es nicht möglich, daß die
Grafiken für die Bearbeitung mit FrontPage und die Grafiken
in der fertigen Version der Dokumentation in einem
Verzeichnis liegen. Deshalb müssen die Grafiken vom
FrontPage-Verzeichnis zu dem Schematextverzeichnis kopiert
werden. Damit das Kopieren der Grafiken von dem
FrontPage-Verzeichnis zu dem Schematextverzeichnis einfach
ist, müssen sich alle Grafiken in einem Unterverzeichnis
befinden. Eine Kopie dieses Unterverzeichnisses muß dann so
erstellt werden, daß die Bilder in dem kopierten
Unterverzeichnis von der fertigen Dokumentation über den
gleichen relativen Pfad erreichbar sind, wie die
Originalbilder von FrontPage aus. Ansonsten müßten die
Filterprogramme zusätzlich alle Pfadangaben für Bilder
abändern, was einen großen Aufwand verursacht.

Abbildung 26:
Implementierte Dateienanordnung
Schematext generiert aber gegenüber der gewünschten
Verzeichnisstruktur eine Verzeichnisebene weniger. Es wird
jeweils ein Verzeichnis für alle Knotentypen
erstellt. In diesem Verzeichnis werden die HTML-Dateien der Knoten
und der Unterknoten dieses Typs erzeugt. Aus diesem
Grund wurde die Verzeichnisstruktur des FrontPage-Verzeichnis
abgeändert. Es wird nur noch eine Verzeichnisebene erzeugt.
Damit die einzelnen Unterknoten besser zu
unterscheiden sind, wird für jeden Unterknotentyp ein
Verzeichnis erstellt. Der Name dieses Verzeichnis besteht
dann aus einer Aneinanderreihung des Knotentypnamens
und des Unterknotentypnames. Diese Verzeichnisstruktur
(siehe Abbildung 26) hat nur den Nachteil, daß das
Verzeichnis FrontPage sehr viele Unterverzeichnisse besitzt,
so daß das Auffinden der gewünschten Datei etwas erschwert
wird.
Bei der Namengebung für die Verzeichnisse und für die
Dateien muß etwas vom Knotennamen abgewichen werden.
Da Schematext es ermöglicht gleiche Namen für
unterschiedliche Knoten bzw. Knotentypen zu
verwenden, dies aber auf Dateiebene nicht möglich ist, muß
der Dateiname mit einer eindeutigen Kennung versehen werden.
Dazu wird die Identifikationsnummer des Knotens bzw. Knotentyps
verwendet. Diese Identifikationsnummer wird einfach an den
Namen angehangen. Weil es noch weitere Beschränkungen bei
der Verwendung von Dateinamen gibt, werden einige Zeichen,
wie die Umlaute und Sonderzeichen, aus dem Dateinamen
entfernt. Außerdem wird die Länge der Dateinamen begrenzt.
Damit diese Verzeichnisstruktur mit den HTML-Dateien
erstellt werden kann, ist es nötig,
- den Knotentypnamen,
- den Unterknotentypnamen,
- die Unterknotentypidentifikationsnummer,
- die Knotennamen,
- die Knotenidentifikationsnummer und
- den Knoteninhalt
zu kennen.
Diese Informationen sind in der SDL-Datei enthalten. Die
SDL-Datei ist eine reine Textdatei, die allerdings
strukturiert ist. Jedes Objekt aus dem Schema hat einen
eigenen Abschnitt in der SDL-Datei. Dieser Abschnitt beginnt
mit einem "<" und einem Bezeichner für den Typ
des Objektes. Danach folgen einige Informationen über das
Objekt, wie zum Beispiel der Name, die Position auf dem
Bildschirm usw. Diese Informationen werden mit einem
Bezeichner eingeleitet und nach einem Gleichheitszeichen
steht dann der Text. Dieser Text steht zum Teil in
Anführungszeichen.
Nach diesen Informationen folgt ein
">"-Zeichen. Nun folgen die enthaltenen Objekte,
z.B. die Unterknotentypen eines Knotentyps, die jeweils
wieder einen eigenen Abschnitt besitzen. Erst danach endet
der Abschnitt des gesamten Objektes mit der Zeichenfolge
"</" Bezeichner des Typs und ">".
So sieht die Beschreibung eines Knotentypes, wie
folgt, aus (Die benötigten Informationen sind
unterstrichen.):
<Class ID=:SC-4 Name="Notation"
PosX=1516 PosY= 424>
<Compo ID=:CO-24 Name="Notation">
<Compo ID=:CO-25 Name="Kopf" Included-in-super=NIL
Expanders=(
"(define (generate node) (html-header node) (title node) (html-footer node))" )></Compo>
<Compo ID=:CO-26 Name="Inhalt" Included-in-super=NI>
</Compo>
<Compo ID=:CO-27 Name="Nagivation" Included-in-super=NIL
Expanders=(
"(define (generate node) (html-header node) (body node) (html-footer node))" )></Compo>
</Compo>
</Class>
Zur Erzeugung der HTML-Dateien aus der SDL-Datei mußte
ein Parser geschrieben werden, der die SDL-Datei nach den
Bezeichnern durchsucht und dann die nötigen Informationen
ausliest. Mit diesen Informationen müssen dann die
Verzeichnisse und die Dateien angelegt werden. Diese Dateien
müssen einen Kopf (HTML-Tag "head") und einen
Rumpf (HTML-Tag "body") besitzen, damit FrontPage
diese Dateien lesen kann. In diese Dateien muß zusätzlich
der Textinhalt des Knotens geschrieben werden.
Der Filter für die Übertragung der Texte von den
HTML-Dateien zu der SDL-Datei muß wesentlich mehr Aufgaben
erfüllen. Er muß zunächst wieder einige Daten aus der
SDL-Datei lesen. Diese Daten werden benötigt, damit der
Filter die HTML-Dateien finden kann. Dabei muß der Inhalt
der SDL-Datei in eine neue SDL-Datei geschrieben werden, aus
der Schematext die Informationen für die Erstellung der
Dokumentation liest. Kommt der Filter beim Parsen der
SDL-Datei an die Textinhalte der Knoten, so muß dieser Text
überlesen werden. Gleichzeitig muß die HTML-Datei des
Knotens gelesen werden und der Inhalt der Datei den alten
Text in der SDL-Datei ersetzen.
Dabei müssen jedoch noch einige Änderungen vorgenommen
werden. So muß der Kopf und die Rumpfmarkierungen (HTML-Tag
"body") entfernt werden. Innerhalb des Rumpfes sind
auch Teile zu ändern. Wenn ein Link die neu eingeführten
Protokolle ("ci: "und "gi:") besitzt,
erfolgt ein Umwandlung des Links in einen spezielle
Schematextlink, d.h., der Filter wandelt den Tag
"<a>" in einen Tag
"<HDSLLink>" um. Dabei muß die mit
"href" angegebene Ziel-URL in das Schematextformat
umgewandelt werden.
| FrontPage HTML-Datei |
Schematext SDL-Datei |
<a href="ci:li-10"
>xxxxx</a>
|
<HsdlLink COPY ID=:LI-10
>xxxxx</HsdlLink>
|
<a href="gi:li-11"
>yyyyy</a>
|
<HsdlLink GRAB ID=:LI-11
>yyyyy</HsdlLink>
|
Für den Tag "<area>"ist diese Umwandlung
ebenfalls erforderlich. Da bei diesem Tag FrontPage einen
Kommentar einfügt, ist dieser Kommentar ebenfalls zu
löschen. Denn dieser Kommentar kann zu Problemen führen,
wenn die fertige Dokumentation in einem Internet-Angebot
intregiert werden soll. Wird dieses Angebot mit dem FrontPage
Explorer bearbeitet nutzt dieser die Informationen über die
Links aus dem Kommentar, anstatt die umgewandelten Links
direkt zu lesen.
| FrontPage HTML-Datei |
Schematext SDL-Datei |
<!--webbot
bot="ImageMap" startspan
rectangle="
(46,17) (166, 49) gi:li-12"
src="file:///E:/OSEFA/Frontpage/images/Anwendung.JPG"
border="0"
width="236" height="163" -->
<MAP NAME="FrontPageMap0">
<AREA SHAPE="RECT"
COORDS="46, 17, 166, 49"
HREF="gi:li-12">
</MAP>
<img
src="../images/Anwendung.JPG"
border="0" width="236"
height="163"
usemap="#FrontPageMap0">
<!--webbot
bot="ImageMap"i-checksum="55687"
endspan -->
|
<MAP NAME="FrontPageMap0">
<HDSLAREA SHAPE="RECT"
COORDS="46, 17, 166, 49" id=:li-12>
</MAP>
<img
src="../images/Anwendung.JPG"
border="0" width="236"
height="163"
usemap="#FrontPageMap0">
|
Die von dem Exportfilter erzeugten HTML-Dateien sollten
immer erhalten bleiben. Denn die Rückumwandlung der Links
von dem Schematextformat mit "HDSLlink" in eine
für FrontPage lesbaren Link mit "a" bedeutet einen
weiteren Aufwand. Deshalb wurde diese Konvertierung im ersten
Filter weggelassen. Dafür überschreibt dieser Filter aber
bestehende Dateien nicht, somit bleiben die Links auch nach
einem Benutzen des Exportfilters intakt. Nach dem Löschen
der HTML-Dateien lassen sich diese zwar mit dem Exportfilter
neu erzeugen, jedoch kann FrontPage die Links nicht mehr
richtig darstellen.
Es sollen einige Links automatisch erzeugt werden. Dies
sind zum Beispiel die Links zu den Begriffserklärungen im
Glossar. Zur Automatisierung habe ich das Programm SED (siehe
Abschnitt 3.1.3) verwendet. Damit SED jede HTML-Datei
bearbeitet, habe ich ein kleines Programm geschrieben, das
die Unterverzeichnisse von dem Verzeichnis FrontPage nach
HTML-Dateien durchsucht und dann SED mit jeder dieser Dateien
als Parameter aufruft.
SED ersetzt nun alle Begriffe durch den Begriff und die
entsprechenden Ergänzungen für die Links. Damit SED diese
Änderungen vornehmen kann, sind alle Begriffe und die
notwendigen Ergänzungen in einer Steuerdatei für SED
aufgeführt. Die Links werden nicht direkt eingefügt, statt
dessen werden Funktionsaufrufe zu neu geschriebenen
Schematextfunktionen eingefügt. Mit dieser Lösung ist es
möglich, die Target-Frames anzugeben. Diese Funktionen
benötigen den Zielknoten und den Text des Links als
Parameter. Aus diesen Informationen generiert dann Schematext
beim Kompilieren die Links. Mit
s!\<Maschine\>!<eval>(glossar-link ':no-383 "&") </eval>!
wird zum Beispiel für den Begriff Maschine ein Link zu
dem Knoten Nummer "':no-383" mit dem Zielframe
Glossar erzeugt (Dies ist die Seite im Glossar, die den
Begriff Maschine erklärt.). Für den Plural von den
gesuchten Begriffen muß eine eigene Zeile in die Steuerdatei
aufgenommen werden, z.B. für Maschinen:
s!\<Maschinen\>!<eval>(glossar-link ':no-383 "&") </eval>!
Die so erzeugten Ergänzungen können jedoch nicht direkt
in die HTML-Dateien geschrieben werden, denn nach Änderungen
muß das Programm SED in den Dateien neue Querverweise
einfügen. Bei diesem Bearbeiten findet SED den Begriff
erneut und fügt wiederum neue Ergänzungen für den Link
ein. Diese überlappen sich mit den alten Ergänzungen und
Schematext kann den Text nicht mehr übersetzen. Deshalb
werden Kopien erzeugt. Aus diesen Kopien erzeugt der
Importfilter eine neue SDL-Datei, aus der dann Schematext die
Dokumentation erzeugen kann. Die Kopien der HTML-Dateien
werden anschließend gelöscht.
Bei der Implementierung dieser Funktion wurde etwas von
der Konzeption abgewichen. In der Konzeption wurde
vorgesehen, Links zu Klassen nicht an allen Stellen
einzufügen, sondern nur an Stellen, wo dies sinnvoll ist.
Dies hätte einen erheblichen Aufwand bei der Erstellung der
Steuerdateien bedeutet, da für jede HTML-Datei einzeln eine
Steuerdatei erstellt werden muß. In der Implementierung
wurde deshalb nur eine Steuerdatei für alle HTML-Dateien
vorgesehen. Somit ist es nicht möglich bestimmte Links nur
in einem bestimmten Kontext zu erzeugen. In dem Beispiel
gehen aus diesem Grund von einem Begriff keine zwei Links aus
(vgl. Abschnitt 3.2.3), da der zweite Link sich immer auf nur
einen bestimmten Kontext bezog.
Die Klassendiagramme müssen um die erweiterte Notation
ergänzt werden. Dies geschieht mit Corel Draw. Danach muß
Corel Draw die Grafik in das JPEG-Format konvertieren, damit
die HTML-Browser die Diagramme anzeigen können.
Die mit Rational Rose erstellten Diagramme werden dazu
nach Corel Draw übertragen. Diese Übertragung wird durch
die Kopierfunktion in Rational Rose und die Einfügefunktion
in Corel Draw vorgenommen. Mit dieser Methode treten in den
Diagrammen die geringsten Verluste auf. Hier müssen nur die
Pfeile der Benutztbeziehungen und Teile der
Vererbungsbeziehungen wiederhergestellt werden. Bei anderen
Methoden war die Schrift nicht zu lesen oder es fehlten noch
mehr Teile der Grafik.
Nach der Beseitigung der Verluste werden die notwendigen
Ergänzungen vorgenommen. Dazu sind die folgenden Schritte
notwendig:
- Ein Rechteck in Corel Draw erzeugen.
- Das Rechteck in Kurven umwandeln.
- Das Rechteck an die Plazierung der Klassen des
Entwurfsmusters anpassen.
- Die Funktion Linse für die Fläche einstellen
(Einstellungen: Transparentfolie, Rate 90%, Farbe
blau).
Bei den Teildiagrammen ist ebenso ein Rechteck zu
zeichnen. Durch Umwandlung des Rechtecks in Kurven kann der
Rahmen um die Klassen angepaßt werden. Der Rahmen dieses
Kurvenzugs ist grau und 0,76 mm breit.
Zusätzliche Rechtecke dienen der Beschriftung. Diese
Rechtecke nehmen dann den Beschriftungstext auf. Der Text ist
bei Entwurfsmustern und Teildiagrammen schwarz und bei Hot
Spots rot.
Die Corel Draw Funktion "Exportieren" speichert
die Diagramme im JPEG-Format im Verzeichnis
"Frontpage\images". Das Diagramm hat 16 Millionen
Farben, das Größenverhältnis 1:1 und 75 dpi Auflösung.
Durch diese Parameter hat das Bild eine gute Qualität und
verbraucht dennoch wenig Speicherplatz.
Dieses Bild kann dann in FrontPage über die Funktion
"Bild einfügen" in die entsprechende Seite
aufgenommen werden. Hier können auch Teile des Diagramms,
z.B. die Klassen, als Links markiert werden. Der Linkname
entspricht dem Format, das in Abschnitt 3.3.2 angegeben ist.
Hier soll am Beispiel eines Entwurfsmusters gezeigt
werden, welche Schritte notwendig sind, um neue Texte in die
Dokumentation aufzunehmen. Das Entwurfsmuster
"Strategy" aus dem Framework OSEFA dient als
Beispiel. Dieses Entwurfsmuster hat in dem Framework die
Funktion "Business Process". Für andere Teile der
Dokumentation ist die Vorgehensweise weitgehend identisch.
1. Einfügen eines Knoten für die Versionierung.
Wenn dies die erste Version des Entwurfsmusters ist, ist
in dem Schematext Struktur Editor zuerst ein Knoten
für die Versionierung zu erzeugen. Dazu wird ein Knoten
vom Typ "Version Muster" mit dem Namen
"Business Process (Strategy)" angelegt.
2. Einfügen des Knoten.
Nun wird der eigentliche Knoten mit dem Knotentyp
"Pattern" für die Daten eingefügt. Der Namen des Knoten
ist um den Versionstext zu erweitern, so daß der Knotenname
"Strategy - Business Process (Searching &
Choosing)" ist. Der Quellknoten ist der
Versionierungsknoten "Business Process (Strategy)".
3. Herstellen der von Schematext benötigten Links.
Damit Schematext die Navigationsleiste und Teile des
Inhaltsverzeichnisses automatisch erzeugen kann, werden
zwischen den Unterknoten des Knotens "Strategy -
Business Process (Fitting)" Links erzeugt.
| Quellknoten |
Zielknoten |
| Navigation_2a |
Hauptknoten |
| Verzeichnis_2a |
Intent |
| Verzeichnis_2a |
Motivation |
| Verzeichnis_2a |
Applicability |
| Verzeichnis_2a |
Structure |
| Verzeichnis_2a |
Participants |
| Verzeichnis_2a |
Consequences |
| Verzeichnis_2a |
Implementation |
| Verzeichnis_2a |
Related Pattern |
4. Einfügen der Klassen,
Zur kompletten Bearbeitung des Entwurfsmuster müssen die
Klassen des Musters eingegeben werden. Deshalb werden nun
für alle Klassen des Entwurfsmuster Knoten erzeugt. Als
Beispiel für die Klassen dient die Klasse
"Strategy". Wo in diesem Beispiel diese Klasse
verwendet wird, müssen die gleichen Schritte auch mit den
anderen Klassen des Entwurfsmusters durchgeführt werden. Das
Einfügen einer Klasse entspricht dem Einfügen eines
Musters.
5. Einfügen der Links zu bzw. von dem
Entwurfsmuster.
Das Entwurfsmuster ist im Klassendiagramm "Processing
Control" enthalten und implementiert gleichzeitig den
Hot Spot "Business Process". Da die Links
von dem Verzeichnis- und von dem Inhaltsframe des Diagramms
ausgehen sollen, sind die drei folgenden Links
hinzuzufügen:
| Quellknoten |
Zielknoten |
| Processing Control - Verzeichnis_2 |
Hauptknoten |
| Processing Control - Inhalt_2 |
Hauptknoten |
| Business Process - Hauptknoten |
Hauptknoten |
Zusätzlich werden Links zur Klasse
"Strategy" erzeugt. Einen Link für die
Verkettung aller Klassen des Entwurfsmusters und zwei weitere
Links aus dem Verzeichnis und dem Text.
| Quellknoten |
Zielknoten |
| Hauptknoten |
Strategy |
| Verzeichnis_2a |
Strategy |
| Structure |
Strategy |

Abbildung 27:
Das Entwurfsmuster Strategy
Aus den Schritten eins bis fünf folgt, die in Abbildung
27 dargestellte Struktur.
6. Nach FrontPage exportieren.
Dazu wird die Batchdatei "OSEFA htm.bat"
gestartet.
7. Bearbeiten der einzelnen Abschnitte.
Nun sind die Texte einzugeben. Dazu werden die
HTML-Dateien mit FrontPage bearbeitet.
| Verzeichnis |
Datei |
| Pattern_-_Intent_70_ |
Strategy_-_Business_Process_(_Fitti_100.htm
|
| Pattern_-_Motivation_68_ |
Strategy_-_Business_Process_(_Fitti_96_.htm
|
| Pattern_-_Applicability_87_ |
Strategy_-_Business_Process_(_Fitti_234.htm
|
| Pattern_-_Structure_58_ |
Strategy_-_Business_Process_(_Fitti_120.htm
|
8. Automatische Generierung der Links zu den
Klassen vorbereiten.
Damit Links zur Klasse "Strategy" in den
Texten des Entwurfsmusters aufgenommen werden, ist die
Steuerdatei für SED zu erweitern. Die Datei heißt
"wandeln.txt" und befindet sich im Verzeichnis
"Programm". Damit diese Links erzeugt werden
können, wird in dieser Datei die Zeile
s!\<Strategy\>!<eval>(klasse-link ':no-430 "&") </eval>!
hinzugefügt. Der Eintrag zwischen den ersten und zweiten
Ausrufungszeichen gibt an, daß SED nach dem Wort
("\<" und "\>")
"Strategy" suchen soll. Der folgende Teil fügt die
Funktion "klasse-link" ein, die einen Link
zu der Klasse Strategy (Identifikationsnummer ':no-430) mit
dem Zielframe "Inhalt_2a" erzeugt.
9. Importieren der Daten in Schematext.
Dazu wird die Batchdatei "OSEFA komplett.bat"
gestartet.
10. Übersetzen des Schemas.
Dazu wird die Funktion "Übersetzen Voll"
aufgerufen.