Übersicht Inhaltsverzeichnis Vorwort 1 Einführung 2 Klassendiagramme 3 Object Constraint Language 4 Objektdiagramme 5 Statecharts 6 Sequenzdiagramme 6.1 Konzepte der Sequenzdiagramme 6.2 OCL in Sequenzdiagrammen 6.3 Semantik eines Sequenzdiagramms 6.4 Sonderfälle und Ergänzungen für Sequenzdiagramme 6.5 Sequenzdiagramme in der UML 6.6 Zusammenfassung A Sprachdarstellung durch Syntaxklassendiagramme B Java C Die Syntax der UML/P D Anwendungsbeispiel: Internet-basiertes Auktionssystem Literatur |
6.3 Semantik eines SequenzdiagrammsAuf den exemplarischen Charakter eines Sequenzdiagramms wurde bereits hingewiesen. Für den methodisch einwandfreien Einsatz von Sequenzdiagrammen ist jedoch eine genauere Erklärung der Bedeutung eines solchen exemplarischen Ablaufs und des Umgangs mit unvollständigen Darstellungen notwendig. Exemplarizität und UnvollständigkeitDie Exemplarizität eines Sequenzdiagramms basiert analog zum Objektdiagramm auf der Beschreibung einer Menge von Objekten, die in dieser Form in beliebiger Häufigkeit oder auch gar nicht, in einem System auftreten kann. Außerdem ist der Ablauf an sich exemplarisch, der in dieser Form sogar beliebig häufig nebeneinander und verschachtelt, aber auch gar nicht auftreten kann. Zu diesen Formen der Exemplarizität kommt hinzu, dass ein Sequenzdiagramm eine Abstraktion eines Ablaufs darstellt, da es weder alle Objekte des Systems, noch alle auftretenden Interaktionen beinhalten kann. Bei einem Sequenzdiagramm können auch zwischendurch Interaktionen fehlen. So kann Abbildung 6.9 eine Darstellung desselben Ablaufs wie Abbildung 6.8 auf einer anderen Abstraktionsstufe darstellen, da teilweise andere Objekte gezeigt werden. Formal kann die Bedeutung eines Sequenzdiagramms durch eine Abbildung der Elemente des Diagramms in einem Systemablauf erklärt werden. Die Illustration 6.10 zeigt eine solche Abbildung, wobei für den Systemablauf auf der rechten Seite eine Darstellung verwendet wurde, die einem Sequenzdiagramm ähnlich ist und die analog zu Abbildung 3.19 verstanden werden kann. Diese Abbildung identifiziert die im Sequenzdiagramm auftretenden prototypischen Objekte mit echten Objekten und die dargestellten Interaktionen mit echten Interaktionen des Systems. Dabei muss die zeitliche Reihenfolge eingehalten werden. Diese Form des Matchings entspricht der bereits früher diskutierten Form des Beobachters, der selektiv Objekte beobachtet und manche Interaktionen protokolliert. Mit mathematischen Mitteln kann diese Abbildung zum Beispiel wie in den Abbildungen 6.11 und 6.12 beschrieben werden.
Eine lose Semantikdefinition für Sequenzdiagramme wird durch die Abbildung der Elemente eines Sequenzdiagramms auf die Elemente eines Systemablaufs beschrieben. Die Essenz eines Sequenzdiagramms ist gegeben durch
Die Essenz eines Systemablaufs besteht in ähnlicher Weise aus einer Menge von Objekten Obj , von Interaktionen Act, zwei Abbildungen q,z : Act → Obj für Quelle und Ziel jeder Interaktion und des Systemablaufs s ∈ Act*, der einen Trace [DR95] darstellt. Nach [Rum96] kann die Dynamik der Objekterzeugung durch eine vorgegebene Objektmenge simuliert und damit hier ignoriert werden. Seien Ixs = {0..n} die n + 1 Indizes der Sequenz s = s0s1…sn und si das Element an Position i ∈ Ixs. Die Zuordnung erfolgt nun durch die Forderung nach der Existenz einer Abbildung für Objekte f : → Obj und einer monoton steigenden Injektion j : Ix → Ixs der Indizes von in die Indizes von s. Es muss für jeden Index i ∈ Ix im Sequenzdiagramm gelten: Monotonie und Injektivität von j sichern die zeitliche Reihenfolge der Abbildung. Ein Sequenzdiagramm bildet eine Abstraktion des Systemablaufs, da für f und j keine Surjektivität gefordert ist.
Die lose Semantikdefinition für Sequenzdiagramme aus Abbildung 6.11 wird um die Zuordnung zwischen Returns und Aufrufen detailliert. Die Essenz eines Sequenzdiagramms wird dafür um
erweitert. Analog wird die Darstellung eines Systemablaufs durch Returns und Exceptions R ⊆ Act und der bijektiven Zuordnung m : R → (Act \R) erweitert. m ist eine Bijektion. Aufgrund der Unvollständigkeit eines Sequenzdiagramms muss nur injektiv und vollständig definiert sein. Es gilt für jedes Paar von Indizes r,a ∈ Ix : Mehrdeutigkeit und einschränkende StereotypenBei der in den Abbildungen 6.11 und 6.12 beschriebenen Form des Matchings können jedoch mehrere Zuordnungen möglich sein. Findet ein Methodenaufruf im System während des Beobachtungszeitraums mehrfach statt, so ist offen, welcher tatsächliche Methodenaufruf mit der im Diagramm dargestellten Interaktion korrespondiert. Der fiktive Beobachter hat gegebenenfalls einzelne Interaktionen zwischen beiden Objekten „übersehen“. Mithilfe geeigneter Stereotypen kann jedoch die Beobachtungsform genauer festgelegt werden. Der Repräsentationsindikator „©“ kann bei Objekten im Sequenzdiagramm eingesetzt werden, um die Vollständigkeit der gezeigten Interaktionen anzuzeigen. Der alternative Repräsentationsindikator „…“ für Unvollständigkeit gilt bereits per Default, kann aber ebenfalls explizit angegeben werden. Abbildung 6.9 zeigt die Anwendung der Indikatoren. Ein „©“ bedeutet, dass zwischen der ersten und der letzten im Diagramm dargestellten Interaktion keine andere Interaktion des markierten Objekts mit irgendeinem Objekt stattfindet. Das heißt, das Protokoll des fiktiven Beobachters ist in Bezug auf das markierte Objekt und den dargestellten Beobachtungszeitraum vollständig. Bei einem in diesem Sinn vollständig beobachteten Objekt ergibt sich notwendigerweise, dass zu jedem Aufruf ein passender Return angegeben sein muss. Dabei sind alle Objekte anzugeben, die direkt mit dem beobachteten Objekt interagieren. Dies kann zu erheblich detaillierteren Diagrammen führen, als eigentlich gewünscht wird. Deshalb werden weitere Stereotypen verwendet, die zusätzliche Varianten der Semantikdefinition erlauben. Der Stereotyp ≪match:initial≫ ist zum Beispiel besonders gut geeignet für die Definition von testbaren Sequenzdiagrammen, während die freie Interpretation ≪match:free≫ dem Default „...“ entspricht. Tabelle 6.13 beschreibt die vier unterschiedlichen Varianten. Weitere Varianten, die die Form der Beobachtung weiter verfeinern, sind denkbar. So könnten Listen von Methodenaufrufen explizit angegeben werden, die vollständig beobachtet oder ignoriert werden. Dies würde aber die Informationsdichte eines Sequenzdiagramms so erhöhen, dass es schwerer lesbar wird.
Eine formale Definition der vier Varianten ist auf Basis regulärer Ausdrücke in Abbildung 6.14 gegeben. Dabei wird der gesamte Ablauf eines Systems als Wort und ein Sequenzdiagramm als ein regulärer Ausdruck verstanden, für den übereinstimmende Stellen im Systemablauf gesucht werden.
Die lose Semantikdefinition für die Stereotypen ≪match:*≫ basiert auf den Grundlagen aus Abbildung 6.11. Vereinfachend sei hier angenommen, dass ⊆ Act und ⊆ Obj , dass von den Argumenten der Interaktionen abstrahiert wird und f die Identität ist. Es sei außerdem obj(a) = {q(a),z(a)}.
Jedes Objekt in Oϕ ⊆ die Menge, der mit ≪match:ϕ≫ gekennzeichneten Objekte des Sequenzdiagramms. ist mit einem der Stereotypen markiert. Sei jeweilsEin Systemablauf kann als Wort über dem Alphabet der Interaktionen Act aufgefasst werden. Einem Sequenzdiagramm wird als Semantik ein regulärer Ausdruck zugeordnet, dem Systemabläufe genügen. Dies lässt sich nutzen, um im Folgenden die Semantik der ≪match:*≫-Stereotypen zu erklären. Das Sequenzdiagramm = a0a1a2…an bestehend aus den n + 1 Interaktionen ak ∈ Act kann zu einem regulären Ausdruck umgebaut werden. Dieser nimmt die Form (1) und (2) beschreiben Interaktionen, die im Sequenzdiagramm angegeben sein müssten und daher zwischendurch verboten sind. (3) identifiziert Interaktionen, die im Sequenzdiagramm später noch angegeben sind und daher dem initialen Matching widersprechen. Es gilt Xk = Act \ Acomplete \ Avisible \ Ainitial,k. Die Argumente von Interaktionen Act können durch Einführung einer Typisierung berücksichtigt werden. Ebenfalls berücksichtigt werden kann die zum Objektdiagramm analoge dynamische Zuordnung der prototypischen Objekte zu echten Objekten. Einer der großen Vorteile der Äquivalenz dieser Formalisierung zu regulären Ausdrücken ist, dass es effiziente Verfahren aus der Theorie formaler Sprachen gibt, die Systemabläufe protokollieren und auftretende Matches erkennen können. Dies ist eine wesentliche Voraussetzung des Einsatzes von Sequenzdiagrammen für Tests. Allerdings erleidet diese Effizienz Einbußen, wenn zwischendurch Variablen belegt und OCL-Bedingungen ausgewertet werden müssen.
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||