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
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
7.4 Beispiele für OOD-<strong>Qualität</strong>smodelle 89<br />
7.4.1 Booch<br />
Booch (1994, S. 136ff.) gibt fünf wichtige Eigenschaften einer Abstraktion (d. h. einer<br />
Klasse) an. Lei<strong>der</strong> fehlen Messvorschriften für diese Eigenschaften, obwohl er sie als<br />
Metriken bezeichnet.<br />
Kopplung (coupling). Geringe Kopplung wird, wie beim strukturierten Entwurf,<br />
auch beim objektorientierten Entwurf angestrebt; die Module sind hier die Klassen.<br />
Es gibt zwei verschiedene Arten <strong>der</strong> Kopplung: durch Verwendung und durch Vererbung.<br />
Während die Kopplung durch Verwendung so gering wie möglich sein sollte,<br />
ist Vererbung an sich erwünscht. Die dadurch erzeugte Kopplung wird in Kauf<br />
genommen.<br />
Zusammenhalt (cohesion). Hoher Zusammenhalt ist ebenfalls erwünscht; es geht<br />
vor allem um den Zusammenhalt <strong>der</strong> Bestandteile (Attribute und Methoden) von<br />
Klassen.<br />
Angemessenheit (sufficiency). Eine Klasse ist angemessen, wenn sie genügend<br />
Eigenschaften einer Abstraktion umfasst, so dass eine sinnvolle und effiziente Verwendung<br />
<strong>der</strong> Komponente möglich ist. In <strong>der</strong> Regel wird dabei eine minimale<br />
Schnittstelle angestrebt, die dennoch sicherstellt, dass die Klasse im System verwendbar<br />
ist.<br />
Vollständigkeit (completeness). Eine Klasse ist vollständig, wenn sie alle relevanten<br />
Eigenschaften einer Abstraktion umfasst. Das bedeutet, dass eine allgemeine Schnittstelle<br />
erwünscht ist, welche die Wie<strong>der</strong>verwendung <strong>der</strong> Klasse in an<strong>der</strong>en Systemen<br />
erlaubt. Eine vollständige Schnittstelle ist angemessen, aber nicht minimal. Beim Klassenentwurf<br />
muss daher häufig ein Kompromiss zwischen Angemessenheit und Vollständigkeit<br />
eingegangen werden – zumal Booch davor warnt, Vollständigkeit zu<br />
übertreiben.<br />
Primitivität (primitiveness). Eine Methode einer Klasse ist primitiv, wenn sie nur mit<br />
direktem Zugriff auf die interne Repräsentation (die Attribute) effizient implementiert<br />
werden kann. Die Schnittstelle einer Klasse sollte möglichst nur aus primitiven<br />
Methoden bestehen. Eine Methode, die sich ausschließlich durch Aufruf primitiver<br />
Methoden realisieren lässt, sollte nur dann in die Klassenschnittstelle aufgenommen<br />
werden, wenn eine solche Implementierung nicht effizient genug ist. Ansonsten sollte<br />
sie in eine Service-Klasse ausgelagert werden. Dies trägt dazu bei, die Klassenschnittstelle<br />
schlank zu halten.<br />
7.4.2 Coad und Yourdon<br />
Coad und Yourdon (1991, Kap. 8) geben einige Kriterien an, die bei einer Entwurfsbewertung<br />
angewendet werden sollen. Ihrer Meinung nach werden Entwurfskriterien<br />
benötigt, um das Entwickeln eines schlechten Entwurfs zu verhin<strong>der</strong>n. Guter Entwurf<br />
bedeutet für sie eher, schlechte Eigenschaften zu vermeiden, als aus dem Stand einen<br />
perfekten Entwurf abzuliefern. Letzteres sei nämlich völlig unrealistisch.<br />
Kopplung (coupling). Wie Booch (1994) unterscheiden Coad und Yourdon zwei<br />
Arten <strong>der</strong> Kopplung: durch Interaktion (entspricht <strong>der</strong> Kopplung durch Verwendung)<br />
und durch Vererbung. Um eine geringe Interaktionskopplung zu erreichen,<br />
wird vorgeschlagen, die Anzahl <strong>der</strong> versendeten und empfangenen Nachrichten zu