Java Reference
In-Depth Information
1 Prinzipien für den objektorientierten Entwurf
Fast alles auf der Welt unterliegt einem gewissen Alterungsprozess. Erstaunlicherwei-
se gilt dies auch für Software - erstaunlicherweise deshalb, weil Software eigentlich
ein künstlich geschaffenes Artefakt ist und sich nicht abnutzt. Trotzdem altert Software,
weil sich ihre Umgebung ändert wie z. B. die Anforderungen oder das Betriebssystem,
und zeigt dabei nach Martin [Mar03] auch Eigenschaften 4,5 wie Starrheit und Unbe-
weglichkeit, die typisch für alternde Lebewesen sind:
x Starrheit (engl. rigidity )
Ist das Design zu stark auf das gerade vorliegende Problem angepasst, so funktio-
niert dieses Design nur solange, bis die Software erweitert werden muss oder sich
das zu lösende Problem verändert. Die Implementierung einer erforderlichen Erwei-
terung kann weitere Änderungen in abhängigen Modulen, die bereits als stabil er-
achtet wurden, nach sich ziehen, so dass der Aufwand für Änderungen nicht kalku-
lierbar ist.
x Zerbrechlichkeit (engl. fragility )
Ein starr entwickeltes Design weist häufig eine hohe Zerbrechlichkeit auf. Dies be-
deutet, dass wenn man eine Veränderung an einer bestimmten Stelle durchführt,
plötzlich andere Teile des Systems unerwarteterweise nicht mehr korrekt laufen
können. Oft entstehen diese Probleme in Teilen einer Software, die keinen konzep-
tionellen Bezug zu der geänderten Stelle aufweisen. Das liegt an starken Abhängig-
keiten zwischen den verschiedenen Klassen, welche dazu führen können, dass eine
Änderung in der einen Klasse zu einem Fehler in einer von ihr abhängigen Klasse
führt.
x Unbeweglichkeit (engl. immobility )
Die Unbeweglichkeit von Software beschreibt die fehlende Möglichkeit zur Wie-
derverwendung einzelner Module einer bereits bestehenden Anwendung. Wenn
Teile aus der vorhandenen Software nur mit großem Aufwand herausgeschält wer-
den können, da sie wechselseitig stark abhängig sind, sind die entsprechenden
Teile schwer wiederzuverwenden. Ein solches Design wird meist nicht wiederver-
wendet, weil die Kosten einer Heraustrennung von Anteilen höher sind als die Kos-
ten für eine Neuentwicklung des Systems.
x Zähigkeit (engl. viscosity )
Es gibt sowohl eine Viskosität des Designs, als auch der Umgebung. Die Zähigkeit
eines Designs beschreibt, wie gut sich ein System erweitern lässt. Wenn es bei
Änderungen also aufwendiger ist, das bestehende Design beizubehalten, als es an-
zupassen, so weist das System ein hohes Maß an Zähigkeit auf. Die Zähigkeit der
Umgebung betrifft die Arbeitsumgebung wie beispielsweise die verwendeten
Bibliotheken. Die Ingenieure können dazu verleitet werden, im Sinne des Designs
nicht-optimale Änderungen durchzuführen, nur um Performance-Einschränkungen
der Entwicklungsumgebung auszuweichen.
4 Robert C. Martin fand drastischere Begriffe (siehe beispielsweise [Mar03]): Software verrottet bzw.
modert (engl. to rot) und dabei entstehen Gerüche (engl. smells). Als "Gerüche" bezeichnet er neben
anderen die oben genannten negativen Eigenschaften von Software.
5 Bitte beachten Sie, dass diese Eigenschaften nicht orthogonal, sondern miteinander gekoppelt sind.
Search WWH ::




Custom Search