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.
130 9 Quantifizierung des <strong>Qualität</strong>smodells<br />
Interface verdeutlicht (vgl. Abbildung 9-5). Da Knappheit geringe Größe bedeutet,<br />
enthält <strong>der</strong> Fragebogen Fragen nach unnötigen und redundanten Entwurfsteilen.<br />
Die Bedingungen <strong>der</strong> Fragen werden durch Prädikate formalisiert. Die Prädikate können<br />
einen impliziten Parameter this verwenden, <strong>der</strong> den aktuellen <strong>Bewertung</strong>sgegenstand<br />
bezeichnet. Die Gewichte weniger wichtig, wichtig und sehr wichtig werden<br />
durch Sternchen visualisiert (* für weniger wichtig, ** für wichtig und *** für sehr<br />
wichtig). Ist eine Frage automatisch beantwortbar, wird in <strong>der</strong> letzten Spalte ein Häkchen<br />
gesetzt.<br />
Bedingung Fragetext Antwortskala Gewicht auto.<br />
– Ist das Vorhandensein <strong>der</strong> Klasse notwendig? 0 = nein,<br />
1 = ja<br />
this∈C Enthält die Klasse nur die nötigen Attribute?<br />
(z. B. keine nicht (mehr) verwendeten o<strong>der</strong> für die<br />
Verantwortlichkeiten <strong>der</strong> Klasse nicht relevanten)<br />
NOC(this)<br />
> 0<br />
NOC(this)<br />
> 0<br />
NOC(this)<br />
> 0<br />
NOC(this)<br />
> 0<br />
NEEC<br />
(this) > 0<br />
this∈C ∧<br />
this.isAbstract<br />
Enthält die Klasse nur die nötigen Operationen?<br />
(z. B. keine nicht (mehr) verwendeten o<strong>der</strong> für die<br />
Verantwortlichkeiten <strong>der</strong> Klasse nicht relevanten)<br />
Enthält die Klasse keine überflüssigen Operationen?<br />
(z. B. überladene Operationen o<strong>der</strong> an<strong>der</strong>e<br />
„Komfort-Operationen“)<br />
Gibt es keine ähnlichen Operationen in an<strong>der</strong>en<br />
Klassen? Wird die Implementierung vermutlich<br />
keinen redundanten Code enthalten?<br />
9.4.4 Auswertung<br />
0 = nein,<br />
1 = ja<br />
0 = nein,<br />
1 = ja<br />
0 = nein,<br />
1 = ja<br />
0 = nein,<br />
1 = ja (Aussage<br />
trifft zu)<br />
Benötigt jede Operationen alle ihre Parameter? 0 = nein,<br />
1 = ja<br />
Fügt die Unterklasse neue Attribute o<strong>der</strong> Operationen<br />
hinzu?<br />
Hat die abstrakte Klasse mindestens eine Unterklasse?<br />
this∈I Wird das Interface realisiert o<strong>der</strong> von an<strong>der</strong>en<br />
Interfaces geerbt?<br />
0 = nein,<br />
1 = ja<br />
0 = nein,<br />
1 = ja<br />
0 = nein,<br />
1 = ja<br />
Bei den Fragebögen lässt sich aus den Antworten ein <strong>Bewertung</strong>svorschlag generieren.<br />
Das Verfahren dazu ähnelt dem zur Berechnung eines <strong>Bewertung</strong>svorschlags aus<br />
objektiven Metriken. Eine Normierung ist hier allerdings nicht erfor<strong>der</strong>lich, weil die<br />
Fragen so formuliert sind, dass eine Antwort mit ja (o<strong>der</strong> eine hohe Zustimmung)<br />
positiv für die <strong>Qualität</strong> ist, und weil <strong>der</strong> Wertebereich für die Antwort bereits [0;1] ist.<br />
Ausgewertet werden nur anwendbare Fragen, d. h. Fragen, <strong>der</strong>en Bedingung erfüllt<br />
ist. Nicht anwendbare Fragen wirken sich somit nicht auf den <strong>Bewertung</strong>svorschlag<br />
aus. Zur Auswertung wird die Antwort auf jede anwendbare Frage mit dem Gewicht<br />
multipliziert und das Resultat für alle Fragen aufsummiert. Dann wird durch Summe<br />
***<br />
**<br />
**<br />
*<br />
**<br />
**<br />
** ✔<br />
*** ✔<br />
*** ✔<br />
Abbildung 9-5: Fragebogen für Kriterium Knappheit, Ebene Klasse/Interface