Umsetzung UML in Java


Bei der Umsetzung von UML in Java werden UML 2.0-Spezifikationen in Java-Klassen umgesetzt. Sie können diese Umsetzung verwenden, um ein Java-Projekt aus UML 2.0-Spezifikationen zu starten. Auch nach dem Start des Projekts können Sie die Umsetzung verwenden, um den Java-Code mit geänderten UML-Modellen zu aktualisieren.
 

1. Erste Schritte

Bevor Sie die Umsetzung von UML in Java einsetzen, sollten Sie sich mit dem Erstellen und Bearbeiten von UML 2.0-Modellen und Java-Projekten vertraut gemacht haben.

Im Folgenden wird die einfachste Vorgehensweise bei der Verwendung der Java-Umsetzung gezeigt.

So wandeln Sie ein UML-Modell in Java um:
1. Wechseln Sie in die Perspektive 'Modellierung'.
2. Klicken Sie in der Sicht 'Modellexplorer' mit der rechten Maustaste auf eine UML-Klasse (zum Beispiel auf "Klasse1").
3. Klicken Sie auf Umsetzen > Umsetzung ausführen > UML2 in Java.
4. Der Dialog Umsetzung ausführen wird geöffnet. Klicken Sie auf die Schaltfläche für das Erstellen eines Zielcontainers.
5. Der Dialog für das neue Java-Projekt wird geöffnet. Geben Sie in das Feld Projektname "einfach" ein und klicken Sie auf Fertig stellen.
6. Klicken Sie im Dialog Umsetzung ausführen auf Fertig stellen.

Das neue Java-Projekt enthält ein Standardpaket. Dieses enthält die neue Java-Klasse: Klasse1.

Bei der Umsetzung können auch verschiedene andere, komplexere Funktionen ausgeführt werden, zum Beispiel können die Namen außer Kraft gesetzt werden, ohne das Quellenmodell zu ändern, das UML-Modell kann durch eine Visualisierung ersetzt werden, Änderungen im UML-Modell und im Java-Projekt können zusammengeführt werden und das UML-Modell kann auf mögliche Umsetzungsprobleme geprüft werden.
 

2. Umsetzungsdetails

2.1 Umsetzungsquelle

Sie können als Quelle für die Umsetzung UML 2.0-Modelle, Pakete, unverschachtelte Klassen, unverschachtelte Schnittstellen und Aufzählungen auswählen. Wenn Sie andere Elemente als Quelle auswählen, wird zwar die Umsetzung weiter durchgeführt, aber diese Elemente werden nicht umgesetzt. Bei der Umsetzung eines Modells, Pakets, einer Klasse oder einer Schnittstelle werden auch alle Elemente umgesetzt, die diese Objekte enthalten. Bei der Umsetzung einer Klasse werden zum Beispiel auch alle Operationen und Eigenschaften dieser Klasse umgesetzt.
 

2.2 Umsetzungsziel

Als Umsetzungsziel können Sie ein beliebiges Java-Projekt auswählen, das mindestens einen Quellenordner hat.
 

2.3 Interpretation von UML-Quellenobjekten

UML Java 
Paket Java-Paket mit demselben Namen*.
Paket mit dem Stereotyp <<perspective>> Ignoriert
Paket mit dem Schlüsselwort <<Analysis>> oder <<analysis>> Ignoriert
Klasse Java-Klasse mit demselben Namen* und derselben Sichtbarkeit
(Klasse) Eigenschaft "isLeaf" Falls "wahr" ist die Java-Klasse "final".
(Klasse) Eigenschaft "isAbstract" Falls "wahr" ist die Java-Klasse "abstract".
(Klasse) Generalisierung Die Java-Klasse "erweitert" die angegebene Superklasse.
Implementierung Die Java-Klasse "implementiert" die angegebene Schnittstelle.
(Klasse zu Schnittstelle) Realisierung
Die Java-Klasse "implementiert" die angegebene Schnittstelle.
Schnittstelle Java-Schnittstelle mit demselben Namen* und derselben Sichtbarkeit
(Schnittstelle) Generalisierung Die Java-Schnittstelle "erweitert" die angegebene Schnittstelle.
Aufzählung
Java-Schnittstelle mit demselben Namen* und derselben Sichtbarkeit
Aufzählungsliteral
Java-Feld mit demselben Namen* und derselben Sichtbarkeit
Operation Java-Methode mit demselben Namen* und derselben Sichtbarkeit
(Operation) Eigenschaft "isStatic" Falls "wahr" ist die Java-Klasse "static".
(Operation) Eigenschaft "isAbstract" Falls "wahr" ist die Java-Methode "abstract".
(Operation) Eigenschaft "isLeaf" Falls "wahr" ist die Java-Methode "final".
(Operation) mit demselben Namen wie ihre Klasse Java-Konstruktor
(Operation) mit dem Stereotyp <<create>> Java-Konstruktor
Parameter Java-Parameter mit demselben Namen*
(Parameter) Eigenschaft "Type" Der Java-Parameter hat den angegebenen Typ. Dabei kann es sich um eine andere Klasse oder um einen primitiven Typ handeln.
(Parameter) Eigenschaft "Direction" Wenn Sie diese Eigenschaft auf "return" setzen, hat die Java-Methode "return <parametertyp>". Bei anderen Werten wird "<paramertyp> <parametername>" zur Methodensignatur hinzugefügt.
(Parameter) Eigenschaft "Multiplicity" In der folgenden Tabelle finden Sie Informationen über Multiplizität.
Eigenschaft Java-Feld mit demselben Namen* und derselben Sichtbarkeit
(Eigenschaft) Eigenschaft "isStatic" Falls "wahr" ist das Java-Feld "static".
(Eigenschaft) Eigenschaft "isLeaf" Falls "wahr" ist das Java-Feld "final".
(Eigenschaft) Eigenschaft "Type" Das Java-Feld hat den angegebenen Typ. Dabei kann es sich um eine andere Klasse oder um einen primitiven Typ handeln.
(Eigenschaft) Eigenschaft "Multiplicity" In der folgenden Tabelle finden Sie Informationen über Multiplizität.

*  Einige Zeichen (zum Beispiel das Leerzeichen) sind als Java-Bezeichner nicht gültig. Bei der Java-Umsetzung werden ungültige Zeichen automatisch durch ein Unterstreichungszeichen ("_") ersetzt, um einen gültigen Bezeichner zu erstellen. Bei dieser Ersetzung kann es zu Namenskonflikten kommen, durch die bei der Umsetzung Klassen und Schnittstellen nicht dupliziert werden können. Sie können die Prüffunktion verwenden, um diese Probleme zu erkennen. Um diese Ersetzungsprobleme zu vermeiden, benennen Sie die Elemente um. Sie können auch die Zuordnungsfunktion verwenden, um einen alternativen Namen anzugeben, bei dem das Quellenmodell nicht geändert wird.

Java-Typen für Eigenschaften und Parameter
UML-Multiplizität Generierter Java-Typ
0..1 Attribut, Zeiger oder Referenz (zum Beispiel "String")
1 Attribut (zum Beispiel "String")
N (N > 1)  Feldgruppe (zum Beispiel "String[]")
1..*, *, or x..y  Sammlung, siehe folgende Tabelle

Java-Sammlungen für Multiplizitäten 1..*, * oder x..y

Eigenschaft "isOrdered" Eigenschaft "isUnique" UML-Sammlung
Generierter Java-Typ
Wahr Wahr Geordnetes Set (Ordered Set)
java.util.SortedSet
Wahr Falsch Folge (Sequence)
java.util.List
Falsch Wahr Set
java.util.Set
Falsch Falsch Bag
java.util.Collection

Dabei ist zu beachten, dass es sich bei den aufgeführten generierten Typen um die Standardwerte handelt. Diese Werte können in der Registerkarte Erweitert einer Umsetzungskonfiguration bei Bedarf überschrieben werden.

Erweitert
Die Registerkarte Erweitert enthält verschiedene Optionen für die Codegenerierung. Klicken Sie auf Modellierung > Umsetzen > Umsetzungen konfigurieren und wählen Sie eine UML-in-Java-Konfiguration und anschließend die Registerkarte Erweitert aus. Diese Registerkarte enthält das Markierungsfeld Getter und Setter generieren und die Gruppe Sammlungen.  

Wenn das Markierungsfeld Getter und Setter generieren markiert ist, wird für jede UML-Eigenschaft ein privates Feld mit der Getter- und der Setter-Methode generiert.  Ist 'isLeaf' (final) oder 'isReadOnly' der Eigenschaft auf 'true' gesetzt, wird kein Setter generiert. Ist 'isDerived' der Eigenschaft auf 'true' gesetzt, bleibt die Setter-Implementierung leer.  

Sie können die über eine UML-in-Java-Umsetzungen generierten Sammlungen in der Gruppe Sammlungen angeben. Wenn Sie z. B. 'java.util.Vector' im Dropdown-Menü Folge auswählen, werden bei der Umsetzung Vektoren an Stelle von Listen generiert. Sie können auch angepasste Sammlungsklassen angeben, indem Sie den entsprechenden Klassennamen im Dropdown-Menü eingeben. Wenn Sie im Dropdown-Menü Bag 'custom.Bag' eingeben, werden bei der Umsetzung Bags an Stelle von Sammlungen generiert.  

3. Unterstützung für einheitliche Umsetzungstechnologien

3.1 Integration mit Team Support

Die Java-Umsetzung bietet eine Integration mit Team Support. Dadurch ist es möglich, Dateien automatisch zu entnehmen und neue Dateien zu Quellcodeverwaltungssystemen hinzuzufügen.
 

3.2 Umsetzungszuordnung

Sie können alternative Namen für die Zielelemente der Umsetzung angeben, wenn Sie für eine Umsetzung ein Quellenmodell nicht ändern wollen. Möglicherweise wollen Sie auch alternative Namen angeben, wenn Sie Java-spezifische Details (zum Beispiel Benennungseinschränkungen) in plattformunabhängige Modelle aufnehmen wollen oder wenn die logische Organisation des Quellenmodells als Zielpaket nicht angemessen ist. Um alternative Zielnamen anzugeben, ohne die Quelle zu ändern, verwenden Sie die Zuordnungsfunktion der Umsetzung:
So verwenden Sie die Zuordnungsfunktion der Umsetzung:
1. Wechseln Sie in die Perspektive 'Modellierung'.
2. Klicken Sie in der Sicht 'Modellexplorer' auf ein UML-Modell.
3. Klicken Sie in der Menüleiste auf Modellierung > Umsetzen > Umsetzungen konfigurieren.
4. Erstellen Sie eine neue Umsetzung UML2 in Java (nennen Sie die Umsetzung zum Beispiel "Zuordnung erstellen").
5. Klicken Sie auf der Seite 'Zuordnung' auf Nur Zuordnungsmodell erstellen (keine Umsetzung).
6. Geben Sie einen Dateinamen an und klicken Sie auf Ausführen.

Wenn Sie auf Zuordnungsmodell erstellen klicken, erstellt die Java-Umsetzung ein Zuordnungsmodell. Dabei handelt es sich um ein separates Modell, das für jedes umsetzbare Element ein Artefakt hat. Das Artefakt hat denselben Namen wie das ursprüngliche umsetzbare Element, auf das es verweist. Um einen alternativen Namen für das ursprüngliche Element anzugeben, geben Sie bei den Dateinameneigenschaften des Artefakts einen neuen Namen ein. Wenn Sie die Dateinameneigenschaft des Artefakts nicht ändern , wird bei der Umsetzung das Element mit dem Standardnamen des Artefakts generiert. Wenn Sie alternative Namen für Pakete angeben, betreffen diese alle Klassifikationsmerkmale in diesem Paket (sofern das Klassifikationsmerkmal nicht einen vollständig qualifizierten Namen angibt). In der folgenden Tabelle finden Sie Beispiele für alternative Namen.
 
UML-Quelle Dateiname des Zuordnungsartefakts Generiertes Java
"Paket1" ""  "Paket1"
"Paket2" "com.ibm.test" "com.ibm.test"
"Klasse1" in Paket1  "" Paket1.Klasse1
"Schnittstelle1" in Paket2 "ITestable" com.ibm.test.ITestable
"Klasse2" in Paket2 "com.ibm.test.Testable" com.ibm.test.Testable

Um auf das Zuordnungsmodell zuzugreifen, führen Sie folgende Schritte aus:
1. Wechseln Sie in die Perspektive 'Modellierung'.
2. Klicken Sie in der Sicht 'Modellexplorer' auf ein UML-Modell.
3. Klicken Sie in der Menüleiste auf Modellierung > Umsetzen > Umsetzungen konfigurieren.
4. Erstellen Sie eine neue Umsetzung UML2 in Java (nennen Sie die Umsetzung zum Beispiel "Zuordnung verwenden").
5. Klicken Sie auf der Seite 'Zuordnung' auf die Option für die Verwendung eines Zuordnungsmodells.
6. Klicken Sie auf das Zuordnungsmodell, das Sie vorher erstellt haben, und klicken Sie auf Ausführen.
Bei der Durchführung der Umsetzung werden die alternativen Namen verwendet, die Sie im Zuordnungsmodell angegeben haben.
 

3.3 Unterstützung für direkte Visualisierung

Wenn Sie das ursprüngliche UML-Modell nicht behalten wollen, können Sie mit den Visualisierungsfunktionen der Umsetzung die UML-Elemente löschen und diese durch Verknüpfungen zu den generierten Java-Elementen ersetzen. Klicken Sie im Fenster 'Umsetzungen konfigurieren' auf 'UML-Elemente ersetzen', wenn die UML-Modellelemente bei der Umsetzung gelöscht werden sollen. Bei der Umsetzung werden die Elemente nicht ersetzt, wenn die Ersetzung zu Datenverlust führen würde. Wenn zum Beispiel UML-Elemente Diagramme enthalten, werden diese Diagramme bei der Umsetzung gelöscht, damit diese Elemente nicht ersetzt werden.
 

3.4 Erneut anwenden

Bei der Java-Umsetzung werden Änderungen am Quellenmodell und geänderter Quellcode durch die Verwendung von "@generated"-Tags in den generierten Javadocs zusammengeführt. Die Umsetzung ist der Eigner von Java-Elementen, die mit "@generated" gekennzeichnet sind. Sie überschreibt sie während einer erneuten Umsetzung oder löscht sie, wenn sie aus dem Quellenmodell entfernt wurden. Sie können das "Eigentumsrecht" an den Elementen erneut in Anspruch nehmen, indem Sie den Tag "@generated" entfernen, der verhindert, dass die Elemente bei der Umsetzung überschrieben oder gelöscht werden.
 

3.5 Prüfung

Das Plug-in für die Java-Umsetzung enthält ein UML-Profil, mit dem Sie Modelle auf mögliche Umsetzungsprobleme prüfen können. Mehrfache Vererbungen, rückwirkende Generalisierungen und Namensunverträglichkeiten führen zum Beispiel zu Kompilierungsfehlern im generierten Java-Code. Um eine Liste der Probleme anzuzeigen, die im generierten Code auftreten könnten, wenden Sie das Profil auf das Quellenmodell an und führen Sie die Prüffunktion aus.
 

3.6 Tracefähigkeit

Bei der Java-Umsetzung können abgeleitete Beziehungen von den generierten Java-Elementen zur zugehörigen UML-Quelle erzeugt werden. Klicken Sie im Fenster 'Umsetzungen konfigurieren' auf der Seite 'Allgemein' auf 'Quelle-Ziel-Beziehungen erstellen', um abgeleitete Beziehungen zu erstellen. Wenn das System das generierte Java-Element visualisiert, hat das Element eine abgeleitete Beziehung zu seinem Quellenelement.
 
Rechtliche Hinweise | Feedback
(C) Copyright IBM Corporation 2004. Alle Rechte vorbehalten.