CQML-XML
Im großen und ganzen entsprechen die verwendeten Tagnamen den jeweiligen Elementen der CQML-Grammatik.
cqml-Tag
Das cqml-Tag ist das root-Tag eines gültigen CQML-XML-Dokumentes. Es enthält mindestens ein qualityCategory-Tag.
Qualitätskategorien
Ein qualityCategory-Tag <qualityCategory> enthält die Elemente resource, qualityCharacteristic,
quality, compoundProfile, qualityCategory und
Referenzen, wobei jedes Element beliebig häufig auftreten kann.
Jedes qualityCategory-Tag muß ein Attribut name haben, welches den Namen der Kategorie festlegt und im gesamten Dokument für alle
Qualitätskategorien eindeutig ist.
Referenzen
Es gibt Referenzen auf Ressourcen, Qualitätscharakteristiken, Qualitätsstatements, zusammengesetzte Profile und Qualitätskategorien:
<resourceReference>,<qualityCharacteristicReference>,<qualityReference>,<compoundProfileReference> und
<qualityCategoryReference>. Das jeweilige Tag muß die ID bzw. im Fall der Qualitätskategorie den Namen der referenzierten Struktur
enthalten. Diese Struktur muß sich im selben Dokument befinden.
Ressourcen
<resource> dient zum Definieren von Ressourcen. Es enthält mindestens ein qualityCharacteristic-Tag.
Es hat zwei Attribute: name und id.
Das name-Attribut ist optional und gibt einen Namen für die Ressource an. Das id-Attribut muß verwendet werden und einen innerhalb aller Ressourcen
des Dokuments eindeutigen Wert besitzen, welcher für Referenzen auf Ressourcen verwendet wird (siehe compoundProfile)
Qualitätscharakteristik
Mit <qualityCharacteristic> werden Qualitätscharakteristiken beschrieben. Es existieren zwei Attribute: name und id.
Das name-Attribut ist optional und gibt den
Namen der Characteristik an. Das id-Attribut ist nicht optional und muß für alle Charakteristiken eines Dokuments eindeutig sein. Es dient zur Identifizierung
der Charakteristik beim Ableiten von Charakteristiken und in Quality-Statements.
Als erstes Tag innerhalb einer Qualitätscharkteristik erscheint <parameters>, welches die Parameter einer Characteristik definiert, indem es für jeden
Parameter ein <parameter> enthält, welches ein <name> und ein <type> für den Namen und den Typ des Parameters hat.
Beispiel:
<parameters>
<parameters>
<name>myObject</name>
<type>Object</type>
</parameters>
<parameters>
<name>myParameter</name>
<type>ParameterType</type>
</parameters>
</parameters>
Weiterhin muß <qualityCharacteristic> entweder <simpleQualityCharacteristic> oder <specializedQualityCharacteristic> enthalten. Das
erste steht für eine normale Qualitätscharakteristik und letzteres für eine abgeleitete Charakteristik.
<simpleQualityCharacteristic> kann in zwei Varianten definiert werden:
-
enthält entweder eine funktionale Ableitung
(<functionalDerivation>)
-
die Beschreibung der Domäne (<domain>), optional statistische
Ableitungen (<statisticalDerivation>), optional eine OCLExpression, die den Wert der Charakteristik beschreibt,
(<values>), optional ein
composition-Tag, welches beschreibt, wie sich das Komposit einer solchen Charakteristik verhält, (<composition>)
und ein ebenfalls optionales
invariant-Tag zum angeben einer Invariante (<invariant>).
- oder kann auch leer sein
<specializedQualityCharacteristic> kann in drei Varianten definiert werden:
Außerdem enthält eine <specializedQualityCharacteristic> das Attribut extends, welches angibt, welche Qualitätscharakteristik erweitert wird. Diese
Charakteristik wir mittels ihrer ID (id-Attribut) identifiziert. Desweiteren gibt es das optionale Tag <actualParametersForExtended>, welches für jeden
Parameter, den die erweiterte Charakteristik hat, den aktuellen Wert innerhalb von <parameter> enthält.
Funktionale Ableitung
Eine funktionale Ableitung <functionalDerivation> besteht aus einer Menge von Qualitätscharakteristiken, welche jeweils durch <part>-Tag,
das jeweils die ID der entsprechenden Charakteristik enthält, angegeben werden.
Beispiel:
<functionalDerivation>
<part>Qualitätscharakteristik1ID</part>
<part>Qualitätscharakteristik2ID</part>
</functionalDerivation>
Statistische Ableitung
Die statistische Ableitung <statisticalDerivation> enthält beliebig viele der folgenden Elemente, aber mindestens eins:
- <maximum> als leeres Tag
- <minimum> als leeres Tag
- <range> als leeres Tag
- <mean> als leeres Tag
- <variance> als leeres Tag
- <standardDeviation> als leeres Tag
- <percentil> enthält das Perzentil, Beispiel: <percentil>90</percentil>
- <moment> enthält welches Moment gesucht ist, Beispiel: <moment>3</moment>
- <frequency> enthält entweder ein bestimmtes Element, welches im Tag <element> angegeben wird oder ein Intervall <range>
deren Häufigkeit ermittelt wird.
<element> enthält direkt den Wert. <range> besteht aus den beiden Tags
<lowerBound> und <upperBound>, welche die untere bzw. die obere Grenze des Intervalls enthalten. Sowohl
<lowerBound> als auch <upperBound> haben das Attribut including, welches die Werte true oder false annehmen
kann. true, wenn die Grenze Teil des Intervalls ist, false wenn nicht.
- <distribution> enthält ein Tag <name> in welchem der Name der Verteilung angegeben wird und optional ein
Tag <parameters>, welches die einzelnen Parameter der Verteilung enthält, indem für jeden Parameter ein Tag <parameter>
verwendet wird, welches den Wert desselben enthält.
Domain
<domain> kann eines der folgenden Elemente enthalten:
- <numeric>
enthält folgende Tags:
- <typeSpecification> - ist optional und spezifiziert numeric näher. Es können die Werte real,
integer oder natural verwendet werden
-
<bounds> - enthält zwei weitere Tags: <lowerBound> und <upperBound>, welche jeweils den Wert der oberen bzw.
unteren Grenze enthalten und ein Attribut including besitzen (true, wenn Grenze Teil des Intervalls, false wenn nicht). Diese
beiden Tags könnnen explizit nil gesetzt werden, um zu kennzeichnen, daß diese Grenze unendlich ist.
Das <numeric> besitzt ein optionales Attribut direction, welches angibt, ob größere oder kleinere Werte besser sind. Das Attribut
kann die Werte increasing oder decreasing annehmen.
- <set>
besteht aus einer Menge von <element>-Tags, welche jeweils ein mögliches Element der Menge enthalten.
- <orderedSet>
wie <set> enthält aber zusätlich noch ein Tag <order>, welches eine Ordnung auf den Elementen definiert, indem eine Menge von
Relationen <relation> angegeben wird. Eine Relation hat ein Attribut relationType, welches die Art der Relation bestimmt: less oder greater
und zwei Tags <leftElement> und <rightElement>, welche die beiden Elemente der Relation enthalten.
Beispiel:
<relation relationType="less">
<leftElement>1</leftElement>
<rightElement>2</rightElement>
</relation>
Außerdem hat <orderedSet> ein Attribut direction, welches angibt, ob größere oder kleinere Werte besser sind. Das Attribut
kann die Werte increasing oder decreasing annehmen.
- <enumeration>
besteht aus einer Menge von <element>-Tags, welche jeweils ein mögliches Element der Enumeration enthalten.
- <orderedEnumeration>
wie <enumeration> enthält aber zusätlich noch ein Tag <order>, welches eine Ordnung auf den Elementen definiert, indem eine Menge von
Relationen <relation> angegeben wird. Eine Relation hat ein Attribut, welches die Art der Relation bestimmt: less oder greater
und zwei Tags <leftElement> und <rightElement>, welche die beiden Elemente der Relation enthalten.
Beispiel:
<relation relationType="less">
<leftElement>1</leftElement>
<rightElement>2</rightElement>
</relation>
Außerdem hat <orderedEnumeration> ein Attribut direction, welches angibt, ob größere oder kleinere Werte besser sind. Das Attribut
kann die Werte increasing oder decreasing annehmen.
Desweiteren hat das domain-Tag ein optionals Attribut unity mit welchem der Domäne eine Einheit zugewiesen werden kann.
Values
<values> enthält einen String
Composition
Das Tag <composition> enthält mindestens eines der folgenden Tags:
- <parallel-and>
- <parallel-or>
- <sequential>
Diese Tags enthalten einen String, welcher das Ergebnis für die jeweilige Komposition beschreibt.
invariant-Tag
Enthält einen String.
Qualities
Das quality-Tag <quality> beschreibt Qualitätsstatements. Es enthält folgende Tags:
- <parameters> hier werden die Parameter eines Qualitätsstatements spezifiziert (analog zum parameters-Tag
einer Qualiätscharakteristik). Dieses Element ist optional
- <constraints> werden hier beschrieben
- <invariant> enthält einen String.
Außerdem enthält es folgende Attribute:
- name ist optional und gibt den Namen des Statements an
- id identifiziert das Qualitätsstatement innerhalb des ganzen Dokuments eindeutig
- extends hiermit kann die ID eines Qualitätsstatements angegeben werden, welches erweitert werden soll
Constraints
<constraints> enthält mehrere Constraints, wobei es zwei Arten von Constraints gibt:
einfache <simpleConstraint> und qualifizierte <qualifiedConstraints>.
Ein <simpleConstraint> enthält eine Menge von <singleConstraint>-Tags (als oder-verknüpft zu interpretieren) und
ein Attribut qualificationType, welches die Werte guranteed oder best-effort annehmen kann.
Ein <qualifiedConstraint> enthält einen <singleConstraint>, ein <limit>-Tag, welches einen Grenzwert enthält,
ein <type>Tag, welches die Werte threshold oder compulsory annehmen kann und angibt wie bei überschreiten des
Grenzwertes vorzugehen ist. Außerdem hat <qualifiedConstraint> ein Attribut
qualificationType, welches immer den Wert best-effort hat.
Ein <singleConstraint> enthält folgende Tags:
- <characteristic>, welches wiederum ein Tag <qualityCharacteristicID> hat, womit eine bestimmte Qualitätscharakteristik mittels ihrer ID
referenziert wird und ein Tag <parameters>, welche die an die Qualitätscharakteristik übergebenen Parameter enthält,
wobei für jeden Parameter ein <parameter>-Tag verwendet wird. Die Parameter müssen in der Reihenfolge ihrer Definition übergeben werden.
- <statisticalDerivation> ist optional und enthält eines der in statistische Ableitung beschriebenen
Elemente.
- <relation> gibt die verwendete Relation an und kann folgende Werte annehmen:
greater, less, equal, greater_equal und less_equal.
- <value> enthält den zu verwendenden Grenzwert.
Beispiel:
CQML:
best-effort frameOutput(f>25)
XML:
<singleConstraint>
<characteristic>
<qualityCharacteristicID>frameOutput</qualityCharacteristicID>
<parameters>
<parameter>f</parameter>
</parameters>
</characteristic>
<relation>less</relation>
<value>/25</values>
</singleConstraint>
compoundProfile-Tag
Ein compoundProfile<compoundProfile> enthält folgende Elemente:
Außerdem gibt es folgende Attribute:
- name gibt den Namen des Profile an und ist optional
- id ist eine im ganzen Dokument für alle Profile eindeutige ID
- component gibt an, für welche Komponente dieses Profil gilt, wobei es pro Qualitätskategorie für jede
Komponente nur ein Profil geben darf
- extends ist optional und gibt an, welches Profil erweitert wird
Profile
Ein <profile>-Tag hat ein Attribut name, welches innerhalb eines compoundProfile eindeutig sein muß und folgende Elemente,
welche alle optional sind:
Expectations
Das <expectations>-Tag enthält ein <and>, welches mehrere <or>-Tags enthält (konjunktive Normalform). Die <or>-Tags enthalten
mehrere <expectation>-Tags, welche folgende Tags enthalten:
- <qualityID> verweist auf ein Qualitätsstatement, welches die Komponente benötigt.
- <parameters> hier werden in <parameter>-Tags an das Qualitätsstatement zu übergebende Parameter aufgelistet.
Offers
Das <offers>-Tag enthält ein <and>, welches mehrere <or>-Tags enthält (konjunktive Normalform). Die <or>-Tags enthalten
mehrere <offer>-Tags, welche folgende Tags enthalten:
- <qualityID> verweist auf ein Qualitätsstatement, welches die Komponente anbietet.
- <parameters> hier werden in <parameter>-Tags an das Qualitätsstatement zu übergebende Parameter aufgelistet.
Invariante
<invariant> enthält einen String.
Ressourcen
<resources> enthält ein <or>-Tag, welches mehrere <and>-Tags enthält (disjunktive Normalform).
Innerhalb der <and>-Tags befinden sich mehrere <requiredResource>-Tags, welche folgende Elemente enthalten:
- <qualityID> verweist auf ein Qualitätsstatement, welches eine bestimmte Qualität für eine Ressource definiert.
- <resourceID> verweist auf die verwendete Ressource.
Transitionen
Das <transistions>-Tag enthält mehrere <transistion>-Tags, welche ein Tag <methodCalls> und zwei optionale Attribute from
und to haben. Die Attribute enthalten je einen Namen von einem im aktuellen <compoundProfil> definierten Profil. Wenn ein Attribut nicht
verwendet wird bedeutet das für diese Seite der Transition any.
<methodCalls> enthält ein <method>-Tag, welches den Namen der aufzurufenden Methode enthält, und ein optionales
<parameters>-Tag, welches mehrere <parameter>-Tags enthält, in welchen die zu übergebenden Parameter enthalten sind.
Precedence
<precedence> enthält mehrere <profile>-Tags, welche je einen Namen von einem im aktuellen <compoundProfil> definierten Profil
enthalten. Diese Liste gibt die Vorrangreihenfolge der Profile an.