Bewertung der Qualität objektorientierter Entwürfe - Worte-Projekt
Bewertung der Qualität objektorientierter Entwürfe - Worte-Projekt
Bewertung der Qualität objektorientierter Entwürfe - Worte-Projekt
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
A.9 Theoretische Validierung 199<br />
A.9 Theoretische Validierung<br />
Bevor die objektiven Metriken angewendet werden, sollten sie theoretisch validiert<br />
sein. Die Metriken zu Knappheit, Strukturiertheit und Entkopplung in QOOD lassen<br />
sich als Komplexitätsmetriken auffassen, weshalb sich das Axiomensystem von Weyuker<br />
(1988) für Komplexitätsmetriken auf sie anwenden lässt. Zusätzlich gibt es noch<br />
ein Axiomensystem vom Briand et al. (1999) für Kopplungsmetriken, die spezifisch<br />
für die Metriken <strong>der</strong> Entkopplung betrachtet werden können.<br />
12.5.1 Komplexitätsmetriken<br />
Weyuker (1988) hat eine Liste von neun Axiomen publiziert, die für Komplexitätsmetriken,<br />
die Programme auf syntaktischer Basis bewerten, gelten sollten. Sei m eine<br />
Komplexitätsmetrik und P, Q, R seien Programme. Dann muss gelten:<br />
Axiom W1. Es muss Programme geben, die unterschiedliche Komplexität besitzen.<br />
Damit sollen Metriken ausgeschlossen werden, die allen Programmen die gleiche<br />
Komplexität zuweisen.<br />
∃ P, Q: m(P) ≠ m(Q)<br />
Axiom W2. Die Anzahl <strong>der</strong> Programme, welche die gleiche Komplexität besitzen,<br />
muss endlich sein. Damit wird eine feinere Unterscheidung in Komplexitätsklassen<br />
gefor<strong>der</strong>t als bei Axiom W1.<br />
∀ c ≥ 0: |{P | m(P) = c}| < ∞<br />
Axiom W3. Es muss Programme geben, welche die gleiche Komplexität besitzen.<br />
Damit soll (als Gegenpol zu Axiom W2) eine zu feine Klassifikation (z. B. eine Gödelisierung)<br />
ausgeschlossen werden.<br />
∃ P, Q: P ≠ Q ∧ m(P) = m(Q)<br />
Axiom W4. Es muss funktional äquivalente Programme geben, die unterschiedliche<br />
Komplexität besitzen. Damit soll sichergestellt werden, dass die Komplexität <strong>der</strong><br />
Implementierung und nicht die <strong>der</strong> implementierten Funktion gemessen wird.<br />
∃ P, Q: P ≡ Q ∧ m(P) ≠ m(Q) (≡ist die funktionale Äquivalenz)<br />
Axiom W5. Werden zwei Programme kombiniert, muss die Komplexität des Ganzen<br />
mindestens so groß sein wie die seiner Teile.<br />
∀ P, Q: m(P) ≤ m(P;Q) ∧ m(Q) ≤ m(P;Q) (; kombiniert zwei Programme)<br />
Axiom W6. Wird ein Programm mit zwei verschiedenen Programmen gleicher Komplexität<br />
kombiniert, können die Komplexitäten <strong>der</strong> Resultate unterschiedlich sein.<br />
Das Axiom soll sicherstellen, dass es mindestens einen solchen Fall je Kombinationsreihenfolge<br />
gibt.<br />
a) ∃ P, Q, R: m(P) = m(Q) ∧ m(P;R) ≠ m(Q;R)<br />
b) ∃ P, Q, R: m(P) = m(Q) ∧ m(R;P) ≠ m(R;Q)<br />
Axiom W7. Werden die Anweisungen eines Programms permutiert, kann sich die<br />
Komplexität än<strong>der</strong>n (sie muss aber nicht). Daher wird gefor<strong>der</strong>t, dass es eine Permutation<br />
eines Programms geben muss, die eine an<strong>der</strong>e Komplexität hat als das Programm<br />
selbst. Damit wird aber von allen Komplexitätsmetriken verlangt, dass sie