30.10.2013 Aufrufe

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

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

A.1 Knappheit 191<br />

Ihre Verwaltung muss in <strong>der</strong> Klasse implementiert werden, so dass jede Beziehung<br />

die Knappheit verringert. Die entsprechende Metrik NEDC und ihre Verfeinerungen<br />

sind allerdings bei <strong>der</strong> Entkopplung (siehe Abschnitt A.3) definiert, da die Beziehungen<br />

dort eine wichtigere Rolle spielen.<br />

Paket<br />

Auf Paketebene zählt man die (direkt) in einem Paket enthaltenen Klassen, Interfaces<br />

und Pakete.<br />

NCP (number of classes in a package)<br />

NCP(p) = |{c∈C: contains(p,c)}|<br />

NIP (number of interfaces in a package)<br />

NIP(p) = |{i∈I: contains(p,i)}|<br />

NPP (number of packages in a package)<br />

NPP(p) = |{q∈P: contains(p,q)}|<br />

Die drei Metriken lassen sich verfeinern, indem <strong>der</strong> Sichtbarkeitsbereich (public, protected,<br />

private) betrachtet wird. Die Sichtbarkeit eines Elements in einem Paket sollte<br />

immer so eingeschränkt wie möglich gewählt werden, daher gibt diese Verfeinerung<br />

Sinn. Sie wird hier am Beispiel von NCP demonstriert.<br />

NCP1 (number of public classes in a package)<br />

NCP1 (p) = |{c∈C: contains(p,c) ∧ c.visibility = public}|<br />

NCP2 (number of protected classes in a package)<br />

NCP2 (p) = |{c∈C: contains(p,c) ∧ c.visibility = protected}|<br />

NCP3 (number of private classes in a package)<br />

NCP3 (p) = |{c∈C: contains(p,c) ∧ c.visibility = private}|<br />

Die Metrik NCP kann auch verfeinert werden, indem abstrakte und konkrete Klassen<br />

unterschieden werden. Abstrakte Klassen dienen (wie Interfaces) vornehmlich <strong>der</strong><br />

Modellierung von Schnittstellen, haben also einen geringeren Implementierungsaufwand<br />

als konkrete Klassen und sind in <strong>der</strong> Regel stabiler, d. h. sie haben eine geringere<br />

Än<strong>der</strong>ungswahrscheinlichkeit.<br />

NCPa (number of abstract classes in a package)<br />

NCPa (p) = |{c∈C: contains(p,c) ∧ c.isAbstract}|<br />

NCPc (number of concrete classes in a package)<br />

NCPc (p) = |{c∈C: contains(p,c) ∧¬c.isAbstract}|<br />

Die beiden Verfeinerungen von NCP lassen sich auch kombinieren.<br />

System<br />

Auf Systemebene zählt man alle Attribute, Operationen, Klassen, Interfaces und<br />

Pakete.<br />

NAS (number of attributes in the system)<br />

NAS(S) = |A|<br />

NOS (number of operations in the system)<br />

NOS(S) = |O|

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!