Aufgabe: Gemeinsamkeiten und Unterschiede identifizieren
Diese Aufgabe kann auf eine Reihe von Analyse- und Designelementen angewendet werden, bei denen das Ausklammern der Variabilität und die besondere Berücksichtigung der Gemeinsamkeiten zu einem leistungsfähigeren und flexibleren Ergebnis führen.
Disziplinen: Analyse und Design
Zweck

Zunächst müssen die bereitgestellten Modellelemente analysiert werden. Dann müssen die Elemente identifiziert werden, die verschiedenen Anwendungen gemeinsam sind, um diese dann von den Elementen abzusondern, die in verschiedenen Anwendungen unterschiedlich sind. Wenn Sie die Elemente identifizieren, die je nach Anwendung variieren, können Sie explizit die Variabilitätsarten modellieren und für Auftraggeber des Modellelements dokumentieren.

Beziehungen
Hauptbeschreibung

Sie können diese Aufgabe für jedes Analyse- oder Designmodell ausführen, sofern die Elemente des Modells von den hier beschriebenen Verfahren profitieren können. Die Verfahren gründen sich auf Erfahrungen im Bereich der Entwicklung von Produktlinien und von Mustern. Bei der Entwicklung von Produktlinien sind die einheitlichen Elemente das, was die Produkte innerhalb der Linie miteinander verbindet, und die Variabilität ist das, was die Produkte voneinander unterscheidet. Bei der Entwicklung von Mustern bilden die allgemeinen Elemente die Struktur des Musters, und mit Hilfe der Variabilität werden die Parameter des Musters definiert.

Die Strategie sieht zunächst eine Identifikation von Designelementen vor, die in allen Anwendungen einheitlich sind. Anschließend werden die Elemente identifiziert, die bei jeder Anwendung unterschiedlich sind. Zum Schluss wird die Variabilität dokumentiert (wobei es für unterschiedliche Domänen verschiedene Herangehensweisen gibt).

Beispiel

Im folgenden Klassendiagramm sehen Sie die Elemente eines gültigen Vertrages und können feststellen, dass dieser Vertrag von zwei oder mehr Parteien geschlossen wird. Beim Identifizieren der allgemeinen Elemente sehen Sie, dass die Struktur des Vertrages und die verschiedenen Beziehungen zu den Parteien die Kernelemente bilden.

Ein gültiger Vertrag kann jedoch zwischen verschiedenen Personen, Organisationen oder Regierungsbehörden ausgehandelt werden, so dass die Vertragspartei vom Typ her ein variables Element ist. Wenn Sie dies dokumentieren, werden Sie eine Typhierarchie für "Partei" definieren und "Partei" (Party) auch als eine abstrakte Klasse kennzeichnen, so dass in einem tatsächlichen Design konkrete Typen verwendet werden müssen.

Schritte
Einheitliche und variable Elemente identifizieren

Die Identifikation von Elementen eines Designs, die sich bei Verwendung in verschiedenen Situationen nicht ändern, erfolgt am besten auf iterative Weise. Verwenden Sie eine Reihe von Szenarios, erstellen Sie Instanzdiagramme und stellen Sie beim Vergleichen der Instanzdiagramme für verschiedene Szenarien fest, welche Elementen in allen Fällen einheitlich sind. Je mehr Szenarien verfügbar sind, desto mehr Datenpunkte stehen Ihnen zur Verfügung, so dass Sie frühe Ergebnisse auswerten und Annahmen aus diesen ableiten können.

Beim Beschreiben der einheitlichen Elemente in einem Modell ist es oft hilfreich, eine Art von kapselndem Element anzugeben, um diese Elemente vom übrigen Design trennen zu können. Welches Kapselungsverfahren auszuwählen ist, richtet sich offensichtlich nach dem jeweiligen Kontext. Sie könnten folgende Auswahl treffen:

  • Die Einführung eines Pakets als Eigner dieser Elemente. Damit ändern Sie nur das Eigentumsrecht an den Elementen, jedoch nicht die Beziehung zwischen den Elementen oder zu Elementen außerhalb des Pakets. Dieses Verfahren wird am häufigsten bei Analysemodellen angewendet.
  • Die Einführung einer Komponente als Eigner der Elemente. Damit ändern Sie nicht nur das Eigentumsrecht, sondern führen auch eine formale Kapselung ein, was Ihnen beispielsweise die Möglichkeit gibt, eine Schnittstelle zu definieren, auf der die relevanten Elemente von außen zugänglich sind.
  • Bei Einführung einer UML-2.0-Kollaboration können die einheitlichen Elemente als Teil der zusammengesetzten Struktur der Kollaboration und die variablen Elemente als Rollen definiert werden. Später können die variablen Elementrollen dann an konkrete Elemente gebunden werden. Dies ist die allgemeine Herangehensweise beim Definieren von Designmustern in UML. Beachten Sie, dass eine Kollaboration nicht der Eigner der Elemente, sondern nur Eigner der den Elementen entsprechenden Rollen ist.
  • Die Einführung einer Klasse mit einer Vorlage, wobei die Vorlage dem Typ der variablen Elemente entspricht. Diese Strategie ist in Sprachen wie Ada, C++, Eiffel und jetzt auch Java mit Unterstützung für die generische Programmierung üblich.
  • Sie könnten auch einfach eine visuelle Hervorhebung auswählen. Es ist beispielsweise üblich, ein einzelnes Diagramm (wie in der Hauptbeschreibung gezeigt) zu verwenden und die einheitlichen und variablen Elemente mit verschiedenen Farben darzustellen.

Beispiel

Im Falle des gültigen Vertrags haben wir uns für die Einführung einer Komponente als Eigner der Elemente entschieden. Sehen Sie sich dazu die folgende Abbildung an.

Variabilitätsformen dokumentieren

Die Variabilität kann verschiedenen Formen annehmen, die alle gleichermaßen geeignet sein können. In einigen Fällen treffen mehrere dieser Formen auf eine bestimmte Situation zu. Allgemeine Arten der Variabilität sind:

  • Variabilität nach Typ - Im Beispiel unseres gültigen Vertrags basiert die Variabilität auf der Typhierarchie, die für die Darstellung des Konzepts "Vertragspartei" verwendet wurde. Dies ist eine allgemein übliche Form, die ohne großen Aufwand in UML als ein Klassendiagramm beschrieben werden kann (siehe Hauptbeschreibung).
  • Variabilität nach Rolle - In diesem Fall ist der Elementtyp generell immateriell (oder zumindest von zweitrangiger Bedeutung). Die Rolle, die ein Element spielt, ist von Bedeutung. Diese Art der Variabilität findet sich oft in der Musterentwicklung, wo ein Muster auf ein möglichst breites Spektrum von Möglichkeiten anwendbar sein soll und die Parameter für das Muster durch die Rollen definiert werden, die die bereitgestellten Elemente spielen.
  • Variabilität der Implementierung - In diesem Fall muss sich das bereitgestellte Element durch ein bestimmtes Verhalten auszeichnen und eine gegebene Schnittstelle (oder formaler ein Protokoll) implementieren, um anwendbar zu sein. In einem solchen Fall beschreibt in der Regel der Container der einheitlichen Elemente die Schnittstelle und verfügt über einen Vorlagenparameter für den Schnittstellentyp oder für das Anfordern der Schnittstelle.

Beispiele

Die folgende Abbildung demonstriert die Variabilität nach Rolle. Sie sehen hier eine neue Kollaboration Verkauf (Sale), die die Beziehung zwischen einem Verkäufer (Seller) und einem Käufer (Purchaser) als Vertragsparteien bezeichnet. In UML kann daraus eine Kollaborationsinstanz erstellt werden, die die Rollen Purchaser und Seller an tatsächliche Modellelemente bindet.

Alternativ dazu wollen wir uns den Verkaufsprozess anhand eines Hinterlegungsservice ansehen. Die erforderlichen Leistungsmerkmale aller Hinterlegungsservices werden als eine Schnittstelle mit einer Reihe von Operationen erfasst, die den erwarteten Zuständigkeiten eines Hinterlegungsservice entsprechen. Auf dieser Basis wird eine Kollaboration mit Vorlage erstellt, bei der die Hinterlegungsschnittstelle als Typ des Vorlagenparameters verwendet wird. Jetzt können durch Bereitstellung jeder Klasse oder Komponente, die die Schnittstelle IEscrowService realisiert, Instanzen der Vorlage erstellt werden.

Schließlich können Sie ganz einfach eine Komponente (oder Klasse) für die allgemeinen Elemente verwenden, die mit der UML-2.0-Beziehung <<use>> die Schnittstelle IEscrowService anfordert. Vergleichen Sie hierzu die folgende Abbildung. Auf einer Designebene ist diese Herangehensweise sicher nicht von Wert, weil sie auch eine allgemeine Programmierungsstrategie in der komponentenbasierten Entwicklung oder sogar in einzelnen Sprachen wie Java ist.

Die Auswahl des Verfahrens richtet sich auch hier nach der Situation. Bei der Entscheidung sollten folgende Aspekte berücksichtigt werden:

  • die Art der auszudrückenden Variabilität (wie oben gezeigt)
  • die Frage, ob das Element Teil eines Analyse-, Design- oder Implementierungsmodells ist
  • das Know-how und die Erwartungen der Stakeholder im Modell

Weitere Informationen
Richtlinien