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
108 8 Das allgemeine Qualitätsmodell Diskussion Knappheit verbessert die Verständlichkeit eines Entwurfs. Außerdem ist er wegen des geringeren Umfangs leichter zu dokumentieren und schneller zu implementieren. Schließlich entsteht auch weniger Code, der getestet und gewartet werden muss. Durch einen geringeren Umfang nimmt auch der Aufwand für Prüfung und Überarbeitung des Entwurfs ab. Allerdings führt sehr hohe Knappheit (z. B. nur sehr wenige, dafür umfangreiche Klassen) zu einer geringeren Verständlichkeit, da dann Dinge zusammengefasst werden, die eigentlich nichts miteinander zu tun haben (führt zu einem geringen Zusammenhalt). Im Extremfall besteht das System aus einer einzigen Klasse System mit einer einzigen Methode run, in der sämtliche Funktionalität implementiert ist – für die Wartung wohl der schlimmste Fall. Die Knappheit steht in Konkurrenz zu Entkopplung und Zusammenhalt. Beispielsweise kann man zur Entkopplung zweier Komponenten eine weitere Komponente einführen, wie das beim Mediator (vgl. Gamma et al., 1995) der Fall ist. Damit verringert sich zwar die Kopplung, aber die Anzahl der Klassen steigt. In der anderen Richtung kann man zwar die Zahl der Klassen verringern, indem man einige miteinander verschmilzt, man erhält dadurch aber meistens Klassen mit sehr geringem Zusammenhalt. Ein guter Entwurf sucht also nach der richtigen Balance zwischen Knappheit auf der einen Seite, Entkopplung und Zusammenhalt auf der anderen Seite. Reduktion, also eine Vereinfachung ohne Verlust an anderen Qualitäten, ist immer erstrebenswert; häufig führt sie auch zu mehr Eleganz. Allerdings ist die Reduktion oft teuer, da sie viel Kreativität und Arbeit erfordert. Mies van der Rohes Wahlspruch „So einfach wie möglich, koste es was es wolle“ ist daher nur dann sinnvoll, wenn die Kosten keine Rolle spielen. Andernfalls ist absolute Knappheit unwirtschaftlich. Die Vermeidung von Redundanz ist ein spezieller Aspekt der Knappheit. Redundanzfreiheit ist besonders wichtig für die Wartbarkeit, da bei vorhandener Redundanz (z. B. durch Copy-and-Paste-Programming, Brown et al., 1998) immer alle Kopien geändert werden müssen (Burd, Munro, 1997). Dazu müssen diese Kopien erst einmal gefunden und dann konsistent geändert werden. Das ist viel fehleranfälliger, als wenn die Änderung auf eine Stelle beschränkt wäre. 8.3.2 Strukturiertheit The only problems we can really solve in a satisfactory manner are those that finally admit a nicely factored solution. (Dijkstra, 1972) Definition Die Strukturiertheit ist hoch, wenn die Struktur des Entwurfs von einem Menschen leicht überblickt und erfasst werden kann. Laut Melton et al. (1990) sind die psychologische (d. h. die wahrgenommene) Komplexität und die strukturelle Komplexität nicht dasselbe, da bei der psychologischen Komplexität der Leser eine wesentliche Rolle spielt, d. h. sie ist individuell verschieden. Die strukturelle Komplexität ist allerdings ein guter Indikator für die psychologische Komplexität.
8.3 Wartbarkeit 109 Diskussion Für den Menschen scheinen hierarchische Strukturen besonders verständlich zu sein (Simon, 1962). Hierarchische Strukturen erlauben den Umgang mit einer großen Anzahl von Teilen, weil zu einem Zeitpunkt immer nur ein Ausschnitt betrachtet werden muss. Durch die Hierarchie besteht die Möglichkeit zur Abstraktion (z. B. die Bildung von Schichten), da Verfeinerungen bei Bedarf ausgeblendet werden können. Parnas (1974) stellt fest, dass man bei dem Begriff hierarchisch aufpassen muss, da es verschiedene Hierarchien gibt. In der Objektorientierung gibt es z. B. bei den Paketen eine hierarchische Struktur durch Schachtelung, bei den Klassen durch Vererbung. Hierarchien sind zyklenfrei, daher ist die Vermeidung von Zyklen ein wichtiges Ziel. Weitere Kriterien für die Strukturiertheit einer Hierarchie sind ihre Tiefe und der Verzweigungsgrad innerhalb der Hierarchie. 8.3.3 Entkopplung […] the best programs are designed in terms of loosely coupled functions that each does a simple task. (Kernighan, Plauger, 1974) If one intends to build quality models of OO design, coupling will very likely be an important structural dimension to consider. (Briand et al., 1998, S. 30) Definition Kopplung (coupling; vgl. Stevens et al., 1974) ist ein Maß für die Stärke der Verbindung (und damit der Abhängigkeit) von Komponenten untereinander. Entkopplung ist das Gegenteil von Kopplung. Obwohl Kopplung der in der Literatur normalerweise verwendete Begriff ist, wurde hier der Begriff Entkopplung gewählt, damit ein hoher Erfüllungsgrad hohe Qualität impliziert. In der Objektorientierung kann die Kopplung zunächst in drei verschiedene Arten unterschieden werden (Li, 1992): • Kopplung durch Vererbung: Eine Unterklasse ist durch das Erben von Eigenschaften mit ihrer Oberklasse gekoppelt. Jede Änderung der Oberklasse hat Auswirkungen auf die Unterklasse. • Kopplung durch Methodenaufruf: Jeder Methodenaufruf durch andere Klassen und jeder Aufruf von Methoden anderer Klassen erhöht die Kopplung. • Kopplung durch Datenabstraktion: Die Verwendung anderer Klassen als Typ von Attributen erhöht die Kopplung. Betrachtet man diese Arten genauer, stellt man fest, dass es insgesamt folgende Kopplungsarten im objektorientierten Entwurf gibt: • Methode-Operation: Eine Methode ruft eine Operation (oder einen Konstruktor/ Destruktor) auf. Es ergibt sich eine Kopplung in Richtung des Aufrufs; implizit entsteht auch eine Kopplung zwischen den Klassen 1 , welche die Methode bzw. die Operation enthalten. 1. Statt einer Klasse kann es auch ein Interface sein (das gilt ebenso bei den anderen Kopplungsarten).
- Seite 67 und 68: 5.5 Formale Definition von Metriken
- Seite 69 und 70: Kapitel 6 Softwarequalität Quality
- Seite 71 und 72: 6.1 Qualität 61 Benutzerbezogene S
- Seite 73 und 74: 6.2 Qualitätsmodelle 63 Die Defini
- Seite 75 und 76: 6.2 Qualitätsmodelle 65 Boehm et a
- Seite 77 und 78: 6.2 Qualitätsmodelle 67 IEEE Stand
- Seite 79 und 80: 6.3 Qualitätssicherung 69 6.2.4 Fa
- Seite 81 und 82: 6.3 Qualitätssicherung 71 rung und
- Seite 83 und 84: Kapitel 7 Entwurfsqualität Softwar
- Seite 85 und 86: 7.1 Ein Beispiel 75 scheidung nach
- Seite 87 und 88: 7.1 Ein Beispiel 77 WMC DIT NOC CBO
- Seite 89 und 90: 7.2 Perspektiven der Entwurfsqualit
- Seite 91 und 92: 7.2 Perspektiven der Entwurfsqualit
- Seite 93 und 94: 7.3 Entwurfsregeln 83 Produkt 1 Pro
- Seite 95 und 96: 7.3 Entwurfsregeln 85 Prinzip Besch
- Seite 97 und 98: 7.3 Entwurfsregeln 87 7.3.2 Heurist
- Seite 99 und 100: 7.4 Beispiele für OOD-Qualitätsmo
- Seite 101 und 102: 7.4 Beispiele für OOD-Qualitätsmo
- Seite 103 und 104: 7.4 Beispiele für OOD-Qualitätsmo
- Seite 105 und 106: 7.4 Beispiele für OOD-Qualitätsmo
- Seite 107 und 108: 7.6 Entwurfsbewertung 97 7.5.2 Kons
- Seite 109 und 110: 7.6 Entwurfsbewertung 99 Evaluation
- Seite 111 und 112: Kapitel 8 Das allgemeine Qualitäts
- Seite 113 und 114: 8.1 Vorüberlegungen 103 8.1.4 Indi
- Seite 115 und 116: 8.3 Wartbarkeit 105 unabhängige Mo
- Seite 117: 8.3 Wartbarkeit 107 auswirkt (höhe
- Seite 121 und 122: 8.3 Wartbarkeit 111 Diskussion Zusa
- Seite 123 und 124: 8.5 Wiederverwendbarkeit 113 derver
- Seite 125 und 126: 8.7 Testbarkeit 115 kann. Technisch
- Seite 127 und 128: Kapitel 9 Quantifizierung des Quali
- Seite 129 und 130: 9.1 Bewertungsverfahren 119 Bewertu
- Seite 131 und 132: 9.2 Objektive Metriken 121 Akronym
- Seite 133 und 134: 9.2 Objektive Metriken 123 Paket NC
- Seite 135 und 136: 9.3 Subjektive Metriken 125 Gewicht
- Seite 137 und 138: 9.4 Fragebögen 127 9.4 Fragebögen
- Seite 139 und 140: 9.4 Fragebögen 129 auch Fragen, f
- Seite 141 und 142: 9.5 Gesamtbewertung 131 der Gewicht
- Seite 143 und 144: 9.6 Ableitung spezifischer Modelle
- Seite 145 und 146: Kapitel 10 Ein spezifisches Qualit
- Seite 147 und 148: 10.1 Ableitung des Qualitätsmodell
- Seite 149 und 150: 10.1 Ableitung des Qualitätsmodell
- Seite 151 und 152: 10.2 Anwendung des Qualitätsmodell
- Seite 153 und 154: 10.2 Anwendung des Qualitätsmodell
- Seite 155 und 156: 10.2 Anwendung des Qualitätsmodell
- Seite 157 und 158: 10.2 Anwendung des Qualitätsmodell
- Seite 159 und 160: 10.3 Besonderheiten bei Mustern 149
- Seite 161 und 162: Kapitel 11 Werkzeugunterstützung H
- Seite 163 und 164: 11.1 Werkzeuge aus anderen Arbeiten
- Seite 165 und 166: 11.2 Selbst realisierte Werkzeuge 1
- Seite 167 und 168: 11.2 Selbst realisierte Werkzeuge 1
8.3 Wartbarkeit 109<br />
Diskussion<br />
Für den Menschen scheinen hierarchische Strukturen beson<strong>der</strong>s verständlich zu sein<br />
(Simon, 1962). Hierarchische Strukturen erlauben den Umgang mit einer großen<br />
Anzahl von Teilen, weil zu einem Zeitpunkt immer nur ein Ausschnitt betrachtet werden<br />
muss. Durch die Hierarchie besteht die Möglichkeit zur Abstraktion (z. B. die Bildung<br />
von Schichten), da Verfeinerungen bei Bedarf ausgeblendet werden können.<br />
Parnas (1974) stellt fest, dass man bei dem Begriff hierarchisch aufpassen muss, da es<br />
verschiedene Hierarchien gibt. In <strong>der</strong> Objektorientierung gibt es z. B. bei den Paketen<br />
eine hierarchische Struktur durch Schachtelung, bei den Klassen durch Vererbung.<br />
Hierarchien sind zyklenfrei, daher ist die Vermeidung von Zyklen ein wichtiges Ziel.<br />
Weitere Kriterien für die Strukturiertheit einer Hierarchie sind ihre Tiefe und <strong>der</strong> Verzweigungsgrad<br />
innerhalb <strong>der</strong> Hierarchie.<br />
8.3.3 Entkopplung<br />
[…] the best programs are designed in terms of loosely coupled functions that each does a simple<br />
task.<br />
(Kernighan, Plauger, 1974)<br />
If one intends to build quality models of OO design, coupling will very likely be an important<br />
structural dimension to consi<strong>der</strong>.<br />
(Briand et al., 1998, S. 30)<br />
Definition<br />
Kopplung (coupling; vgl. Stevens et al., 1974) ist ein Maß für die Stärke <strong>der</strong> Verbindung<br />
(und damit <strong>der</strong> Abhängigkeit) von Komponenten untereinan<strong>der</strong>. Entkopplung<br />
ist das Gegenteil von Kopplung. Obwohl Kopplung <strong>der</strong> in <strong>der</strong> Literatur normalerweise<br />
verwendete Begriff ist, wurde hier <strong>der</strong> Begriff Entkopplung gewählt, damit ein<br />
hoher Erfüllungsgrad hohe <strong>Qualität</strong> impliziert.<br />
In <strong>der</strong> Objektorientierung kann die Kopplung zunächst in drei verschiedene Arten<br />
unterschieden werden (Li, 1992):<br />
• Kopplung durch Vererbung: Eine Unterklasse ist durch das Erben von Eigenschaften<br />
mit ihrer Oberklasse gekoppelt. Jede Än<strong>der</strong>ung <strong>der</strong> Oberklasse hat Auswirkungen<br />
auf die Unterklasse.<br />
• Kopplung durch Methodenaufruf: Je<strong>der</strong> Methodenaufruf durch an<strong>der</strong>e Klassen<br />
und je<strong>der</strong> Aufruf von Methoden an<strong>der</strong>er Klassen erhöht die Kopplung.<br />
• Kopplung durch Datenabstraktion: Die Verwendung an<strong>der</strong>er Klassen als Typ von<br />
Attributen erhöht die Kopplung.<br />
Betrachtet man diese Arten genauer, stellt man fest, dass es insgesamt folgende Kopplungsarten<br />
im objektorientierten Entwurf gibt:<br />
• Methode-Operation: Eine Methode ruft eine Operation (o<strong>der</strong> einen Konstruktor/<br />
Destruktor) auf. Es ergibt sich eine Kopplung in Richtung des Aufrufs; implizit entsteht<br />
auch eine Kopplung zwischen den Klassen 1 , welche die Methode bzw. die<br />
Operation enthalten.<br />
1. Statt einer Klasse kann es auch ein Interface sein (das gilt ebenso bei den an<strong>der</strong>en Kopplungsarten).