Session D-ROSE
OO-Design-Tools am Beispiel von Rational Rose
Alf Borrmann
Wizards Builders GmbH
Rose = UML?
Objektmodellierung beginnt nicht damit,
daß man Quellcode eingibt. Diese Weisheit hat sich inzwischen herumgesprochen.
Daß es in der Objektmodellierung leistungsfähige Ansätze zu Vorgehensweise und
graphischer Darstellung gibt, ist inzwischen ebenso bekannt. Hier hat die
Diskussion um die UML als Standardsprache zur Darstellung von Objekt- und
Klassenmodellen schon gewirkt.
Wie aber erhält man ein graphisch
repräsentiertes Modell, ohne auf CAD- oder Graphikprogramme oder gar auf Stift
und Papier zurückgreifen zu müssen?
Ein Tool hierzu ist das Programm Rose
der Firma Rational. Wenn Ihnen der Name bekannt vorkommt, weil die Autoren der
UML, Grady Booch, James Rumbaugh und Ivar Jacobson in deren Sold stehen, ist das
ganz richtig: genau diese Firma ist auch Hersteller des Designwerkzeuges Rose.
In der Version 98 liegt nunmehr die erste Version dieses Tools vor, die nach der
Standardisierung der UML erscheint und es gilt die Frage zu klären: hat Rational
durch die Arbeit der eigenen Leute an der UML einen Vorsprung bei der
Toolentwicklung? Immerhin wurde diese Vorstellung mehr oder weniger offen von
anderen Herstellern für OO-Werkzeuge geäußert. In diesem Artikel soll geklärt
werden, was die Version 98 an Neuerungen bietet und ob Rose ein in der Praxis
brauchbares Programm ist, das den Entwicklern von OO-Systemen eine wirkliche
Unterstützung bietet.
Der nächste Schritt: Komponentendesign
Die Oberfläche von Rose 98 orientiert sich, wie schon die der Vorgängerversion,
an den Funktionalitäten von Windows 95/NT. Wie auch schon die letzte
Vorgängerversion ist Rose 98 zunächst für diese Plattform entwickelt
worden und wird erst jetzt für Unix portiert. Hier – wie auch in anderen
Bereichen – schlägt sich die Partnerschaft mit Microsoft nieder, die
Rational für die Entwicklung seiner Tools eingegangen ist. Diese Partnerschaft
hat sicherlich auch dazu beigetragen, daß Rational mit Rose nach eigener
Aussage Marktführer bei den Tools zur Objektmodellierung ist.
Der Hauptbildschirm von Rational Rose 98
Rose 98 bietet gegenüber der Version
4.0 keinen Quantensprung in der Funktionalität oder der Unterstützung von
UML-Spracheigenschaften. Im Vordergrund standen vielmehr zwei Bereiche, in denen
Rose überarbeitet wurde: Komponentendesign und Ergänzungen am eigenen
Objektmodell. Der Bereich, der in der Bedienung und Funktionalität der
Oberfläche die größten Auswirkungen hat, ist die stärkere Unterstützung bei der
Entwicklung von Komponenten. Daneben wurde an der Komplettierung des
Objektmodells und am Einbau von Features der UML 1.1 in den Funktionsumfang des
Programms gearbeitet.
Die Neuerungen
Das Hauptfeature, das in der Version 98 neu hinzugekommen ist, ist
die Unterstützung von Modellen, aus denen sich Quellcode für verschiedene
Sprachen erzeugen läßt. Ausgangspunkt hierfür ist die „Component View“,
in der sich zu jeder im Modell angelegten Komponente festlegen läßt,
in welcher Sprache der Code erzeugt werden soll. Eine Komponente ist
aus Sicht von Rose dabei eine Datei, die die Implementation von mehreren
Klassen aus dem logischen Modell übernimmt. Mit der Bindung der Implementationssprache
an diese Komponenten können z.B. einzelne Teile einer Anwendung in
C++, andere Teile in Visual Basic oder Java erzeugt werden. Die Codegeneratoren
werden von Rose nun als „Add-In“ behandelt, können alsonebeneinander
in Rose betrieben werden.
Das Tools-Menü unter Rose mit den Einträgen für die verschiedenen Sprachen.
Die Erzeugung von Code kann für
einzelne Komponenten gestartet werden. So können jetzt auch einzelne Teile der
Implementation Schritt für Schritt aufgebaut oder modifiziert werden. Das
zeitaufwendige Generieren des kompletten Codes für ein Modell, wie es noch unter
Rose 4.0 notwendig war, wenn auch nur eine Klasse geändert wurde, entfällt damit.
Auf dem Weg, die Entwicklung von Komponenten besser zu unterstützen werden
nun auch die in der UML vorgesehenen Interfaces unterstützt. Interfaces
sind eine Art Klasse, in der verschiedene Operationen einer Komponente
zu einem Funktionsblock, der von außen angesteuert werden kann, zusammengefaßt
werden. Das Symbol dazu ist der sogenannte „Lollipop“. In Rose wird
diese Darstellung über einen nun fest definierten Stereotyp „Interface“
unterstützt. Wie schon in der Version 4.0 können für jeden Stereotyp
eigene Symbole vergeben werden, allerdings ist dem Entwickler diese
Arbeit für den Stereotyp Interface schon abgenommen. Neben der Darstellung
als Symbol kann man in Rose Stereotype auch mit dem Namen, eingeschlossen
in doppelte spitze Klammern, anzeigen lassen.
Die Interfaces für ein ActiveX-Control
Einen weiteren Schritt in bezug auf die Unterstützung von Komponentenentwicklung
stellt der Typelib-Importer dar. Mit Hilfe dieses Tools können auf
einem Windows-Rechner vorhandene OLE-Server analysiert und in ein
Modell integriert werden. Die Anwendung ist denkbar einfach: die .EXE-,
.DLL- oder .TLB-Datei wird per Drag’n-Drop auf die Komponentensicht
des Browsers in Rose gezogen.
Drag’n-Drop mit der Typelib zu Data Access Objects
Rose startet automatisch den Typelib-Analyzer, der die Komponente mit allen
in der Typelib abgelegten Interfaces in der Komponentensicht erzeugt.
Gleichzeitig werden Klassenabbilder der in der ActiveX-Komponente
enthaltenen Interfaces in der logischen Sicht angelegt. Zu allen Klassen
werden die Attribute und Operationen mit Typdefinition und (bei den
Operationen) Argumenten hinzugefügt.
…und das Ergebnis des Imports
Eine Applikation, die – wie heute
unter Windows üblich - Gebrauch von verschiedenen ActiveX-Controls macht, kann
damit ohne „Löcher“ dokumentiert werden. Mit den über den Typelib-Importer
erzeugten Klassen bzw. Interfaces kann direkt weitermodelliert werden, alle
Abhängigkeiten der eigenen Klassen von den ActiveX-Komponenten lassen sich
lückenlos darstellen.
Leider ist der Analyzer nicht sehr
performant. Das Importieren z.B. der .TLB, die für Rose selbst mitgeliefert wird
(182KB Größe) dauert auf einem PII 233 rund eine halbe Stunde. Ist eine solche
Datei oder ein anderes Modell erst einmal geladen, hält die
Verarbeitungsgeschwindigkeit von Rose aber auch auf schwächeren Systemen
durchaus mit dem normalen Arbeitstempo mit.
Neben der Orientierung hin zur
Komponentenmodellierung gibt es aber noch weitere Neuerungen. Zunächst wäre hier
das interne Objektmodell zu nennen. In ihm sind die von Rose selbst verwalteten
Klassen für die Zugriff auf eine Modelldatei enthalten. Dieses war in der
Version 4.0 zwar schon für die Auswertung des Klassenmodells brauchbar, wichtige
Teile des Modells, wie Objekte der Interaktionsdiagramme oder die Diagramme
selbst, ließen sich jedoch nicht ansprechen. Inzwischen stehen wirklich alle
Modellelemente per Ansteuerung des OLE-Servers im Zugriff, auch die Diagramme
selbst, die sich im .WMF-Format exportieren und z.B. in ein Textdokument
übernehmen lassen. Daneben gibt es auch eine wesentlich verbesserte
Dokumentation des Rose-Klassenmodells, sinnigerweise auch in Form einer Rose-Datei
(www.rational.com/products/rose/downloads.html,
allerdings nur für Rose-Eigner verfügbar).
Außerdem lassen sich mit Rose 98
Dateien oder URLs zu Dokumentationszwecken an weitere Elemente des Modells
anfügen. In Rose 4.0 konnten diese Verweise nur zu Use Cases zugeordnet werden.
Rose fungiert dabei als OLE-Client, d.h., die zugeordneten Dokumente oder URLs
lassen sich über die damit verbundene Anwendung (z.B. Word) per Doppelklick
direkt öffnen. Dieses Feature gibt es nun auch für Packages, Komponenten und
Klassen. Damit lassen sich externe Beschreibungen oder Dokumente direkt aus der
Arbeit in Rose öffnen, um z.B. bei der Verwendung eines ActiveX-Controls die
mitgelieferte Dokumentation zur Verfügung zu haben. Die Angabe einer URL erlaubt
auch den Aufbau eines zentralen Repositories für Dokumentation für ein Projekt,
auf das dann alle Entwickler unabhängig von den Pfaden der Arbeitsstation
Zugriff haben.
Die Packages in Rose 98 haben nun
endlich eigene Namespaces. Das heißt, daß Klassennamen nicht mehr für das
gesamte Modell einmalig sein müssen. Unter Rose 4.0 war es sehr ärgerlich, wenn
mehrere Bearbeiter in ihren Teilprojekten auf die Idee kamen, eine Klasse z.B. „WindowManager“
zu nennen. Rose 4.0 konnte diesen Namenskonflikt nicht auflösen. Unter Rose 98
lassen sich nun die gleichen Klassennamen in verschiedenen Packages verwenden.
Rose zeigt dann einen Warnhinweis an, der sich aber abschalten läßt.
Die weiteren Neuerungen spielen sich
im Bereich Verbesserung des User-Interfaces und Bugfixing ab. Hier sind Dinge
hinzugekommen wie Unterstützung von Farben in den Graphiken, endlich die
korrekte Darstellung von abstrakten Klassen in den Diagrammen oder „ Class Name
Completion“. Class Name Completion heißt, daß beim Anlegen eines neuen
Klassensymbols in einem Diagramm eine Liste aller im System definierten Klassen
angezeigt wird. Aus der wird mit Hilfe einer inkrementellen Suche anhand der
eingegebenen Buchstaben der Name einer bereits definierten Klasse gesucht. Der
gewinnbringende Einsatz dieses auf den ersten Blick sinnvollen Features ist an
zwei Bedingungen geknüpft: erstens sollte das Modell nicht allzuviele Klassen
beinhalten, da die Liste schnell unübersichtlich wird und zweitens sollte sich
das Modell in einer gewissen Reife befinden, damit nicht bei jeder neu
anzulegenden Klasse diese Liste erscheint. Zum Glück läßt sich dieses Feature in
den Optionen unter „Diagrams“ abschalten. Nachdem die meisten Klassen definiert
wurden, kann diese Option wieder eingeschaltet werden und erleichtert dann die
Arbeit in den Diagrammen.
Mit Hilfe der Einstellung „
WordBreakProc=No“ in der Rose.INI läßt sich Rose 98 auch stabil mit Maustreibern
verwenden, die unter Rose 4.0 noch zu Problemen führten.
Ebenfalls neu ist das „Visual
Differencing“. Dieses Tool erlaubt es, zwei Modelldateien miteinander zu
vergleichen. Ergebnis eines solchen Vergleiches ist eine Liste von Unterschieden
in den Modelldateien, die den üblichen Darstellungen von
Versionskontrollsystemen nachempfunden ist. Hier können die Änderungen an einem
Modell z.B. gegenüber einer Vorgängerversion in einer Übersicht dargestellt
werden und ggf. einzeln wieder rückgängig gemacht oder bestätigt werden.
In Sequenzdiagrammen, die dazu
tendieren, über die auf dem Bildschirm sichtbare Höhe hinauszugehen, wurden in
der Version 4.0 die oben dargestellten Objekte unsichtbar, was die Navigation
zwischen den Lebenslinien sehr erschwerte. In der Version 98 werden nun die
Namen der Objekte unverdeckbar am oberen Rand des Fensters dargestellt, so daß
man auch in Diagrammen, die über mehrere Seiten gehen, immer sieht, zwischen
welchen Objekten die Nachrichten laufen.
Ebenfalls neu ist die Verwaltung von
einzelnen „Add-Ins“, die sich analog zu der Handhabung in vielen Microsoft-Produkten
über einen Add-In-Manager installieren bzw. aktivieren lassen. Als solch ein
Add-In wird nun die Anbindung an Visual SourceSafe behandelt. Diese hat ein
komplett eigenes Interface bekommen, das nun die Steuerung des Ein- oder
Auscheckvorgangs übernimmt.
Geblieben sind die vielfältigen
Möglichkeiten der Navigation zwischen den Diagrammen bzw. zwischen den
Modellteilen (Klassen, Objekte, Packages), die eine Arbeit auch über komplexe
Modelle ermöglicht. Leider auch geblieben sind die unbefriedigenden
Möglichkeiten, eine ordentliche Ausgabe der Graphiken zu erhalten. Immer wieder
schafft es Rose, die Darstellung auf dem Bildschirm so zu verunstalten, daß z.B.
Beschriftungen gekappt werden oder aus den Klassensymbolen herausrutschen. Nur
teilweise hilft hier die Möglichkeit, ein „Autosize All“ aus dem Tools-Menü
aufzurufen. Von dieser Schwäche in der graphischen Repräsentation ist auch die
Ausgabe auf Papier betroffen, die meist keine befriedigenden Ergebnisse bringt.
Nach wie vor ist – obwohl die Oberfläche
MDI-Fähigkeit vorgaukelt - nur ein Modell gleichzeitig bearbeitbar.
Ebenfalls unverändert ist die
Einbindung von Rosescript. Dies ist ein Basic-Modul, über das sich in einer VBA-ähnlichen
Syntax das OLE-Modell von Rose programmieren läßt. Rosescript wird mit einer
kleinen IDE, die einen Debugger und einen Dialogeditor enthält, geliefert.
Interessanterweise bezieht Rational dieses Modul von Summit Software und nimmt
nicht etwa VBA von Microsoft.
Die Zusammenarbeit mit Microsoft
schlägt sich dagegen z.B. in der Benennung der verschiedenen Versionen nieder.
Die Komplettversion von Rose 98 heißt nun „Enterprise-Version“. Sie enthält
neben dem eigentlichen Modellierungstool alle Codegeneratoren (für C++, Java,
Visual Basic, IDL, DDL, Oracle8). Die sprachspezifische „Professional Version“
enthält die Unterstützung für nur jeweils eine Sprache. Zur „Visual Modeling
Edition“ werden keine Codegeneratoren mitgeliefert, diese ist nur für die
Bearbeitung von Modellen und ggf. die Anwendung eines eigenen Codegenerators
gedacht.
Eine Evaluationskopie läßt sich von
www.rational.com/demos/rose98eval/
downloaden (ca. 20MB). Auch die Regionalbüros von Rational versenden
auf Anfrage CDs, die neben einer voll funktionstüchtigen Rose-Version eine Reihe
von Beispielen und die komplette UML-Dokumentation enthalten.
Rational unterhält auf dem Internet
eine vom Rose-Support betreute Mailliste (Rose_Forum), über die Diskussionen zu
Problemen geführt und Lösungen ausgetauscht werden.
Fazit
Rational Rose ist in der vorliegenden
Version sicherlich noch nicht das Tool, das alle Wünsche erfüllt. Neben einigen
merkwürdigen Verhaltensweisen der Oberfläche und der Graphikdarstellung kann
auch die fehlende Unterstützung für Aktivitätsdiagramme auf der Negativliste
verbucht werden. So gesehen muß man nicht unbedingt von der Version 4.0 updaten,
zumal das Dateiformat weitgehend kompatibel ist, man also auch mit Rose 98
erstellte Modelle unter Rose 4.0 bearbeiten kann. Blickt man jedoch auf das
inzwischen recht runde Objektmodell, das Rose zugrunde liegt, wird deutlich, daß
in dem Produkt noch sehr viel Potential steckt, das die Entwickler bei Rational
sicherlich in den folgenden Versionen ausschöpfen werden. Dieses Objektmodell
macht es auch heute schon möglich, ausgefeilte Auswertungstools, Codegeneratoren
oder Scripte zum Checken des Modells zu entwickeln. Die guten
Navigationsmöglichkeiten und das Bereitstellen eines zentralen Modells, um alle
Informationen zu einem OO-System darzustellen und zu verwalten, schlägt die
Alternative, das System „zu Fuß“ zu verwalten dann doch um Längen.
|