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

204 B Fragebögen für QOOD Darstellung Die Bedingungen der Fragen werden durch Prädikate formalisiert. Die Prädikate können einen impliziten Parameter this verwenden, der den aktuellen Bewertungsgegenstand bezeichnet. Die Gewichte weniger wichtig, wichtig und sehr wichtig werden durch Sternchen visualisiert (* für weniger wichtig, ** für wichtig und *** für sehr wichtig). Ist eine Frage automatisch beantwortbar, wird in der letzten Spalte ein Häkchen gesetzt. Bei manche Fragen geht es um das Fehlen bestimmter Eigenschaften, z. B. dass keine zyklischen Abhängigkeiten vorhanden sind. Bei der Antwort soll – entgegen dem Sprachgebrauch – mit ja geantwortet werden, wenn die Aussage zutrifft und mit nein, wenn die Aussage nicht zutrifft. B.1 Knappheit Da Knappheit geringe Größe bedeutet, enthalten die Fragebögen verschiedene Fragen nach unnötigen und redundanten Entwurfsteilen. Klasse/Interface Bedingung Fragetext Antwortskala Gewicht auto. – Ist das Vorhandensein der Klasse notwendig? 0 = nein, 1 = ja *** this∈C Enthält die Klasse nur die nötigen Attribute? (z. B. keine nicht (mehr) verwendeten oder für die Verantwortlichkeiten der Klasse nicht relevanten) NOC(this) > 0 NOC(this) > 0 NOC(this) > 0 NOC(this) > 0 NEEC(this) > 0 this∈C ∧ this.isAbstract Enthält die Klasse nur die nötigen Operationen? (z. B. keine nicht (mehr) verwendeten oder für die Verantwortlichkeiten der Klasse nicht relevanten) Enthält die Klasse keine überflüssigen Operationen? (z. B. überladene Operationen oder andere „Komfort-Operationen“) Gibt es keine ähnlichen Operationen in anderen Klassen? Wird die Implementierung vermutlich keinen redundanten Code enthalten? 0 = nein, 1 = ja 0 = nein, 1 = ja 0 = nein, 1 = ja 0 = nein, 1 = ja Benötigt jede Operationen alle ihre Parameter? 0 = nein, 1 = ja Fügt die Unterklasse neue Attribute oder Operationen hinzu? Hat die abstrakte Klasse mindestens eine Unterklasse? this∈I Wird das Interface realisiert oder von anderen Interfaces geerbt? Fragebogen B-1: Knappheit Klasse/Interface 0 = nein, 1 = ja 0 = nein, 1 = ja 0 = nein, 1 = ja ** ** * ** ** ** ✔ *** ✔ *** ✔

B.2 Strukturiertheit 205 Paket Bedingung Fragetext Antwortskala Gewicht auto. – Enthält das Paket mindestens eine Komponente? 0 = nein, 1 = ja *** ✔ – Ist das Vorhandensein des Paket notwendig? 0 = nein, 1 = ja *** Fragebogen B-2: Knappheit Paket System Bedingung Fragetext Antwortskala Gewicht auto. – Gibt es keine zwei oder mehr Klassen, welche die gleiche Aufgabe haben, also bis auf eine überflüssig sind? – Gibt es keine zwei oder mehr Pakete, welche die gleiche Aufgabe haben, also bis auf eines überflüssig sind? – Gibt keine zwei oder mehr Unterklassen einer Klasse, die ähnliche oder gleiche Eigenschaften haben, die in die Oberklasse verschoben werden sollten? Fragebogen B-3: Knappheit System B.2 Strukturiertheit Die Fragen beschäftigen sich mit der Pakethierarchie und der Vererbungshierarchie. Klasse/Interface 0 = nein, 1 = ja 0 = nein, 1 = ja 0 = nein, 1 = ja Bedingung Fragetext Antwortskala Gewicht auto. – Ist die Klasse in der Vererbungshierarchie höchstens 6 Stufen tief? 0 = nein, 1 = ja – Hat die Klasse höchstens 9 Unterklassen? 0 = nein, 1 = ja NAEC(this) = 1 Hat die Klasse nur eine Unterklasse, aber es gibt keinen Sinn, die beiden zu verschmelzen? – Hat die Klasse keine Unterklassen, die eigentlich Instanzen der Klasse sein sollten? Fragebogen B-4: Strukturiertheit Klasse/Interface 0 = nein, 1 = ja 0 = nein, 1 = ja *** *** *** ** ✔ ** ✔ * **

204 B Fragebögen für QOOD<br />

Darstellung<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 />

Bei manche Fragen geht es um das Fehlen bestimmter Eigenschaften, z. B. dass keine<br />

zyklischen Abhängigkeiten vorhanden sind. Bei <strong>der</strong> Antwort soll – entgegen dem<br />

Sprachgebrauch – mit ja geantwortet werden, wenn die Aussage zutrifft und mit nein,<br />

wenn die Aussage nicht zutrifft.<br />

B.1 Knappheit<br />

Da Knappheit geringe Größe bedeutet, enthalten die Fragebögen verschiedene Fragen<br />

nach unnötigen und redundanten Entwurfsteilen.<br />

Klasse/Interface<br />

Bedingung Fragetext Antwortskala Gewicht auto.<br />

– Ist das Vorhandensein <strong>der</strong> Klasse notwendig? 0 = nein,<br />

1 = ja<br />

***<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(this)<br />

> 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 />

0 = nein,<br />

1 = ja<br />

0 = nein,<br />

1 = ja<br />

0 = nein,<br />

1 = ja<br />

0 = nein,<br />

1 = ja<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 />

Fragebogen B-1: Knappheit Klasse/Interface<br />

0 = nein,<br />

1 = ja<br />

0 = nein,<br />

1 = ja<br />

0 = nein,<br />

1 = ja<br />

**<br />

**<br />

*<br />

**<br />

**<br />

** ✔<br />

*** ✔<br />

*** ✔

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!