Übersicht Inhaltsverzeichnis Vorwort 1 Einführung 2 Agile und UML-basierte Methodik 3 Kompakte Übersicht zur UML/P 3.1 Klassendiagramme 3.2 Object Constraint Language 3.3 Objektdiagramme 3.4 Statecharts 3.5 Sequenzdiagramme 4 Prinzipien der Codegenerierung 5 Transformationen für die Codegenerierung 6 Grundlagen des Testens 7 Modellbasierte Tests 8 Testmuster im Einsatz 9 Refactoring als Modelltransformation 10 Refactoring von Modellen 11 Zusammenfassung und Ausblick Literatur |
3.3 ObjektdiagrammeObjektdiagramme modellieren tatsächliche Strukturen auf exemplarischer Basis. Sie sind daher besonders geeignet, statische Strukturen in eigentlich dynamischen objektorientierten Systemen oder spezielle Situationen darzustellen, die etwa als Vor- oder Nachbedingung bei Tests verwendet werden. Die Integration mit der OCL führt zu einer „Logik für Objektdiagramme“, die einen methodisch verbesserten Einsatz von Objektdiagrammen erlaubt.
3.3.1 Einführung in ObjektdiagrammeEine Kurzbeschreibung der wichtigsten Begriffe bei Objektdiagrammen ist in Abbildung 3.21 enthalten. Diese Begriffe werden nachfolgend detaillierter erklärt. Abbildung 3.22 zeigt ein einfaches Objektdiagramm aus dem Auktionssystem, das nur aus einem Objekt besteht. Dieses Objekt beschreibt eine Strom-Auktion. Objektdiagramme sind grundsätzlich konform zu der durch Klassendiagramme vorgegebenen Struktur. Objektdiagramme sind Klassendiagrammen sehr ähnlich, unterscheiden sich aber in einigen substantiellen Punkten und sind daher eine eigenständige Notation. Objekte beinhalten Attribute, die meistens mit konkreten Werten angegeben werden. Es können mehrere Objekte derselben Klasse auftreten, weshalb jedes Objekt einen eigenen (gegebenenfalls anonymen) Namen hat. In einem Objektdiagramm werden keine Vererbungsbeziehungen dargestellt. Stattdessen können die aus Oberklassen geerbten Attribute in der Unterklasse explizit aufgelistet werden. Die Vererbungsstruktur zwischen Klassen wird also in einem Objektdiagramm „expandiert“. Während Klassendiagramme ein drittes Feld zur Darstellung von Methoden kennen, werden Methoden im Objektdiagramm nicht aufgeführt. Eine Methodenliste existiert also bei Objekten im Objektdiagramm nicht. Ein Link verbindet zwei Objekte. So wie ein Objekt Instanz einer Klasse ist, so ist ein Link Instanz einer Assoziation. Abbildung 3.24 zeigt eine Objektstruktur für eine Auktion, die mindestens die angegebenen drei Personen beinhaltet. Eine davon ist nur als Beobachter zugelassen. Besitzt eine Assoziation an einem Ende einen Qualifikator, so kann in einem Objektdiagramm der konkrete Qualifikatorwert an jedem Link der Assoziation angegeben werden. Abbildung 3.25 zeigt ein solches Objektdiagramm. 3.3.2 KompositionDie Komposition wird auch im Objektdiagramm durch eine ausgefüllte Raute an einem Assoziationsende dargestellt. Während in Klassendiagrammen eine Klasse in mehreren Kompositionen vorkommen darf, ist es nicht erlaubt, ein Teilobjekt im Objektdiagramm mehreren Kompositionslinks zuzuordnen. Um die Abhängigkeit der Teilobjekte vom Ganzen und den Kompositionscharakter stärker hervorzuheben, kann die alternative Darstellung aus Abbildung 3.26 rechts verwendet werden. 3.3.3 Bedeutung eines ObjektdiagrammsAufgrund der Dynamik von Objektsystemen variiert die Anzahl der Objekte in einem System ständig. Außerdem können Objektstrukturen ihre Links dynamisch verändern. Dadurch können unbeschränkt viele Variationen von Objektstrukturen entstehen, die normalerweise nicht vollständig dargestellt werden können. Ein Objektdiagramm modelliert daher einen Systemausschnitt mit zeitlich limitierter Gültigkeit, im Extremfall einen zu einem einzigen Zeitpunkt gültigen Snapshot Wie in Band 1 diskutiert, haben die mit Objektdiagrammen modellierten Strukturen einen prototypischen, musterartigen Charakter. Sie zeigen exemplarisch eine Situation, ohne dass diese Situation notwendigerweise normativen Charakter annimmt. Die im Objektdiagramm dargestellte Situation muss im tatsächlich ablaufenden System nicht auftreten. Sie kann jedoch auch mehr als einmal, zeitlich aufeinanderfolgend oder zur gleichen Zeit auftreten. In jeder der auftretenden Situationen können unterschiedliche oder auch (teilweise) dieselben Objekte beteiligt sein. Objektdiagramme können also im System überlappende Strukturen darstellen. Deshalb ist zwischen der Darstellung eines Objekts im Objektdiagramm und den echten Objekten eines Systems deutlich zu unterscheiden. Die in den Objektdiagrammen dargestellten Objekte werden daher auch als prototypisch bezeichnet. Die Möglichkeit zu Instantiierung von prototypischen Objekten bildet eine Grundlage für die Einbindung der Objektdiagramme in die OCL-Logik. 3.3.4 Logik der ObjektdiagrammeKernelement der Einbindung der exemplarischen Objektdiagramme in die OCL ist die Möglichkeit, ein Objektdiagramm in einfacher Weise selbst als Aussage über die beschriebenen Objekte zu verstehen. Wie in Band 1 durch eine Transformation von Objektdiagrammen nach OCL beschrieben, sind die benannten Objekte freie Variablen solcher Aussagen, während anonyme Objekte existenzquantifiziert sind. Deshalb sind alle im Objektdiagramm verwendeten Namen in der nutzenden OCL-Bedingung einzuführen. Der Name eines Objektdiagramms steht für die darin festgestellte Aussage und kann in der OCL frei eingesetzt werden. So kann mit der folgenden Aussage gefordert werden, dass in jeder Auktion, die bereits begonnen hat, eine Willkommensnachricht versandt wurde. Dabei werden die zwei Objektdiagramme aus Abbildung 3.27 verwendet, von denen Welcome1A die Voraussetzung für die Forderung Welcome1B darstellt.
Die Aussage lautet: „Wenn Objekte a und timePol existieren und dem Objektdiagramm Welcome1A genügen, dann existiert Objekt welcome und es gelten alle im Objektdiagramm Welcome1B formulierten Eigenschaften“. Durch das Ersetzen konkreter Werte durch Variablen oder OCL-Ausdrücke können abstrakte Objektdiagramme gebildet werden. Die abstrakten Werte können in eine OCL-Bedingung importiert und dort zur Spezifikation von Eigenschaften genutzt werden. Um zum Beispiel eine Testauktion aufzusetzen, die 100 Personen hat, kann das Objektdiagramm NPersons aus Abbildung 3.28 verwendet werden.
Der Beschreibungskomfort der aus OCL und Objektdiagrammen integrierten Notation hat sich gegenüber deutlich der OCL verbessert. Aber die Beschreibungsmächtigkeit entspricht der der ursprünglichen OCL/P. Nur Objektdiagramme sind mächtiger geworden, weil so
möglich geworden sind. Dazu werden im Wesentlichen die Logik-Operatoren Disjunktion, Negation, Konjunktion und Quantoren eingesetzt. Damit steigt die Ausdruckskraft von Objektdiagrammen von exemplarischen zu allgemein gültigen Aussagen.
|
||||||||||||||||||||||||||||