Umsetzung UML in CORBA

Bei der Umsetzung von UML in CORBA werden Modellelemente der UML-Version 2.0 (UML = Unified Modeling Language) in CORBA-IDL umgesetzt (CORBA = Common Object Request Broker Architecture; IDL = Interface Definition Language). Sie können diese Umsetzung verwenden, um ein CORBA-Projekt aus UML 2.0-Spezifikationen zu starten. Die Umsetzung stellt auch ein optionales, weniger komplexes Profil bereit, dass Sie zum Modellieren und Generieren der meisten CORBA-Elemente verwenden können.


1. Einführung

Bevor Sie die Umsetzung von UML in CORBA einsetzen, sollten Sie sich mit dem Erstellen und Bearbeiten von UML 2.0-Modellen und -Projekten vertraut gemacht haben. Die folgende Prozedur veranschaulicht die einfachste Verwendung der CORBA-Umsetzung.

Umsetzung eines UML-Modells in CORBA:

 

1.    Stellen Sie sicher, dass Sie sich in der Perspektive 'Modellierung' befinden.

2.    Erstellen Sie in der Modellexplorersicht eine UML-Komponente mit dem Namen "Component1"; erstellen Sie innerhalb der Komponente eine Schnittstelle mit dem Namen "Interface1".

3.    Klicken Sie mit der rechten Maustaste auf die Komponente; klicken Sie anschließend auf Umsetzen > Umsetzung ausführen > UML in CORBA.

4.    Klicken Sie im Fenster "Umsetzung ausführen" auf die Schaltfläche zum Erstellen eines Zielcontainers.

5.       Geben Sie im Fenster "Neues Projekt" Sample als Projektnamen an, und klicken Sie auf Fertig stellen.

 

Das neue Projekt enthält eine IDL-Datei mit dem Namen "Component1.idl"; diese Datei verfügt über eine definierte Schnittstelle mit dem Namen Interface1.

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 für potenzielle Umsetzungsprobleme kann überprüft werden etc.

 

2. Umsetzungsdetails

 

2.1 CORBA-Schablonenmodell

Das CORBA-Schablonenmodell stellt eine Schnellunterstützung zum Starten des Modellierungsvorgangs mit CORBA dar. Klicken Sie zum Starten auf Datei > Neu > UML-Modell, und wählen Sie in den verfügbaren Schablonen CORBA-Modell aus. Durch diese Auswahl wird ein UML-Modell generiert, und Anweisungen sowie eine grundlegende Infrastruktur für die Erstellung eines CORBA-Modells werden bereitgestellt.

 

2.2 Umsetzungsquelle

Sie können ein UML-Modell, eine Komponente, ein Paket aus Komponenten oder eine Kombination dieser Elemente als Quelle für die Anwendungen der Umsetzung angeben. Bei der Umsetzung wird eine einzige IDL-Datei für jede UML-Komponente in der Hierarchie der angegebenen Quelle generiert. Jede IDL-Datei enthält nur für die Elemente Code, die der entsprechenden UML-Komponente gehören. Die Umsetzung ignoriert Elemente, die keiner UML-Komponente gehören. Wenn Sie als Quelle für die Umsetzung andere Elemente angeben, schlägt die Umsetzung bei der Überprüfung fehl.  

Wenn Sie das CORBA-Profil anwenden, können Sie die UML-Komponenten in Ihrem Modell steuern, für das die Umsetzung Code generiert. Sie können diese Steuerung durchführen, indem Sie die Eigenschaft "generateCode" auf "true" oder "false" setzen. Wenn Sie die Eigenschaft auf "false" setzen, ignoriert die Umsetzung die Komponenten, wenn der Code generiert wird.

2.3 Umsetzungsziel

Das Ziel jeder Umsetzungsanwendung ist eine einfache Eclipse-Projektressource. Das Projekt enthält die IDL-Datei bzw. -Dateien, die als Ressourcendateien des Eclipse-Arbeitsbereichs betrachtet werden.

2.4 Optionales Profil

Die folgenden CORBA-Typen können Sie ohne Profile modellieren:

Ein optionales Profil stellt Stereotype für die Modellierung von spezifischeren CORBA-Typen wie die folgenden bereit:

2.5 Überprüfung des Quellenmodells

Das CORBA-Umsetzungsprofil definiert Einschränkungen zu Stereotypen. Um diese Einschränkungen auszuwerten und Fehler eines Quellenmodells zu dokumentieren, können Sie den Befehl "Prüfung ausführen" verwenden. Die CORBA-Umsetzung führt auch zusätzliche Prüfungen des Teils des Modells durch, auf den die Umsetzung angewendet wird.

2.6 Verwendung eines Zuordnungsmodells

Sie können modellierte Elemente im generierten Code umbenennen, indem Sie ein Zuordnungsmodell verwenden. Außer Komponenten können Sie nur UML-Elemente mit einfachen Kennungen umbenennen. Sie können UML-Komponenten mit entweder einer Kennung oder mit einem gültigen Teilpfad umbenennen, der zum Zielcontainer relativ ist, in dem die IDL-Datei generiert wird. Der Pfad muss mit dem Namen der IDL-Datei enden. Beispiel: Wenn Sie Ihre Komponente A in dirA\A umbenennen, wird bei der Umsetzung A.idl im Verzeichnis mit dem Namen dirA generiert und nicht in der obersten Ebene des Zielcontainers.

3. UML-CORBA-Zuordnung

Der folgenden Tabelle können Sie entnehmen, wie die Umsetzung UML 2.0-Modellelemente CORBA-IDL zuordnet.

UML 2.0-Element

CORBA-IDL-Element

Modell

Keins

Komponente

IDL-Datei

Primitive Typen

Basistypen

Nativ

Paket

Modul (wenn sich das Paket in einer Komponente befindet)

Ignoriert (wenn sich das Paket nicht in einer Komponente befindet)

Schnittstelle

Schnittstelle

Attribut oder Assoziation

Attribut

Operation

IDL-Operation

Parameter

Parameter der IDL-Operation

Aufzählung

Aufzählung

Klasse <<CORBAValue>>

Wertetyp

Wertetyp "Custom"

Wertetyp "Boxed"

Statisches Attribut

Constant

Klasse <<CORBAStruct>>

Struct

Klasse <<CORBAException>>

Exception

Klasse <<CORBATypedef>>

Typedef

Array

Sequence

3.1 UML 2.0-Modell

Ein UML 2.0-Modell wird nicht direkt zu einem CORBA-Element zugeordnet. Diese fehlende Zuordnung bedeutet, dass die Umsetzung für das Modellelement keinen Code generiert, wenn in dem Modell keine Komponenten definiert wurden.

3.2 UML 2.0-Komponente

Eine UML 2.0-Komponente wird einer einzigen CORBA-IDL-Datei zugeordnet. Die IDL-Datei für eine Komponente enthält alle CORBA-Elemente, die der Komponente gehören.

3.3 UML 2.0 - Primitive Typen

Ein primitiver UML 2.0-Typ wird entweder zu einem CORBA-Basistyp oder einem nativen CORBA-Typ zugeordnet. Eine UML 2.0-Typenbibliothek, die alle CORBA-Basistypen als primitive UML 2.0-Typen enthält, ist für den Import in das Modell verfügbar. Alternativ dazu können Sie einen primitiven UML 2.0-Typ mit demselben Namen erstellen, den auch ein vorhandener CORBA-Basistyp hat, der dann für die Typenauswahl im Modell verwendet wird. In der folgenden Liste sind alle verfügbaren CORBA-Basistypen in der Typenbibliothek aufgeführt:

Ein primitiver UML 2.0-Typ mit einem anderen Namen als dem der in der Liste angegebenen Typen stellt einen nativen CORBA-Typ dar. Ein nativer CORBA-Typ generiert die native 
Definition in der IDL-Datei und ist für die Typenauswahl im Modell verfügbar.

3.4 UML 2.0-Paket

Ein UML 2.0-Paket in einer UML 2.0-Komponente wird dem CORBA-Modul zugeordnet. Die Umsetzung ignoriert UML 2.0-Pakete, die sich nicht in einer 
UML 2.0-Komponente befinden.

3.5 UML 2.0- Schnittstelle

Eine UML 2.0-Schnittstelle wird der CORBA-Schnittstelle zugeordnet. Eine UML 2.0-Generalisierung von UML 2.0-Schnittstellen wird der Vererbung von CORBA-Schnittstellen zugeordnet. Die folgende Tabelle zeigt, wie bei der Umsetzung Schnittstelleneigenschaften umgesetzt werden.

UML-Schnittstelleneigenschaft

Umsetzungsergebnis

Name

Neue CORBA-Schnittstelle in der IDL mit dem angegebenen Namen, wobei alle illegalen Zeichen entfernt werden

Sichtbarkeit, öffentlich

Normale Schnittstelle

Sichtbarkeit, privat

Lokale Schnittstelle

Abstrakt

Abstrakte CORBA-Schnittstelle

Blatt

Ignoriert

3.6 UML 2.0- Attribute und -Assoziationen

UML 2.0-Attribute und -Assoziationen werden zu CORBA-Attributen zugeordnet. Die folgende Tabelle zeigt, wie bei der Umsetzung Attributeigenschaften umgesetzt werden.

UML-Attributeigenschaft

Umsetzungsergebnis

Name

CORBA-Attribut mit demselben Namen

Typ

CORBA-Attribut mit dem angegebenen Basistyp

Werte "Is Static" und "default"

CORBA-Konstante

Schreibgeschützt

Schreibgeschütztes CORBA-Attribut

Reihenfolge

IDL-Reihenfolge

Die folgende Tabelle zeigt, wie bei der Umsetzung Assoziationseigenschaften umgesetzt werden.

UML-Assoziationseigenschaft

Umsetzungsergebnis

Name

CORBA-Attribut mit demselben Namen

Typ

CORBA-Attribut mit demselben Typ wie der Supplier dieser Assoziation

Werte "Is Static" und "default"

CORBA-Konstante

Schreibgeschützt

Schreibgeschütztes CORBA-Attribut

Reihenfolge

IDL-Reihenfolge

3.7 UML 2.0-Operation

Eine UML 2.0-Operation, die in einer UML-Schnittstelle bzw. einer UML-Klasse mit dem Stereotyp <<CORBAValue>> deklariert wurde, wird direkt zur IDL-Operation zugeordnet. Die Umsetzung ignoriert andere UML 2.0-Operationen. Die folgende Tabelle zeigt, wie bei der Umsetzung Operationseigenschaften umgesetzt werden.

UML-Operationseigenschaft

Umsetzungsergebnis

Name

Neue CORBA-Operation mit dem angegebenen Namen

Rückgabetyp

Rückgabetyp der CORBA-Operation

Alle anderen Eigenschaften

Ignoriert

Operation mit dem Stereotyp <<CORBAOneway>>

Unidirektionale IDL-Operation

Stereotyp <<create>> bei der Operation in der UML-Klasse <<CORBAValue>>

Wird einer Operation des CORBA-Werteinitialisierungsoperators zugeordnet

3.8 UML 2.0- Parameter

Ein UML 2.0-Parameter wird zum Parameter der IDL-Operation zugeordnet. Die folgende Tabelle zeigt, wie bei der Umsetzung Parametereigenschaften umgesetzt werden.

UML-Parametereigenschaft

Umsetzungsergebnis

Name

Neuer Parameter mit dem angegebenen Namen

Richtung (in, out, inout)

Entsprechender Parameter in der IDL; 'return' wird ignoriert

Typ

Parameter mit dem angegebenen Typ

Sichtbarkeit

Ignoriert

3.9 UML 2.0-Aufzählung

Eine UML 2.0-Aufzählung wird einer CORBA-Aufzählung zugeordnet. Eine Aufzählung kann nur Aufzählungsliterale enthalten.

3.10 UML 2.0-Klasse mit dem Stereotyp <<CORBA Value>>

Eine UML 2.0-Klasse mit dem Stereotyp <<CORBAValue>> wird einem CORBA-Wertetyp zugeordnet. Das Stereotyp <<CORBAValue>> tritt in Verbindung mit der Eingenschaft 
"specification" und dem Aufzählungstyp {"none", "custom", "boxed"} auf. Der Standardwert ist "none". Wenn Sie die Eigenschaft "specification" auf "custom" setzen, findet die Zuordnung 
zu einem angepassten CORBA-Wert statt. Wenn Sie die Eigenschaft "specification" auf "boxed" setzen, findet die Zuordnung zu einem CORBA-Wert vom Typ "Boxed" statt.

Ein CORBA-Wertetyp ist eine Entität, die über einen optionalen Zustand und eine Initialisierungsoperatormethode verfügt, die von den Eigenschaften einer Schnittstelle getrennt sind. Die State-Mitglieder eines CORBA-Wertetyps werden durch die UML 2.0-Attribute mit dem Stereotyp <<CORBAState>> dargestellt; die Initialisierungsoperatormethoden werden durch die Anwendung des Stereotyps <<create>> aus dem Basisprofil dargestellt, das im Lieferumfang des Produkts enthalten ist.

Die folgende Tabelle zeigt, wie bei der Umsetzung Klasseneigenschaften umgesetzt werden.

UML-Klasseneigenschaft

Umsetzungsergebnis

Stereotyp

<<CORBAValue>>

Name

Neuer Wertetyp mit dem angegebenen Namen.

Sichtbarkeit

Ignoriert

Abstrakt

Abstrakter Wertetyp

Attribute mit <<CORBAState>> mit öffentlich zugänglicher oder privater Sichtbarkeit

CORBA-State-Mitglieder des CORBA-Wertetyps mit öffentlich zugänglicher oder privater Sichtbarkeit

Operation mit <<create>>

CORBA-Factorymethode (FactoryMethod) des nicht abstrakten Wertetyps

3.11 Statisches UML 2.0-Attribut

Eine CORBA-Constant-Deklaration (CORBA-Konstantendeklaration) kann im Bereich einer IDL-Datei, eines Moduls, einer Schnittstelle oder eines Wertetyps auftreten.

Eine CORBA-Constant (CORBA-Konstante), die im Bereich einer Schnittstelle oder eines Wertetyps auftritt, kann durch das statische UML-Attribut in der entsprechenden UML- 
Schnittstelle oder -Klasse dargestellt werden.

Eine CORBA-Constant (CORBA-Konstante), die im Bereich eines CORBA-Moduls oder einer IDL-Datei auftritt, muss ein Attribut in einer UML-Klasse mit dem Stereotyp 
<<CORBAConstants>> sein, das im UML-Paket (für eine Modulkonstante) oder in der UML-Komponente (für eine IDL-Bereichskonstante) auftritt. 
Der Name dieser Klasse wird ignoriert. Jedes Attribut der Klasse mit dem Stereotyp <<CORBAConstants>> stellt eine Constant-Deklaration (Konstantendeklaration)
dar.

3.12 UML 2.0-Klasse mit dem Stereotyp <<CORBA Struct>>

Eine UML 2.0-Klasse mit dem Stereotyp <<CORBAStruct>> wird einem CORBA-Struct zugeordnet. Diese Klasse darf nur Attribute und keine Operationen aufweisen. Die Structmitglieder werden über das UML-Attribut oder die Assoziation der Klasse dargestellt.

3.13 UML 2.0-Klasse mit dem Stereotyp <<CORBA Exception>>

Eine UML 2.0-Klasse mit dem Stereotyp <<CORBAException>> stellt eine Ausnahmedefinition dar. Dieser Klassentyp kann optional Attribute enthalten.

Bei CORBA 2.4 kann nur eine CORBA-Operation eine Ausnahmebedingung herbeiführen, ein CORBA-Attribut kann keine Ausnahmebedingung herbeiführen. Daher findet die Darstellung in der 
Eigenschaft "RaisedException" der entsprechenden UML-Operation statt, wenn eine CORBA-Operation eine Ausnahmebedingung herbeiführt.

3.14 UML 2.0-Klasse mit dem Stereotyp <<CORBA Typedef>>

Bei der Umsetzung wird der CORBA-Typedef verwendet, um einem vorhandenen CORBA-Typ einen neuen Namen zu geben. Eine UML 2.0-Klasse mit dem Stereotyp <<CORBATypedef>> 
wird der CORBA-Typedef zugeordnet. Eine UML 2.0-Substitutionsbeziehung dieser Klasse für den vorhandenen CORBA-Typ ist die vollständige Notation, 
die den CORBA-Typedef darstellt.

Die CORBA 2.4-Spezifikation lehnt die anonyme Deklaration des CORBA-Typs "array" und "sequence" ab. Diese Zuordnung unterstützt keine anonymen 
CORBA-Arrays oder -Sequences (Sequenzen). Sie müssen den Typ "array" oder "sequence" benennen, indem Sie eine Typedef-Deklaration verwenden. Das Stereotyp <<CORBATypedef>>, das 
die UML 2.0-Klasse erweitert, enthält eine Spezifikationseigenschaft ("specification") (mit den Werten "none", "array" und "sequence", wobei "none" der Standardwert ist) und eine 
Eigenschaft "deimenstions" (wobei der Standard leer ist), worin die Dimensionen "array" oder "sequence" enthalten sind.

Ein CORBA-Array wird als UML 2.0-Substitutionsbeziehung aus einer Klasse mit dem Stereotyp <<CORBATypedef>> für das UML-Element modelliert, das 
den Typ des Arrayelements darstellt. Die Eigenschaft "specification" des Stereotyps ist auf "array" und die Eigenschaft "dimensions" ist auf die Zeichenfolge gesetzt, die 
die Arraydimensionen (z. B. "[3][5]") darstellt. Eine Assoziation eines konstruierten Typs (Constructed Type) zu der Klasse mit dem Stereotyp <<CORBATypedef>>-Stereotyp modelliert 
ein Mitglied im konstruierten Typ (Constructed Type) mit dem Typ als CORBA-Array.

Eine CORBA-Sequence (Sequenz) wird als UML 2.0-Substitutionsbeziehung aus einer Klasse mit dem Stereotyp <<CORBATypedef>> in ein UML-Element modelliert, das 
den Typ des Elements "sequence" darstellt. Die Eigenschaft "specification" des Stereotyps ist auf "sequence" gesetzt und die Eigenschaft "dimensions" ist optional 
auf den Zeichenfolgewert gesetzt, der die Obergrenze der Folge (z. B. "12") darstellt. 
Eine Assoziation eines konstruierten Typs (Constructed Type) zu der Klasse mit dem Stereotyp <<CORBATypedef>> modelliert ein Mitglied in dem konstruierten Typ (Constructed Type) mit dem Typ als CORBA-Sequence (Sequenz).

4. CORBA - Forward-Deklarationen und Include-Operationen

Die Umsetzung generiert automatisch CORBA-Forward-Deklarationen. Sie können sie nicht modellieren. Die Umsetzung ändert die Reihenfolge der Typen in IDL, um Forward-Deklarationen zu minimieren. Wenn ein Typ vor seiner Definition verwendet wird und die Typendefinition nicht vor ihrer Verwendung entfernt werden kann, wird bei der Umsetzung eine Forward-Deklaration 
des Typs im richtigen Bereich generiert.

Die Umsetzung generiert automatisch eine #include-Operation, wenn ein Typ verwendet wird, dessen Definition in einer anderen Komponente auftritt. Die meisten CORBA-IDL-Dateien 
müssen Sie Datei ORB.idl integrieren. Wenn Sie eine #include-Operation in einer generierten IDL-Datei einer anderen externen IDL-Datei umsetzen müssen, die nicht modelliert ist, müssen Sie 
eine Abhängigkeit von der aktuellen Komponente für eine neu erstellte Komponente erstellen, die die externe IDL-Datei darstellt. Sie können die Generierung von Code 
für die neu erstellte Komponente umgehen, indem Sie die Eigenschaft "generateCode" auf "false" setzen. Diese Eigenschaft tritt mit dem Stereotyp der Komponente des 
CORBA-Profils in Erscheinung. Wenn Sie z. B. "#include <ORB.idl>" in einer IDL-Datei generieren möchten, müssen Sie eine Abhängigkeit der Komponente erstellen, die 
die aktuelle IDL-Datei für eine neue Komponente mit der Bezeichnung ORB modelliert. Um zu vermeiden, dass bei der Umsetzung Code für die neue Komponente ORB erstellt wird, 
setzen Sie die Eigenschaft "generateCode" auf "false".

5. Modellübergreifende Verweise

Die Umsetzung von UML in CORBA unterstützt Modelle mit Querverweisen. So kann z. B. Schnittstelle A im aktuellen Modell zu Schnittstelle B eines anderen 
Modells weitergeleitet werden. In diesen Fällen wird bei der Umsetzung eine #include-Operation der IDL-Datei erstellt, in der der verwendetet Typ auftritt (in diesem Beispiel Schnittstelle B). 
Die Umsetzung verwaltet nicht die Position der Include-IDL-Dateien im Dateisystem. Sie müssen die relativen Pfade der generierten IDL-Dateien 
über ein Zuordnungsmodell verwalten.

 

6. Nicht zugeordnete CORBA-Constructs (CORBA-Konstrukte)

Die folgenden CORBA-Constructs (CORBA-Konstrukte) weisen in diesem Profil momentan keine Zuordnung auf:

7. Unterstützung für einheitliche Umsetzungstechnologien

 

7.1 Integration in Teamunterstützung

Bei der CORBA-Umsetzung wird die Integration in die Teamunterstützung bereitgestellt, so dass Benutzer automatisch neue Dateien auschecken und zu Quellensteuerungssystemen hinzufügen können.

7.2 Modell der Umsetzungszuordnung

Wenn Sie ein Quellenmodell für eine Umsetzung nicht ändern möchten, können Sie alternative Namen für die Zielelemente der Umsetzung angeben. 
Möglicherweise wollen Sie auch alternative Namen angeben, wenn Sie CORBA-spezifische Details wie z. B. Benennungseinschränkungen in plattformunabhängige Modelle 
aufnehmen möchten. Um alternative Zielnamen anzugeben, ohne die Quelle zu ändern, erstellen Sie eine Modellzuordnung.

Gehen Sie wie folgt vor, um ein Zuordnungsmodell zu erstellen:

1. Stellen Sie sicher, dass Sie sich in der Perspektive 'Modellierung' befinden.
2. Klicken Sie in der Sicht 'Modellexplorer' auf ein UML-Modell.
3. Klicken Sie in der Menüleiste auf Modellierung > Umsetzungen > Umsetzungen konfigurieren.
4. Erstellen Sie eine neue Umsetzung von UML 2.0 in CORBA. (Benennen Sie die Umsetzung z. B.
Create mapping .)
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 die Zuordnungsfunktion der Umsetzung verwenden, erstellt die CORBA-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. In der folgenden Tabelle finden Sie Beispiele für alternative Namen.

 

UML-Quelle

Dateiname des Zuordnungsartefakts

Generierte CORBA

Component1

"" 

Datei Component1.idl

Component2

"myIDL"

Datei myIDL.idl

Component3

"myDir\myIDL2"

Datei myIDL2.idl im Ordner "myDir".


Gehen Sie wie folgt vor, um ein Zuordnungsmodell zu verwenden:

1. Stellen Sie sicher, dass Sie sich in der Perspektive 'Modellierung' befinden.
2. Klicken Sie in der Sicht 'Modellexplorer' auf ein UML-Modell.
3. Klicken Sie in der Menüleiste auf Modellierung > Umsetzungen > Umsetzungen konfigurieren.
4. Erstellen Sie eine neue Umsetzung von UML 2.0 in CORBA. (Benennen Sie die Umsetzung z. B.
Use mapping .)
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.

7.3 Prüfung

Das CORBA-Umsetzungs-Plug-in stellt eine Funktion zur Prüfung von Modellen für potenzielle Umsetzungsfehler bereit. So verursachen rückwirkende Generalisierungsbeziehungen und Namensunverträglichkeiten in der generierten IDL-Datei Kompilierungsfehler. 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.

In der folgenden Tabelle sehen Sie eine Liste einiger potenzieller Umsetzungsprobleme.

Kategorie

Potenzielle Umsetzungsfehler

Stereotyp 'CORBAValue'

Ein Wertetyp darf keine verschachtelten Klassifikationsmerkmale außer typedef, struct, exception oder enumeration aufweisen.

Ein Wertetyp soll über Mitglieder mit eindeutigen Namen verfügen.

Ein Wertetyp soll über eindeutig vererbte Attribute verfügen.

Ein Wertetyp soll über eindeutig vererbte Operationen verfügen.

Ein Wertetyp kann höchstens eine nicht abstrakte Schnittstelle unterstützen.

Ein abstrakter Wertetyp soll einen Wert nur von anderen abstrakten Wertetypen übernehmen.

Ein Wertetyp kann nur maximal einen Wert von derselben Klasse übernehmen.

Ein Wertetyp mit State-Mitgliedern kann einen Wert nur von einem einzigen Wertetyp mit State-Mitgliedern übernehmen.

Ein abstrakter Wertetyp kann über keine State-Mitglieder verfügen und darf kein Wert vom Typ "Boxed" sein.

Ein Wert mit dem Typ "Boxed" kann nicht an der Vererbung beteiligt sein.

Ein Wert vom Typ "Boxed" soll über genau eine Assoziation oder genau ein Attribut verfügen.

Stereotyp 'CORBAConstants'

 

Die Klasse CORBAConstants darf über keine Operationen verfügen.

Die Klasse CORBAConstants soll über keine verschachtelten Klassifikationsmerkmale verfügen.

Die Klasse CORBAConstants soll über Mitglieder mit eindeutigen Namen verfügen.

Stereotyp 'CORBAException'

Die Klasse CORBAException soll über keine verschachtelten Klassifikationsmerkmale verfügen.

Stereotyp 'CORBAStruct'

Struct soll kein Eigner von Generalisierungs- oder Implementierungsbeziehungen sein.

Struct soll über keine verschachtelten Klassifikationsmerkmale verfügen.

Struct soll keine Operationen aufweisen.

Stereotyp 'CORBATypedef'

Typedef soll über keine Generalisierungsbeziehungen verfügen.

Typedef soll über eine Substitutionsbeziehung verfügen.

Typedef soll über keine Assoziationen, Attribute oder Operationen verfügen.

Typedef soll über keine verschachtelten Klassifikationsmerkmale verfügen.

Stereotyp 'CORBAState'

Ein Mitgliedsattribut "state" soll über eine Wertetypklasse als Eigner verfügen.

Stereotyp 'CORBAOneway'

Eine unidirektionale Operation soll keine Parameter vom Typ 'in' oder 'inout' aufweisen.

Eine unidirektionale Operation soll über den Rückgabewert "void" verfügen.

Eine unidirektionale Operation muss über eine Schnittstelle als Eigner verfügen.

Eine unidirektionale Operation darf keine Ausnahmebedingungen herbeiführen.

Aufzählung

Eine Aufzählung soll Aufzählungsliterale mit eindeutigen Namen aufweisen.

Komponente

Eine Komponente soll keine verschachtelte Komponente enthalten.

Alle Pakete in der Komponente sollen eindeutige Namen aufweisen.

Schnittstelle

Eine Schnittstelle soll Mitglieder mit eindeutigen Namen aufweisen.

Eine Schnittstelle darf keine verschachtelte Schnittstelle, kein verschachteltes Paket, keinen verschachtelten Wertetyp oder keine verschachtelte Komponente enthalten.

Eine ungezwungene Schnittstelle kann keinen Wert von einer lokalen Schnittstelle übernehmen.

Eine Schnittstelle soll über eindeutig vererbte Operationen verfügen.

Eine Schnittstelle soll über eindeutig vererbte Attribute verfügen.

Eine Schnittstelle kann einen Wert nur einmal von derselben Schnittstelle übernehmen.

Eine abstrakte Schnittstelle kann einen Wert nur von anderen abstrakten Schnittstellen übernehmen.

Allgemein

Ein Modell soll keine Elemente aufweisen, die mit CORBA-Schlüsselwörtern benannt sind (z. B. Pakete, Klassen, Schnittstellen, Operationen, Eigenschaften, Parameter und Aufzählungen).

Ein Modell darf über keine Klassen oder Schnittstellen mit rückwirkenden Generalisierungs- oder Schnittstellenbeziehungen verfügen.

Ein Modell darf keine doppelten Elementnamen haben.

Ein Modell darf keine falsch formatierte Hierarchie aufweisen, wie beispielsweise eine, die eine verschachtelte Komponente aufweist.