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.
7.3 Entwurfsregeln 85<br />
Prinzip Beschreibung<br />
Benutze Abstraktion Abstraktion ist ein für den Menschen natürliches Verfahren, mit<br />
komplexen Sachverhalten umzugehen. Bei <strong>der</strong> Abstraktion werden<br />
irrelevante Details ausgeblendet. Um einen Sachverhalt zu verstehen,<br />
ist es dann nicht mehr notwendig, alle Details auf einmal im<br />
Gedächtnis zu haben. Es genügt, die an <strong>der</strong> aktuellen Aufgabenstellung<br />
beteiligten Abstraktionen zu beherrschen.<br />
Teile und herrsche Ein Problem wird in kleinere, möglichst unabhängige Teilprobleme<br />
zerlegt, die gelöst werden. Aus den Einzellösungen wird dann die<br />
Gesamtlösung zusammengesetzt. Das Verfahren lässt sich rekursiv<br />
anwenden, bis man zu einfach lösbaren Teilproblemen gelangt. Der<br />
Vorteil dieses Vorgehens besteht darin, dass zu einem Zeitpunkt nur<br />
ein Problem relativ geringer Komplexität gelöst werden muss.<br />
Strukturiere hierarchisch<br />
(Simon, 1962; Parnas,<br />
1972b)<br />
Der Mensch kann nur dann mit komplexen Systemen umgehen,<br />
wenn sie hierarchisch sind. Daher sind hierarchische Strukturen im<br />
Entwurf vorteilhaft.<br />
Modularisiere Das System wird – im Geiste des Teile-und-herrsche-Prinzips – in<br />
sinnvolle Subsysteme und Module zerlegt. Das Modul dient dabei<br />
als Behälter für Funktionen o<strong>der</strong> Zuständigkeiten des Systems.<br />
Trenne die Zuständigkeiten<br />
(separation of concerns)<br />
Trenne Verhalten und<br />
Implementierung<br />
(separation of policy and<br />
implementation; Rumbaugh<br />
et al., 1993)<br />
Kapsele Zusammengehöriges<br />
Trenne Schnittstelle und<br />
Implementierung<br />
Vermeide Abhängigkeiten<br />
von Details<br />
(Martin, 1996c)<br />
Das System wird anhand von Zuständigkeiten (häufig auch als Verantwortlichkeiten<br />
bezeichnet) in Komponenten aufgeteilt. Komponenten,<br />
die an <strong>der</strong> gleichen Aufgabe beteiligt sind, werden<br />
gruppiert und von denen abgegrenzt, die für an<strong>der</strong>e Aufgaben<br />
zuständig sind.<br />
Eine Komponente (o<strong>der</strong> eine Methode) soll entwe<strong>der</strong> für das Verhalten<br />
o<strong>der</strong> die Implementierung zuständig sein, nicht für beides.<br />
Eine Komponente für das Verhalten trifft Entscheidungen anhand<br />
des Kontextes, interpretiert Ergebnisse und koordiniert an<strong>der</strong>e<br />
Komponenten. Eine Komponente für die Implementierung dagegen<br />
führt einen Algorithmus auf vorliegenden Daten aus. Komponenten<br />
für die Implementierung sind in <strong>der</strong> Regel stabil, während sich die<br />
Komponenten für das Verhalten oft än<strong>der</strong>n, daher gibt es Sinn, sie<br />
zu trennen.<br />
Zusammengehörige Bestandteile einer Abstraktion werden zu<br />
einem Ganzen zusammengefasst und von an<strong>der</strong>en abgegrenzt. Die<br />
Implementierung wird hinter einer Schnittstelle verborgen. Bei <strong>der</strong><br />
objektorientierten Sichtweise wird die Kapselung durch die Definition<br />
von Klassen erreicht.<br />
Eine Komponente soll aus einer Schnittstelle und einer Implementierung<br />
bestehen. Die Schnittstelle soll nicht von <strong>der</strong> Implementierung<br />
abhängen, so dass <strong>der</strong> Verwen<strong>der</strong> nicht durch Än<strong>der</strong>ungen<br />
von Implementierungsdetails betroffen sein kann.<br />
Komponenten sollten nicht von Details (i. d. R. Implementierungsdetails)<br />
abhängig sein, son<strong>der</strong>n von abstrakten Schnittstellen. In <strong>der</strong><br />
Objektorientierung bedeutet das, dass die wesentlichen Abstraktionen<br />
in Form von Interfaces o<strong>der</strong> abstrakten Klassen formuliert sind.<br />
Tabelle 7-3: Taktische Prinzipien (Abschnitt 1 von 2)