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.
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.
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.
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.
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:
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.
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.
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 |
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.
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.
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.
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 |
UML 2.0-Attribute und -Assoziationen werden zu CORBA-Attributen zugeordnet. Die folgende Tabelle zeigt, wie bei der Umsetzung Attributeigenschaften umgesetzt werden.
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 |
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 |
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 |
Eine UML 2.0-Aufzählung wird einer CORBA-Aufzählung zugeordnet. Eine Aufzählung kann nur Aufzählungsliterale enthalten.
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 |
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.
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.
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.
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).
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".
Die folgenden CORBA-Constructs (CORBA-Konstrukte) weisen in diesem Profil momentan keine Zuordnung auf:
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.
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.
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. |