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

worte.projekt.de
von worte.projekt.de Mehr von diesem Publisher
30.10.2013 Aufrufe

152 11 Werkzeugunterstützung Robbins, Redmiles (1999). Das UML-Werkzeug Argo/UML verfügt über eine eingebaute Kritikkomponente (sog. „design critics“; Robbins, 1998). Diese prüft im Hintergrund laufend das UML-Modell auf die Einhaltung bestimmter Regeln. Bei einem Regelverstoß wird das entsprechende Modellelement mit einer Markierung versehen, über die Informationen über den Regelverstoß abgerufen werden können. Es ist auch eine Liste von Regelverstößen für das ganze Modell verfügbar. Zu jedem Befund können Vorschläge zur Verbesserung abgerufen werden. Teilweise werden auch automatische Korrekturen (gesteuert durch Wizards) angeboten. Zusätzlich bietet Argo/ UML auch Checklisten an, die typische Probleme aufdecken sollen. Das Besondere dabei ist, dass die Fragen der Checkliste „personalisiert“ werden können, d. h. zum einen werden für den Prüfling irrelevante Fragen weggelassen und zum anderen dessen konkrete Eigenschaften (z. B. Klassennamen oder Attributnamen) in die Checkliste eingesetzt. Durch die Checklisten sollen Bereiche abgedeckt werden, die nicht automatisch (mit design critics) geprüft werden können. Nenonen et al. (2000). Das Werkzeug MAISA arbeitet auf UML-Modellen. Dabei werden sowohl Klassendiagramme als auch Kollaborations-, Sequenz-, Zustandsund Aktivitätsdiagramme verarbeitet, d. h. es werden statische und dynamische Eigenschaften ausgewertet. Das Werkzeug kann fest eingebaute Metriken erheben; geplant ist auch die Erkennung von Entwurfsmustern und Anti-Mustern. Die Analyse arbeitet dabei auf einem FAMIX 3 -Modell und einer Prolog-Wissensbasis, die durch externe Werkzeuge aus einem UML-Modell generiert wurden. Aus dem Angebot vordefinierter Metriken können die gewünschten ausgewählt sowie obere und untere Schwellenwerte für sie angegeben werden. Messwerte außerhalb der Schwellenwerte werden dann bei der Ausgabe speziell gekennzeichnet. 11.1.2 Qualitätsbewertung auf Codebasis Ein großer Teil des Entwurfs kann aus dem Code extrahiert werden. Einiges an Entwurfsinformation ist zwar verloren gegangen (z. B. ist die Unterscheidung zwischen Assoziation, Aggregation und Komposition nicht mehr aus dem Code ersichtlich), aber andererseits ist mehr detaillierte Information verfügbar (z. B. Methoden, ihre Aufrufbeziehungen und Zugriffe auf Attribute). Beim Reengineering ist Code häufig das einzig verfügbare Dokument, aus dem Entwurfsinformation gewonnen werden kann. Daher gibt es auch einige codebasierte Ansätze zur Entwurfsbewertung. Erni (1996). Das Werkzeug dient zur Bewertung der Wartbarkeit von Rahmenwerken mit Hilfe von Metriken. Es arbeitet mit Schwellenwerten, um Ausreißer bei den Messwerten zu identifizieren, wobei auch statistische Schwellenwerte möglich sind (z. B. Mittelwert + Standardabweichung). Besonders an diesem Ansatz ist die Möglichkeit, durch einen Filter (dort Fokus genannt) die Bewertung auf bestimmte Ausschnitte des Entwurfs zu beschränken. Dies kann entweder durch manuelle Auswahl geschehen oder durch Festlegung bestimmter Eigenschaften, welche die zu selektierenden Elemente haben sollen (z. B. abstrakte Klassen). Eine weitere Besonderheit ist die Unterstützung von Trendanalysen, bei denen die Messwerte über verschiedene Versionen des Rahmenwerks betrachtet werden können. 3. FAMIX ist ein Metamodell für Modelle objektorientierte Systeme, das im FAMOOS-Projekt als Austauschstandard entwickelt wurde; siehe http://www.iam.unibe.ch/~famoos/FAMIX/

11.1 Werkzeuge aus anderen Arbeiten 153 Gibbon (1997). Das Werkzeug TOAD erhebt Code-Metriken zur Überprüfung von Heuristiken. Da das Werkzeug für die Ausbildung objektorientierter Entwickler gedacht ist (Gibbon, Higgins, 1996), werden aber nicht nur Verstöße identifiziert, sondern auch erklärende Texte angeboten, die beschreiben, warum die Verstöße problematisch sind und wie die Verstöße behoben werden können. Die Heuristiken konzentrieren sich auf den Bereich der Wartbarkeit. Bär (1998). Das Werkzeug überprüft die Einhaltung von Heuristiken im Code und zeigt Verstöße auf. Die Prüfung der Heuristiken wird durch Anfragen an eine Wissensbasis in Prolog realisiert, die aus dem Code gewonnene Entwurfsinformation enthält. Das Werkzeug ist integriert in das Visualisierungswerkzeug GOOSE 4 , das vor allem für das Reverse-Engineering objektorientierter Programme gedacht ist. GOOSE verfügt auch über eine Komponente zur Erhebung und Visualisierung von Metriken. Köhler et al. (1998). Das Metrikenwerkzeug Crocodile, das in die Entwicklungsumgebung SNiFF+ integriert ist, greift auf das (Code-)Repository von SNiFF+ zu, um darauf Metriken zu erheben. Die Metriken können mit Schwellenwerten versehen werden, so dass das Werkzeug Modellelemente identifizieren kann, die besonders häufig oder besonders schwerwiegend unerwünschte Messwerte aufweisen. Auf diese Weise soll der Umfang an Klassen o. Ä. eingeschränkt werden, die anschließend einem Code-Review unterzogen werden. Together. Inzwischen enthalten auch kommerzielle UML-Werkzeuge automatisierte Hilfsmittel zur Qualitätssicherung. Ein Beispiel ist Together, bei dem es eine Funktion zur Durchführung von „Audits“ gibt. Dabei kann der Benutzer vordefinierte Regeln automatisch prüfen lassen. Außerdem kann er vordefinierte Metriken auswählen, optional Schwellenwerte angeben und sich dann die Metriken berechnen lassen. Der Ansatz von Together ist allerdings sehr stark Code-zentriert, z. B. entsprechen die geprüften Regeln vor allem Programmierrichtlinien. 11.1.3 Bewertung Die vorgestellten Werkzeuge besitzen viele nützlichen Funktionen, die zur Entwurfsbewertung und teilweise auch zur Entwurfsverbesserung genutzt werden können. Für den Bewertungsansatz in dieser Arbeit lassen sie sich leider jedoch nicht verwenden. Die Code-basierten Werkzeuge können von vornherein ausgeschlossen werden, da der Ansatz in dieser Arbeit auf UML aufbaut. Ebenso scheidet das Werkzeug MEMOS von Baumann aus, da es auf einem proprietären Modellierungsansatz basiert. Argo/UML von Robbins und Redmiles bietet keine Möglichkeit zur Erhebung von Metriken, kann also ebenfalls nicht verwendet werden. MAISA von Nenonen et al. unterstützt zwar Metriken, kann aber nicht mit den Metriken von QOOD konfiguriert werden. Dazu wären Eingriffe in den Quellcode notwendig, der aber nicht zur Verfügung steht. Außerdem wären die Fragebögen sowie die Auswertungsfunktion zu ergänzen. Deshalb wurde entschieden, Werkzeuge zu entwickeln, die das Bewertungsverfahren optimal unterstützen. Diese Werkzeuge werden im folgenden Abschnitt vorgestellt. 4. GOOSE = Graphs on Object-Oriented Systems, siehe http://www.fzi.de/prost/tools/goose/

11.1 Werkzeuge aus an<strong>der</strong>en Arbeiten 153<br />

Gibbon (1997). Das Werkzeug TOAD erhebt Code-Metriken zur Überprüfung von<br />

Heuristiken. Da das Werkzeug für die Ausbildung <strong>objektorientierter</strong> Entwickler<br />

gedacht ist (Gibbon, Higgins, 1996), werden aber nicht nur Verstöße identifiziert, son<strong>der</strong>n<br />

auch erklärende Texte angeboten, die beschreiben, warum die Verstöße problematisch<br />

sind und wie die Verstöße behoben werden können. Die Heuristiken konzentrieren<br />

sich auf den Bereich <strong>der</strong> Wartbarkeit.<br />

Bär (1998). Das Werkzeug überprüft die Einhaltung von Heuristiken im Code und<br />

zeigt Verstöße auf. Die Prüfung <strong>der</strong> Heuristiken wird durch Anfragen an eine Wissensbasis<br />

in Prolog realisiert, die aus dem Code gewonnene Entwurfsinformation enthält.<br />

Das Werkzeug ist integriert in das Visualisierungswerkzeug GOOSE 4 , das vor<br />

allem für das Reverse-Engineering <strong>objektorientierter</strong> Programme gedacht ist. GOOSE<br />

verfügt auch über eine Komponente zur Erhebung und Visualisierung von Metriken.<br />

Köhler et al. (1998). Das Metrikenwerkzeug Crocodile, das in die Entwicklungsumgebung<br />

SNiFF+ integriert ist, greift auf das (Code-)Repository von SNiFF+ zu, um<br />

darauf Metriken zu erheben. Die Metriken können mit Schwellenwerten versehen<br />

werden, so dass das Werkzeug Modellelemente identifizieren kann, die beson<strong>der</strong>s<br />

häufig o<strong>der</strong> beson<strong>der</strong>s schwerwiegend unerwünschte Messwerte aufweisen. Auf<br />

diese Weise soll <strong>der</strong> Umfang an Klassen o. Ä. eingeschränkt werden, die anschließend<br />

einem Code-Review unterzogen werden.<br />

Together. Inzwischen enthalten auch kommerzielle UML-Werkzeuge automatisierte<br />

Hilfsmittel zur <strong>Qualität</strong>ssicherung. Ein Beispiel ist Together, bei dem es eine Funktion<br />

zur Durchführung von „Audits“ gibt. Dabei kann <strong>der</strong> Benutzer vordefinierte Regeln<br />

automatisch prüfen lassen. Außerdem kann er vordefinierte Metriken auswählen,<br />

optional Schwellenwerte angeben und sich dann die Metriken berechnen lassen. Der<br />

Ansatz von Together ist allerdings sehr stark Code-zentriert, z. B. entsprechen die<br />

geprüften Regeln vor allem Programmierrichtlinien.<br />

11.1.3 <strong>Bewertung</strong><br />

Die vorgestellten Werkzeuge besitzen viele nützlichen Funktionen, die zur Entwurfsbewertung<br />

und teilweise auch zur Entwurfsverbesserung genutzt werden können.<br />

Für den <strong>Bewertung</strong>sansatz in dieser Arbeit lassen sie sich lei<strong>der</strong> jedoch nicht verwenden.<br />

Die Code-basierten Werkzeuge können von vornherein ausgeschlossen werden,<br />

da <strong>der</strong> Ansatz in dieser Arbeit auf UML aufbaut. Ebenso scheidet das Werkzeug<br />

MEMOS von Baumann aus, da es auf einem proprietären Modellierungsansatz<br />

basiert. Argo/UML von Robbins und Redmiles bietet keine Möglichkeit zur Erhebung<br />

von Metriken, kann also ebenfalls nicht verwendet werden. MAISA von Nenonen<br />

et al. unterstützt zwar Metriken, kann aber nicht mit den Metriken von QOOD<br />

konfiguriert werden. Dazu wären Eingriffe in den Quellcode notwendig, <strong>der</strong> aber<br />

nicht zur Verfügung steht. Außerdem wären die Fragebögen sowie die Auswertungsfunktion<br />

zu ergänzen.<br />

Deshalb wurde entschieden, Werkzeuge zu entwickeln, die das <strong>Bewertung</strong>sverfahren<br />

optimal unterstützen. Diese Werkzeuge werden im folgenden Abschnitt vorgestellt.<br />

4. GOOSE = Graphs on Object-Oriented Systems, siehe http://www.fzi.de/prost/tools/goose/

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!