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

worte.projekt.de
von worte.projekt.de Mehr von diesem Publisher
30.10.2013 Aufrufe

196 A Metriken für QOOD der Anzahl der Beziehungen. Alle in diesem Abschnitt definierten Metriken sind zum Kriterium Entkopplung negativ korreliert. NEDP (number of efferent dependencies of a package) NEDP(p) = Σq∈P\{p} depends_on*(p,q).weight Zusätzlich kann noch gemessen werden, wie stark andere Pakete an ein Paket gekoppelt sind (also die Gegenrichtung zur bisher betrachteten). NADP (number of afferent dependencies of a package) NADP(p) = Σq∈P\{p} depends_on*(q,p).weight Diese Metriken berücksichtigen alle Abhängigkeiten, auch geerbte. Dadurch wird die tatsächliche Vernetzung deutlicher, als wenn nur die direkten Abhängigkeiten betrachtet werden. Eine mögliche Verfeinerung betrachtet nur die direkten Abhängigkeiten, hier gezeigt am Beispiel von NEDP: NEDPl (number of local efferent dependencies of a package) NEDPl (p) = Σq∈P\{p} depends_on(p,q).weight Ist man nur an der Anzahl der Pakete interessiert, an die ein Paket gekoppelt ist, so kann man alternativ zu NEDP und NADP auch die folgenden Metriken verwenden: NECP (number of efferently coupled packages of a package) NECP(p) = |{q∈P\{p}: depends_on*(p,q))}| NACP (number of afferently coupled packages of a package) NACP(p) = |{q∈P\{p}: depends_on*(q,p))}| Auch für diese Metriken lässt sich die oben gezeigte Verfeinerung mit der Beschränkung auf direkte Abhängigkeiten anwenden. System Auf Systemebene lassen sich keine Metriken angeben, die eine wirklich neue Sicht zur Kopplung ermöglichen. Denkbar sind zwar Durchschnitte o. Ä. der Kopplungsmetriken auf Klassen- und Paketebene, doch kann diese Form der Aggregation genauso gut auf der Ebene der subjektiven Metriken vorgenommen werden (vgl. Abschnitt 9.3.4). Daher wird darauf verzichtet, objektive Metriken anzugeben. A.4 Zusammenhalt Zusammenhalt ist in hohem Maße eine semantische Eigenschaft, die sich schlecht automatisch (d. h. auf syntaktischer Ebene) erfassen lässt. Klasse/Interface In der Literatur vorgeschlagene Zusammenhaltsmetriken für Klassen benötigen detaillierte Entwurfsinformation (vgl. z. B. Bieman, Kang, 1995, 1998; Chidamber, Kemerer, 1994; Briand et al., 1997). Im Wesentlichen stützen sich diese Metriken auf Gemeinsamkeiten zwischen den Methoden einer Klasse, z. B. bei LCOM (Chidamber, Kemerer, 1994) auf Zugriffe zweier Methoden auf die gleichen Attribute. Solch detaillierte Entwurfsinformation ist aber im UML-Modell und damit in ODEM nicht vorhanden.

A.5 Einheitlichkeit 197 Ein alternativer Vorschlag zur Messung des Zusammenhalts, der auf der Basis von ODEM möglich ist, stammt von Bansiya et al. (1999), die dazu Parametertypen der Operationen der Klasse heranzuziehen. Die Metrik CAMC (Cohesion Among Methods in Class) berechnet die durchschnittliche Überschneidung der Parametertypen einer Methode mit der Gesamtmenge der Parametertypen. Einen ähnlichen Vorschlag gibt es auch von Chen und Lu (1993). Beide Vorschläge beruhen allerdings auf der fragwürdigen Annahme, dass Operationen mit gemeinsamen Parametertypen auf höheren Zusammenhalt hindeuten. Die empirische Validierung der Vorschläge vermag jedenfalls nicht zu überzeugen. Mangels geeigneter objektiver Metriken muss daher für den Zusammenhalt auf eine subjektive Metrik zurückgegriffen werden. Paket Auf Paketebene wurde bisher nur ein Indikator für den Zusammenhalt der Klassen und Interfaces in einem Paket vorgeschlagen. Martin (1995) führte die Metrik „relational cohesion“ ein, welche die Anzahl der Beziehungen der Modellelemente untereinander ins Verhältnis zur Gesamtzahl der Modellelemente setzt (vgl. Abschnitt 5.5.2). Die Metrik misst also eine normierte paketinterne Kopplung. Eigene Erfahrungen beim Einsatz dieser Metrik in Fallstudien haben allerdings ergeben, dass die Metrik kein geeigneter Indikator für den Zusammenhalt der Modellelemente innerhalb eines Pakets ist. Trotz hoher Werte kann es sein, dass das Paket in mehrere nur schwach verbundene Teile zerfällt. Daher kann bei hohen Werten nicht auf hohen Zusammenhalt geschlossen werden, sondern nur bei sehr geringen Werten auf geringen Zusammenhalt. Aus diesem Grund wird die Metrik hier nicht verwendet. Man ist also auf subjektive Metriken angewiesen. System Vorschläge für systemweite Zusammenhaltsmetriken gibt es bisher nicht. Außerdem ist unklar, was Zusammenhalt auf Systemebene eigentlich bedeutet. Um keine Lücke im Verfahren entstehen zu lassen, wird hier der systemweite Zusammenhalt als Gesamteindruck auf der Basis des Zusammenhalts der enthaltenen Pakete, Klassen und Interfaces interpretiert. Auch hier ist eine subjektive Metrik am sinnvollsten. A.5 Einheitlichkeit Die Einheitlichkeit ist eine überwiegend semantische Eigenschaft, weshalb auch hier auf subjektive Metriken zurückgegriffen werden muss. Je nach den Vorgaben aus den Namenskonventionen lassen sich gewisse Minimalanforderungen automatisch prüfen, z. B. eine minimale Bezeichnerlänge oder Lesbarkeitskriterien, die Buchstaben- Ziffern-Gemische wie X22Z1I verbieten. Solche Prüfungen liefern aber nur ein syntaktisches Bild. Der wichtigere semantische Aspekt kann nicht erfasst werden. Außerdem hängen die zu prüfenden Kriterien von den konkreten Richtlinien ab. Will man sie erfassen, ist das spezifische Modell um weitere objektive Metriken und Fragen (zu den Fragebögen) zu erweitern.

A.5 Einheitlichkeit 197<br />

Ein alternativer Vorschlag zur Messung des Zusammenhalts, <strong>der</strong> auf <strong>der</strong> Basis von<br />

ODEM möglich ist, stammt von Bansiya et al. (1999), die dazu Parametertypen <strong>der</strong><br />

Operationen <strong>der</strong> Klasse heranzuziehen. Die Metrik CAMC (Cohesion Among Methods<br />

in Class) berechnet die durchschnittliche Überschneidung <strong>der</strong> Parametertypen<br />

einer Methode mit <strong>der</strong> Gesamtmenge <strong>der</strong> Parametertypen. Einen ähnlichen Vorschlag<br />

gibt es auch von Chen und Lu (1993). Beide Vorschläge beruhen allerdings auf <strong>der</strong><br />

fragwürdigen Annahme, dass Operationen mit gemeinsamen Parametertypen auf<br />

höheren Zusammenhalt hindeuten. Die empirische Validierung <strong>der</strong> Vorschläge vermag<br />

jedenfalls nicht zu überzeugen. Mangels geeigneter objektiver Metriken muss<br />

daher für den Zusammenhalt auf eine subjektive Metrik zurückgegriffen werden.<br />

Paket<br />

Auf Paketebene wurde bisher nur ein Indikator für den Zusammenhalt <strong>der</strong> Klassen<br />

und Interfaces in einem Paket vorgeschlagen. Martin (1995) führte die Metrik<br />

„relational cohesion“ ein, welche die Anzahl <strong>der</strong> Beziehungen <strong>der</strong> Modellelemente<br />

untereinan<strong>der</strong> ins Verhältnis zur Gesamtzahl <strong>der</strong> Modellelemente setzt (vgl.<br />

Abschnitt 5.5.2). Die Metrik misst also eine normierte paketinterne Kopplung. Eigene<br />

Erfahrungen beim Einsatz dieser Metrik in Fallstudien haben allerdings ergeben, dass<br />

die Metrik kein geeigneter Indikator für den Zusammenhalt <strong>der</strong> Modellelemente<br />

innerhalb eines Pakets ist. Trotz hoher Werte kann es sein, dass das Paket in mehrere<br />

nur schwach verbundene Teile zerfällt. Daher kann bei hohen Werten nicht auf hohen<br />

Zusammenhalt geschlossen werden, son<strong>der</strong>n nur bei sehr geringen Werten auf geringen<br />

Zusammenhalt. Aus diesem Grund wird die Metrik hier nicht verwendet. Man ist<br />

also auf subjektive Metriken angewiesen.<br />

System<br />

Vorschläge für systemweite Zusammenhaltsmetriken gibt es bisher nicht. Außerdem<br />

ist unklar, was Zusammenhalt auf Systemebene eigentlich bedeutet. Um keine Lücke<br />

im Verfahren entstehen zu lassen, wird hier <strong>der</strong> systemweite Zusammenhalt als<br />

Gesamteindruck auf <strong>der</strong> Basis des Zusammenhalts <strong>der</strong> enthaltenen Pakete, Klassen<br />

und Interfaces interpretiert. Auch hier ist eine subjektive Metrik am sinnvollsten.<br />

A.5 Einheitlichkeit<br />

Die Einheitlichkeit ist eine überwiegend semantische Eigenschaft, weshalb auch hier<br />

auf subjektive Metriken zurückgegriffen werden muss. Je nach den Vorgaben aus den<br />

Namenskonventionen lassen sich gewisse Minimalanfor<strong>der</strong>ungen automatisch prüfen,<br />

z. B. eine minimale Bezeichnerlänge o<strong>der</strong> Lesbarkeitskriterien, die Buchstaben-<br />

Ziffern-Gemische wie X22Z1I verbieten. Solche Prüfungen liefern aber nur ein syntaktisches<br />

Bild. Der wichtigere semantische Aspekt kann nicht erfasst werden. Außerdem<br />

hängen die zu prüfenden Kriterien von den konkreten Richtlinien ab. Will man<br />

sie erfassen, ist das spezifische Modell um weitere objektive Metriken und Fragen (zu<br />

den Fragebögen) zu erweitern.

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!