Tipps für den IBM Rational Software Architect

  • Wie kann ich Diagramme als skalierbare PDF-Dateien exportieren?

  • Wie kann man Methodensignaturen anzeigen?

  • Wie kann man UML-konforme Darstellung erreichen?

  • Ich kann im Ausdruck die Linien nur schlecht erkennen :-(

  • Kann man die Leserichtung von Assoziationen darstellen?

  • Mein RSA verweigert die Erstellung einer oder mehrerer UML-Diagrammarten!

  • Einige UML-Elemente sind nicht im Malkasten vorhanden!
  • Wie kann man verhindern, dass in einem Objekdiagramm der Typ eines Slots angezeigt wird?
  • Wie kann ich bei Sequenzdiagrammen Werte für die Nachrichtenargumente angeben?
  • Der RSA stellt Trigger, Guards und Effekte an Transitionen in Statemachines seltsam dar!

  • Wie modelliere ich bei Statemachines Trigger, Guards und Effekte an Transitionen in Statemachines?

  • Wie kann ich eine bestehende Assoziation im Klassendiagramm als Attribut anzeigen (und umgekehrt)?

  • Wie kann ich im Objektdiagramm die Bezeichner der Links anzeigen lassen (statt nur die Rollen anzuzeigen)?

Wie kann ich Diagramme als skalierbare PDF-Dateien exportieren?

Problem: Der "Export"-Dialog kann nur Modell exportieren, keine Grafiken.

Ursache: Unbekannt.

Lösung: Rechtsklick auf den Diagrammhintergrund, dann das Menü File -> Save As Image File... wählen und dort unter Image Format "PDF" selektieren.

Wie kann man Methodensignaturen anzeigen?

Problem: Der RSA versteckt standardmäßig die Methodensignaturen, d.h. Parameter und Rückgabetyp.

Ursache: Die Standard-Einstellungen des RSA ist platzsparend angelegt und zeigt keine Signaturen.

Lösung: Die Darstellung kann global aktiviert werden: Unter Window -> Preferences -> Modeling -> Appearance -> Shapes die Checkbox "Show Signatures" aktivieren. Dies wirkt sich nur auf neu gezeichnete Elemente aus. Durch die Einstellungsänderung werden im Folgenden auch die Typen der Objektslots in Objektdiagrammen standardmäßig angezeigt.

Bestehende Shapes können einzeln geändert werden: Rechtsklick auf dem Symbol, Filters -> show Signature.  Ebenso können bestehende Shapes gemeinsam geändert werden: Auswahl aller Shapes durch den Toolbar-Button "Select All Shapes" oder Auswahl der relevanten Shapes durch Links-Klicks bei gedrückter Caps-Taste, dann Linksklick auf einem ausgewählten Shape, Filters -> show Signature.

Wie kann man UML-konforme Darstellung erreichen?

Problem: Standardmäßig visualisiert der RSA Sichtbarkeiten durch bunte Decorations anstatt mit den in UML üblichen Symbolen.

Ursache: Die Standard-Einstellungen des RSA favorisieren "bunte Icons".

Lösung: Die Kirmes kann global ausgeschaltet werden unter Window -> Preferences -> Modeling -> Appearance -> Shapes. "Stereotype Style" und "Visibility Style" sind hier auf "Text" zu setzten. Ebenso empfiehlt es sich unter Window -> Preferences -> Modeling -> Appearance die Checkbox "Show gradient" zu deaktivieren und die "Line color" auf schwarz zu setzen.

Einzelne Shapes können (nach markieren) angepasst werden durch Rechtsklick auf ein Shape und unter Filters -> Stereotype and Visibility Style bei "Stereotype style", "Compartment Stereotype style" und "Visibility Style" jeweils die "Text" Option wählen. Die Einstellung der Linienfarbe erfolgt durch Rechtsklick, Format -> Diagram -> Line Color.

Ich kann im Ausdruck die Linien nur schlecht erkennen :-(

Problem: Die Standard-Einstellung für die Linienfarbe ist ein helles Grau. Außerdem wird ein Farbverlauf als Hintergrund für Shapes verwendet, den viele Drucker nicht gut darstellen können.

Ursache: Praxisferne RSA-Standardeinstellungen.

Lösung: Unter Window -> Preferences -> Modeling -> Appearance eine dunklere Farbe für die "Line color" auswählen und die Checkbox "Show gradient" deaktivieren.

Kann man die Leserichtung von Assoziationen darstellen?

Problem: Die Leserichtung (das ausgefüllte schwarzes Dreieck neben dem Assoziationsnamen) kann in RSA nicht dargestellt werden.

Ursache: Die RSA-Entwickler kennen den UML-Standard nicht ;-)

Lösung: Verwendung von eindeutigen Bezeichnern für die Assoziationen, aus denen auch ohne Pfeil zweifelsfrei die Leserichtung erkannt werden kann. Auch wenn die Richtung nicht im Diagramm dargestellt ist, wird sie dennoch modelliert: In den "Properties" einer Assoziation steht die "Source"-Klasse links, die "Target"-Klasse rechts.

Mein RSA verweigert die Erstellung einer oder mehrerer UML-Diagrammarten!

Problem: Beim Rechtsklick auf ein Package oder ein Model im Project-Explorer fehlen im "Add Diagram"-Menü viele Diagrammarten.

Ursache: Beim Anlegen eines Modellierungsprojekts wurden zu wenige (oder die falschen) "Model Capabilities" ausgewählt.

Lösung: Wenn man bei neuen Projekten "Blank Package" wählt, tritt das Problem erst gar nicht auf. Bei bestehenden Projekten können die Model Capabilities im Properties-Fenster des Top-Level-Packages auf dem Tab "Capabilities" nachträglich hinzugefügt werden.

Einige UML-Elemente sind nicht im Malkasten vorhanden!

Problem: Manche UML-Elemente, z.B. Assoziationsklassen und Enumerations, fehlen in der "Palette".

Ursache: Beim Anlegen des Projekts wurde die Vorlage "Simplified Blank UML Model" gewählt.

Lösung: Beim Anlegen eines neuen Model Project muss die Vorlage "Blank Package" gewählt werden.

Wie kann man verhindern, dass in einem Objekdiagramm der Typ eines Slots angezeigt wird?

Problem: In einem Objektdiagramm zeigt der RSA mit den empfohlenen Einstellungen für ein Objektslot neben dem Attributnamen und dem zugewiesenen Wert auch den Typ an.

Ursache: Nachdem man wie empfohlen die Anzeige von Signaturen standardmäßig aktiviert hat, werden neben den Methodensignaturen in Klassendiagrammen auch die Typen der Objektslots in Objektdiagrammen standardmäßig angezeigt.

Lösung: Es empfiehlt sich, zunächst ein Klassendiagramm mit aktivierter Signaturenanzeige vollständig zu modellieren. Bevor man anschließend ein Objektdiagramm erstellt, kann man zuvor unter Window -> Preferences -> Modeling -> Appearance -> Shapes die Checkbox "Show Signatures" deaktivieren.
Bestehende Shapes können auch einzeln geändert werden: Rechtsklick auf dem Symbol, Filters -> show Signature und den Reiter entfernen.  Ebenso können bestehende Shapes gemeinsam geändert werden: Auswahl aller Shapes durch den Toolbar-Button "Select All Shapes" oder Auswahl der relevanten Shapes durch Links-Klicks bei gedrückter Caps-Taste, dann Linksklick auf einem ausgewählten Shape, Filters -> show Signature und Reiter entfernen.

Wie kann ich bei Sequenzdiagrammen Werte für die Nachrichtenargumente angeben?

Problem: RSA zeigt bei Nachrichten nur die Methodensignaturen aus dem Klassendiagramm an, aber keine Werte.

Ursache: Komische RSA-Default-Einstellungen.

Lösung: Du musst bei Window -> Preferences -> Modeling -> UML
Diagrams -> Sequence and Communication
die folgenden Häkchen (nicht)
setzen:

  [ ] Show operation signatures instead of message signatures
  [X] Always show signatures

Werte für die Parameter und den Returnwert kann man bei ausgewählter Nachricht im Properties-View im Arguments-Tab machen.

Der RSA stellt Trigger, Guards und Effekte an Transitionen in Statemachines seltsam dar.

Problem: Der RSA hält sich nicht an die bekannte Notation <Trigger> [<Guard>] / <Effekt> .

Ursache: Komische Idee der RSA-Entwickler ;) .

Lösung: Keine. Der RSA verwendet folgende Notation, wobei "#" und "@" für Icons stehen, die einen Trigger, bzw. einen Effekt anzeigen.

[<Guard>]

--------------

# <Trigger>

@ <Effekt>

Man könnte zwar alles einfach in den Namen der Transition schreiben, ist aber, falls man mehr als "Spieldiagramme" erstellen möchte, nicht ratsam. Wenn man z.B. als Effekt den Aufruf einer Operation einer Klasse modellieren möchte, lässt sich die Verbindung zu dieser Operation nur herstellen, wenn der Effekt so wie vom RSA vorgesehen modelliert wird (siehe nächster Tipp).

Wie modelliere ich bei Statemachines Trigger, Guards und Effekte an Transitionen in Statemachines?

Problem: Das ordnungsgemäße Erstellen von Triggern, Guards und/oder Effekten an Transitionen ist sehr mühselig.

Ursache: Die Bedienung des RSA ist hier äusserst umständlich und fehleranfällig.

Lösung: 

Trigger

Im Kontextmenü der Transition wird mit "Add UML->Trigger" ein Trigger hinzugefügt. Im darauf folgenden Untermenü kann der Typ des zugehörigen Events festgelegt werden. Für "von außen" kommende Signale sollte man "Signal Event" verwenden.

Möchte man dagegen eine Verknüpfung zu einem Effekt herstellen, d.h. soll der Trigger ausgelöst werden, sobald ein Effekt z.B. an einer anderen Transition hervorgerufen wird, ist "Call Event" zu wählen. Jetzt kann man entweder ein bereits existierendes Event wiederverwenden oder ein neues erzeugen. Bei einem neu erzeugten Event fragt der RSA nach einer Operation. Hier kann dann über "Select Existing Element" z.B. die Operation gewählt werden, die von einem Effekt ausgeführt wird (siehe unten).

Guard

Im Properties->General-Dialog der Transition kann man mit "Add" Guards hinzufügen und in dem Textfeld daneben beschreiben.

Effekt

Im Kontextmenü der Transition wird mit "Add UML->Effect" ein Effekt hinzugefügt. Daraufhin lässt sich auswählen, ob ein neuer Effekt erstellt oder ein bereits existierender wiederverwendet werden soll. Wir gehen im Folgenden davon aus, dass ein neuer erstellt wird.

Falls man möchte, dass bei Auslösung der Transition eine in einer Klasse deklarierte Operation ausgeführt wird, sollte man hier "Opaque Behavior" auswählen.

Diese Operation kann nun über "Set" im Properties->General-Dialog des neuen Effekts festgelegt werden. Damit im Diagramm zusammengehörende Effekte und Trigger den gleichen Namen haben, ist es ratsam, den Methodennamen auch als Name des Effekts zu wählen, da bei Verwendung einer Methode als Trigger deren Name und nicht der Name des Effekts angezeigt wird.

Bei der Wiederverwendung von Effekten bleiben deren Eigenschaften, also deren Namen und ggf. verknüpfte Operationen natürlich erhalten.

Wie kann ich eine bestehende Assoziation im Klassendiagramm als Attribut anzeigen lassen (und umgekehrt)?

Problem: Man hat eine Beziehung zu einer Klasse als Assoziation im Klassendiagramm modelliert und möchte diese der einfachkeit halber als Attribut darstellen (z.B. um Nähe zur Implementierung zu zeigen, oder um Platz im Diagramm zu sparen).

Ursache: Beziehungen zwischen Klassen sind als Assoziations (mit Multiplizitäten und Rollenbezeichnern), oder als Attribute modellierbar.

Lösung: Mit einem Rechtsklick auf eine Assoziation erreicht man "Filters -> Show as Attributes" die gewünschte Darstellung. Andersherum funktioniert die Darstellung eines Attributs als Assoziation (vorausgesetzt, die Klasse ist sichtbar) mit einem Rechtsklick auf ein Attribut "Filters -> Show as Association".

Wir empfehlen, Beziehungen zu Klassen als Assoziation zu modellieren, und Beziehungen zu DataTypes mit Attributen.

Wie kann ich im Objektdiagramm die Bezeichner der Links anzeigen lassen (statt nur die Rollen anzuzeigen)?

Problem: In Objektdiagrammen werden bei Links immer die Rollenbezeichner angegeben, nicht aber das Label.

Ursache: Die Standardeinstellung im RSA versteckt (filtert) diese Details.

Lösung: Wenn man rechts auf einen Link klickt -> "Filters -> Show/Hide Connector Labels -> All Connector Labels". Die Bezeichner des Links sind dann leider immer noch nicht unterstrichen... Für die Abgabe ist das aber in Ordnung (am besten einen Hinweis ins Diagramm als Kommentar dazu legen).