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:

<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:
Domain
<domain> kann eines der folgenden Elemente enthalten: 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: 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: Außerdem enthält es folgende Attribute:
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:

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:

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:

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:

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:

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.