Muster in der Anforderungsanalyse verwenden
In einigen Blog-Beiträgen zum Werkzeug objectiF RPM sind die Möglichkeiten beschrieben, Muster zu verwenden, eigene Muster zu entwerfen und für die Verwendung im Werkzeug verfügbar zu machen. Die bisher beschriebenen Muster waren Muster für die Projektplanung. Wie wäre es denn mit Mustern für das Requirements Engineering?
Diese Aufgabenstellung ergab sich aus meiner Tätigkeit als Trainer für IREB Requirements Engineeering Seminare. Im Lehrplan für das Advanced Level Modeling[i] ist auch die Verwendung von Analysemustern ein Thema.
Die wichtigsten Analysemuster
Heide Balzert hat in ihrem Lehrbuch für Objektmodellierung[ii] folgende 10 Analysemuster und deren Anwendung mit Beispielen ausführlich beschrieben:
- Liste
- Exemplartyp
- Baugruppe
- Stückliste
- Koordinator
- Rollen
- Wechselnde Rollen
- Historie
- Gruppe
- Gruppenhistorie
Den Musterkatalog von Balzert in das Werkzeug einbauen
Vordefinierter Musterkatalog in objectiF RPM
Die folgende Kurzbeschreibung zeigt, was zu tun ist, um einen solchen Musterkatalog in objectiF RPM einzubauen. Ziel ist es, auf diesen Musterkatalog zurückgreifen zu können, wenn ich mit der Software ein Informationsmodell mit einem Klassendiagramm erstellen will. In der aktuellen Version 4.2 sind zwar noch keine Analysemuster, wohl aber Muster für die Projektplanung oder Sprintplanung enthalten. Wenn Sie in dem in objectiF RPM vorliegenden Projekt “Agiles Übungsprojekt mit zwei Teams” nachsehen, finden Sie dort in der Sicht Einstellungen bereits einen vorhandenen Musterkatalog:
Der Musterkatalog kann entweder mit dem Befehl Muster anwenden oder Muster-Katalog… aufgerufen werden.
Ergebnis dieses Blogbeitrages wird ein Musterkatalog sein, der Folgendes enthält:
Ziel: Einen Musterkatalog für Analysemuster erstellen
Das funktioniert natürlich erst, wenn die Muster eingebaut sind. Aber keine Angst, das ist dank der Möglichkeiten von objectiF RPM recht einfach.
Eine Übersicht über die Details der verfügbaren Muster sieht man nach Auswahl des Befehls Muster-Katalog…
10 Analysemuster nach Balzert in objectiF RPM
Zu sehen sind die zehn Muster von Balzert mit einer Kurzbeschreibung, einem Klassendiagramm zum jeweiligen Muster und einem Anwendungsbeispiel.
Bei der Umsetzung im Werkzeug habe ich die Beschreibung der Muster auf ein Minmum beschränkt und einfach die Referenz angegeben. Sie können natürlich gerne die Beschreibung vollständig ausführen, wie das normalerweise in Musterbeschreibungen vorzufinden ist.
So kommen die Muster in objectiF RPM
Wo sollen die Muster definiert werden? In der Sicht Einstellungen gibt es ja schon einen Musterkatalog. Dort habe ich ein neues Package angelegt mit dem Namen: Analysemuster nach Balzert.
Für jedes zu erstellende Muster sind folgende Schritte notwendig:
- Ein Klassendiagramm für das Muster anlegen. Das wird benötigt, um die Beziehungen der im Muster enthaltenen Klassen und deren Kardinalitäten zu definieren.
- Die einzelnen Klassen benennen, die im Muster enthalten sind. Dabei werden vorerst symbolische Namen in der Form {name} verwendet, sowohl für die Klassennamen als auch für die Attributnamen. Diese Namen werden dann bei der Anwendung des Musters durch die Namen der Instanz ersetzt – aber dazu noch später.
- Die Spezifikation der Musteranwendung, die vom Werkzeug unterstützt wird. Damit wird auch die Beschreibung des Musters angelegt.
Das folgende Bild zeigt die Struktur eines fertigen Musters im Paket Analysemuster nach Balzert. Ich habe dabei die Struktur so gewählt, dass für jedes Muster ein eigenes Paket – im Bild das Beispiel für das Muster Koordinator – angelegt wurde.
Musterkatalog mit Analysemustern in objectiF RPM
Schritt für Schritt zum Analysemuster
Das Klassendiagramm des Analysemusters “Koordinator”
Zuerst muss das Klassendiagramm mit den vorgesehenen Klassen-Attributen und Beziehungen sowie Kardinalitäten angelegt werden. Das sollte so aussehen:
Beim Anlegen der Klassen und Attribute müssen die Namen im Format {name} angegeben werden. Das ist ein Platzhalter für die spätere Ersetzung bei der Anwendung des Musters. In besonderen Mustern kann das auch für die Kardinalitäten notwendig sein (zum Beispiel in den Mustern Historie oder Baugruppe). Im Falle des Musters Koordinator ist das nicht erforderlich, denn die hier angegebenen Kardinalitäten sind typisch für dieses Muster. Details dazu sollten in der Musterbeschreibung auch dokumentiert werden, damit ein späterer Anwender des Musters das auch versteht.
Nun muss das Muster selbst angelegt werden. Ein Muster kann man mit dem Befehl Muster anlegen… erstellen. Der Name zum Anlegen des Musters lautet im Beispiel: Analysemuster Koordinator anlegen. Die Art des Musters und der Stereotyp des Kontextelements werden festgelegt . Ich habe hier als Stereotyp Package ausgewählt, damit es überall verfügbar ist. Die Beschreibung des Musters erfolgt im Editor. Ich habe zur Dokumentation das Muster aus dem Klassendiagramm in die Beschreibung kopiert. Sinnvoll ist es auch, in die Beschreibung ein mit dem Muster generiertes Beispiel aufzunehmen.
So legen Sie das Analysemuster Koordinator an.
Das sind schon alle Vorbereitungen. Jetzt können wir einmal ein Beispiel mit dem definierten Muster anlegen. Angenommen wir hätten ein Problem zu analysieren und zu dokumentieren, für welches das Muster Koordinator gut passt. Zum Beispiel das Problem, ein Training und seine Teilnehmer darzustellen. Da gibt es eine n:M Beziehung zwischen Training und Teilnehmer. Ein Training wird von mehreren Teilnehmern besucht, ein Teilnehmer besucht mehrere Trainings. Das kann man mit dem Muster Koordinator gut auflösen. Dazu muss nur eine Koordinatorklasse eingeführt werden. Entweder “händisch” oder per Anwendung eines Analysemusters.
Analysemuster anwenden
Dazu führen wir in der Sicht Produkte in einem ausgewählten Package den Kontextbefehl Muster anwenden… aus. Ich habe dafür vorher ein neues Package mit dem Namen BLOG_Test_Analysemuster unter dem Package Datenmodell erzeugt, das noch leer ist. Dort möchte ich das Muster anwenden. Dies geschieht mit der Konfiguration des Mustern nach Aufruf des Befehls Muster anwenden…
Musterkonfiguration in objectiF RPM
Das Zielpaket wurde aus dem Kontext schon übernommen, denn ich will die Ergebnisse der Mustergenerierung ja im Paket BLOG_Test_Analysemuster sehen. An dieser Stelle kann ich das Zielpaket noch verändern und anpassen. Es ist wichtig, sich das zu merken. Dort werden wir später die generierten Objekte finden.
Jetzt sind nur noch die Namen zu ersetzen. Sie sehen hier wieder die Namen aus der Definition des Klassendiagramms für das Muster in der Form {name}. ACHTUNG: Lassen Sie die Namen links oben unverändert! Die Ersetzungen erfolgen nur im Abschnitt Namensersetzungen.
Namensersetzung bei der Musterkonfiguration
Bei der Namensersetzung muss man eventuell scrollen, um alle zu ersetzenden Namen zu sehen. Die Elemente sind dort alphabetisch sortiert. Fertig! Die neuen Klassen wurden dem Muster folgend angelegt:
Mustergenerierung in objectiF RPM
So sieht es aus, wenn die Mustergenerierung funktioniert hat. Aber wo ist das Klassendiagramm? In dem Paket gab es ja noch kein Klassendiagramm. Dann legen wir eben einfach eines an und ziehen die erzeugten Klassen in dieses Diagramm:
Klassendiagramm des Analysemusters anlegen
Und wo sind die Beziehungen und Kardinalitäten? In dem Diagramm führen wir den Kontextbefehl Beziehungen anzeigen… aus und öffnen den Bereich der Klassen für die Attribute. Und da ist es: das generierte Datenmodell unserer Analyse basierend auf dem eingesetzten Muster Koordinator. Dieses “Stückchen” Muster können wir nun beliebig in unserer weiteren Analyse bearbeiten und weiter beschreiben.
Klassendiagramm des Analysemusters fertigstellen
Mit objectiF RPM kann man vorhandenes Wissen in Form von Mustern sehr gut wiederverwenden und spart sich viel Zeit beim Zeichnen der Diagramme.
Das war wieder einmal eine gute Gelegenheit, sich mit Mustern nach Balzert auseinanderzusetzen. Das Paket mit den definierten Mustern stelle ich microTOOL gerne zur Verfügung. Wenn Sie das Paket in das Paket Muster importieren (am besten in der Projektvorlage), können Sie es gleich verwenden. Dann brauchen Sie die hier erklärten Schritte natürlich nicht mehr machen. Mit meiner Beschreibung können Sie natürlich weitere – eigene – Muster zur Verwendung vorbereiten. Ich wünsche Ihnen viel Erfolg bei der Anwendung.
Anmerkung von microTOOL:
Wir danken Herrn Siebenhofer ganz herzlich für diesen Beitrag und die Muster-Importdatei, die Sie von uns per Mail anfordern können. In der nächsten Version von objectiF RPM, die voraussichtlich Anfgang 2018 erscheinen wird, werden die Analysemuster nach Balzert bereits implementiert sein.
Literaturhinweis:
[i] Cziharz, Th., Hruschka, P., Queins, St., Weyer Th. (2016). Handbuch der Anforderungsmodellierung nach dem IREB Standard. Version 1.3. von www.ireb.org
[ii] Balzert, Heide (2005). Lehrbuch der Objektmodellierung. Analyse und Entwurf mit der UML 2. 2. Auflage. Heidelberg: Spektrum Akademischer Verlag Heidelberg
Diskutieren Sie mit.