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