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.
192 A Metriken für QOOD<br />
NCS (number of classes in the system)<br />
NCS(S) = |C|<br />
NIS (number of interfaces in the system)<br />
NIS(S) = |I|<br />
NPS (number of packages in the system)<br />
NPS(S) = |P| - 1 (da S in P enthalten ist, ist 1 abzuziehen)<br />
Jede Eigenschaft, ob vererbt o<strong>der</strong> nicht, wird bei den Metriken NAS und NOS grundsätzlich<br />
nur einmal gezählt. Deshalb kann man hier nur nach Sichtbarkeitsbereich<br />
und nach Zugehörigkeit zu Klasse o<strong>der</strong> Objekt verfeinern (analog zu NAC und<br />
NOC). NCS, NIS und NPS können nach Sichtbarkeitsbereich verfeinert werden (analog<br />
zu NCP, NIP und NPP). Bei <strong>der</strong> Metrik NCS kann man auch nach abstrakten und<br />
konkreten Klassen verfeinern (analog zu NCP); diese Verfeinerung ist mit <strong>der</strong> nach<br />
Sichtbarkeitsbereich kombinierbar.<br />
A.2 Strukturiertheit<br />
Die Messung <strong>der</strong> Strukturiertheit konzentriert sich hier auf die Form <strong>der</strong> hierarchischen<br />
Strukturen, d. h. <strong>der</strong> Vererbungshierarchie <strong>der</strong> Klassen/Interfaces und <strong>der</strong><br />
Schachtelungshierarchie <strong>der</strong> Pakete. Die reine Anzahl an Bestandteilen <strong>der</strong> Hierarchien<br />
wird bei <strong>der</strong> Knappheit betrachtet, die Verknüpfung <strong>der</strong> Bestandteile untereinan<strong>der</strong><br />
bei <strong>der</strong> Entkopplung.<br />
Als weitere Hierarchie könnte noch die Aggregationsstruktur betrachtet werden.<br />
Genero et al. (2000) schlagen entsprechende Metriken vor. Da es aber noch keine praktischen<br />
Erfahrungen mit diesen Metriken gibt, werden sie hier nicht berücksichtigt.<br />
Klasse/Interface: Vererbung<br />
Zur Strukturiertheit tragen übersichtliche Baumstrukturen bei <strong>der</strong> Vererbung bei. Für<br />
Klassen kann die Tiefe in <strong>der</strong> Vererbungshierarchie (nach Chidamber und Kemerer,<br />
1994, die Länge des längsten Pfads zur Wurzel <strong>der</strong> Hierarchie) bestimmt werden. Je<br />
größer die Messwerte werden, desto schlechter wird die Strukturiertheit. 1<br />
Die Definition von DITC (wie auch nachher von DNHP) ist rekursiv, weil sie sich aufgrund<br />
<strong>der</strong> rekursiven Struktur <strong>der</strong> Hierarchie so am leichtesten ausdrücken lässt.<br />
DITC (depth of inheritance tree of a class)<br />
DITC(c) = 0 für Wurzelklassen, d. h. Klassen ohne Oberklasse (NEEC l (c) = 0), sonst<br />
DITC(c) = 1+max d∈C∪I: extends(c,d) {DITC(d)}<br />
1. Der Zusammenhang zwischen DITC und <strong>der</strong> Strukturiertheit ist eigentlich intuitiv klar. Empirische<br />
Untersuchungen kamen interessanterweise aber zu unterschiedlichen Resultaten. So ergab sich in<br />
einer Untersuchung, dass ein System mit Vererbung leichter zu warten ist als ein funktional gleiches<br />
ohne Vererbung (Cartwright, 1998), in einer an<strong>der</strong>en war es umgekehrt (Daly et al., 1996). Dabei<br />
können aber auch grundsätzliche Schwierigkeiten <strong>der</strong> Experimentteilnehmer mit Vererbung die<br />
Ursache gewesen sein. El Eman und Melo (2001) geben eine Übersicht über die wi<strong>der</strong>sprüchlichen<br />
Ergebnisse <strong>der</strong> Experimente in diesem Bereich. In ihrer Untersuchung kommen sie zu dem Schluss,<br />
dass DITC ein guter Indikator für die Fehleranfälligkeit einer Klasse ist (aufgrund geringer Verständlichkeit).