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
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.
- Seite 155 und 156: 10.2 Anwendung des Qualitätsmodell
- Seite 157 und 158: 10.2 Anwendung des Qualitätsmodell
- Seite 159 und 160: 10.3 Besonderheiten bei Mustern 149
- Seite 161 und 162: Kapitel 11 Werkzeugunterstützung H
- Seite 163 und 164: 11.1 Werkzeuge aus anderen Arbeiten
- Seite 165 und 166: 11.2 Selbst realisierte Werkzeuge 1
- Seite 167 und 168: 11.2 Selbst realisierte Werkzeuge 1
- Seite 169 und 170: 11.3 Ausblick: Ein ideales Werkzeug
- Seite 171 und 172: Kapitel 12 Zusammenfassung und Ausb
- Seite 173 und 174: 12.2 Bewertung des Ansatzes 163 Die
- Seite 175 und 176: 12.3 Vergleich mit anderen Arbeiten
- Seite 177 und 178: 12.4 Ausblick 167 Entwerfen QOOD ka
- Seite 179 und 180: Literatur Abowd et al. (1996) Abowd
- Seite 181 und 182: Beyer et al. (2000) Beyer, D.; Lewe
- Seite 183 und 184: Cavano, McCall (1978) Cavano, J.; M
- Seite 185 und 186: Dißmann (1990) Dißmann, S.: Anfor
- Seite 187 und 188: Gursaran, Roy (2002) Gursaran; Roy,
- Seite 189 und 190: Koenig (1995) Koenig, A.: Patterns
- Seite 191 und 192: McCabe (1976) McCabe, T.: A Complex
- Seite 193 und 194: Rising (2000) Rising, L.: The Patte
- Seite 195 und 196: Wand (1989) Wand, Y.: A Proposal fo
- Seite 197 und 198: Akronyme Allgemeine Akronyme CMM Ca
- Seite 199 und 200: Anhang A Metriken für QOOD Dieser
- Seite 201 und 202: A.1 Knappheit 191 Ihre Verwaltung m
- Seite 203 und 204: A.3 Entkopplung 193 Neben der Tiefe
- Seite 205: A.3 Entkopplung 195 NEDC p (number
- Seite 209 und 210: A.9 Theoretische Validierung 199 A.
- Seite 211 und 212: A.9 Theoretische Validierung 201 Ax
- Seite 213 und 214: Anhang B Fragebögen für QOOD Dies
- Seite 215 und 216: B.2 Strukturiertheit 205 Paket Bedi
- Seite 217 und 218: B.3 Entkopplung 207 Klasse/Interfac
- Seite 219 und 220: B.4 Zusammenhalt 209 System Bedingu
- Seite 221 und 222: B.6 Dokumentierung 211 Klasse/Inter
- Seite 223 und 224: B.7 Verfolgbarkeit 213 System Bedin
- Seite 225 und 226: Anhang C Dokumente zum Softwareprak
- Seite 227 und 228: C.1 Aufgabenstellung 217 muss der P
- Seite 229 und 230: C.1 Aufgabenstellung 219 dann Ihr H
- Seite 231 und 232: C.2 Anforderungen 221 C.2.4 Fahrgas
- Seite 233 und 234: C.2 Anforderungen 223 alle weiteren
- Seite 235 und 236: C.3 Begriffslexikon 225 Endhalteste
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.