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.
86 7 Entwurfsqualität<br />
Prinzip Beschreibung<br />
Sorge für schmale<br />
Schnittstellen<br />
(Martin, 1996d)<br />
Sorge für lose Kopplung<br />
(Stevens et al., 1974)<br />
Sorge für hohen<br />
Zusammenhalt<br />
(Stevens et al., 1974)<br />
Module sollen offen und<br />
geschlossen sein<br />
(Open-Closed-Principle,<br />
Meyer, 1997, S. 57;<br />
Martin, 1996a)<br />
Sorge bei Redefinition für<br />
den Erhalt <strong>der</strong> Semantik<br />
(Liskov Substitution Principle,<br />
Liskov, 1988;<br />
Martin, 1996b)<br />
Minimiere die Anzahl <strong>der</strong><br />
Objekte, mit denen ein<br />
Objekt interagiert<br />
(Law of Demeter, Lieberherr<br />
et al., 1988, 1989)<br />
In <strong>der</strong> Basisklasse sollen nur die für die eigentliche Abstraktion<br />
benötigten Methoden definiert sein. An<strong>der</strong>e Aspekte sollten durch<br />
separate Schnittstellen (z. B. durch Interfaces) definiert werden, die<br />
bei Bedarf von Subklassen zur Schnittstelle hinzugefügt werden<br />
können.<br />
Kopplung ist ein Maß für die Stärke <strong>der</strong> Verbindung (und damit <strong>der</strong><br />
Abhängigkeit) von Komponenten untereinan<strong>der</strong>. Angestrebt wird<br />
eine möglichst lose Kopplung von Komponenten. Damit steigt die<br />
Wahrscheinlichkeit, dass Än<strong>der</strong>ungen sich nur lokal auf eine Komponente<br />
auswirken und dadurch nicht auf an<strong>der</strong>e Komponenten<br />
ausstrahlen.<br />
Zusammenhalt (Kohäsion) ist ein Maß für die Stärke <strong>der</strong> Zusammengehörigkeit<br />
von Bestandteilen einer Komponente. Angestrebt<br />
wird ein möglichst hoher Zusammenhalt <strong>der</strong> Bestandteile. Damit<br />
steigt die Wahrscheinlichkeit, dass bei einer Än<strong>der</strong>ung in <strong>der</strong> Regel<br />
nur eine Komponente betroffen ist, da alle Aspekte einer Abstraktion<br />
an einem Ort zusammengefasst sind.<br />
Geschlossen bedeutet: Das Modul kann gefahrlos verwendet werden,<br />
da seine Schnittstelle stabil ist, d. h. sich nicht mehr än<strong>der</strong>t.<br />
Offen dagegen bedeutet: Das Modul kann problemlos erweitert<br />
werden. Das scheint zunächst wi<strong>der</strong>sprüchlich zu sein, ist aber realisierbar:<br />
Eine abstrakte Oberklasse (o<strong>der</strong> ein Interface) realisiert eine<br />
stabile (geschlossene) Schnittstelle. Konkrete (offene) Unterklassen<br />
implementieren sie (und können sie bei Bedarf erweitern).<br />
Jede Unterklasse U einer Klasse K muss für die durch K gegebene<br />
Schnittstelle dieselbe Semantik anbieten. Nur dann kann man bei<br />
<strong>der</strong> Verwendung <strong>der</strong> Schnittstelle einer Klasse sichergehen, dass<br />
sich das Programm gleich verhält, wenn an Stelle einer Instanz von<br />
K eine Instanz von U verwendet wird.<br />
In den Methoden einer Klasse dürfen nur Methoden <strong>der</strong> Klasse<br />
selbst, <strong>der</strong> Argumentobjekte o<strong>der</strong> <strong>der</strong> Attributwerte <strong>der</strong> Klasse aufrufen<br />
werden. Dahinter steht die Überlegung, dass sich die meisten<br />
Abhängigkeiten zwischen Klassen durch Methodenaufrufe manifestieren,<br />
eine Beschränkung also zu weniger Abhängigkeiten führt.<br />
Tabelle 7-3: Taktische Prinzipien (Abschnitt 2 von 2)<br />
Lei<strong>der</strong> gibt es für die meisten dieser Prinzipien wenig empirische Untersuchungen<br />
über ihre Wirksamkeit und ihre Relevanz. Sie stellen eher eine Art Tradition im Software<br />
Engineering dar, die durch überwiegend positive Erfahrungen aufrechterhalten<br />
wird. Obwohl <strong>der</strong> empirische Nachweis <strong>der</strong> Brauchbarkeit fehlt, werden in vielen<br />
wissenschaftlichen Arbeiten diese Prinzipien herangezogen, um aus ihnen Entwurfsziele<br />
zu extrahieren. Aus diesen werden dann <strong>Qualität</strong>sattribute abgeleitet, die zur<br />
Entwurfsbewertung verwendet werden.