Ü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.1 KlassendiagrammeKlassendiagramme bilden das architekturelle Rückgrat vieler Systemmodellierungen. Dementsprechend haben Klassendiagramme und darin besonders Klassen eine Reihe von Aufgaben zu erfüllen (Abbildung 3.1): Klassendiagramme beschreiben die Struktur beziehungsweise Architektur eines Systems, auf der nahezu alle anderen Beschreibungstechniken basieren. Das Konzept Klasse ist durchgängig in Modellierung und Programmierung eingesetzt und bietet daher ein Rückgrat für Traceability von Anforderungen und Fehlern entlang der verschiedenen Aktivitäten eines Projekts. Klassendiagramme bilden das Skelett für fast alle weiteren Notationen und Diagrammarten, da diese sich jeweils auf die in Klassendiagrammen definierten Klassen und Methoden stützen. So werden in der Analyse Klassendiagramme genutzt, um Konzepte der realen Welt zu strukturieren, während in Entwurf und Implementierung Klassendiagramme vor allem zur Darstellung einer strukturellen Sicht des Softwaresystems genutzt werden.
Die Aufgaben einer Klasse sind:
3.1.1 Klassen und VererbungDie Abbildung 3.2 enthält eine Einordnung der wichtigsten Begriffe für Klassendiagramme.
In Abbildung 3.3 ist ein einfaches Klassendiagramm bestehend aus einer Klasse zu sehen. Je nach Grad der Detaillierung können Attribute und Methoden der Klassen weggelassen oder nur teilweise angegeben werden. Auch Typen von Attributen und Methoden, Sichtbarkeitsangaben und weitere Modifikatoren sind optional. Zur Strukturierung von Klassen in überschaubare Hierarchien wird die Vererbungsbeziehung eingesetzt. Abbildung 3.4 demonstriert Vererbung und Interface-Implementierung anhand der Gemeinsamkeiten mehrerer Nachrichtenarten des in Kapitel D, Band 1 beschriebenen Auktionssystems. Die Erweiterung von Interfaces ist darin nicht abgebildet. Sie wird wie die Vererbung zwischen Klassen dargestellt. 3.1.2 AssoziationenEine Assoziation dient dazu, Objekte zweier Klassen in Beziehung zu setzen. Mithilfe von Assoziationen können komplexe Datenstrukturen gebildet werden und Methoden benachbarter Objekte aufgerufen werden. Abbildung 3.5 beschreibt einen Ausschnitt aus dem Auktionssystem mit mehreren Assoziationen in unterschiedlichen Formen. Eine Assoziation besitzt im Normalfall einen Assoziationsnamen und für jedes der beiden Enden je eine Assoziationsrolle, eine Angabe der Kardinalität und eine Beschreibung der möglichen Navigationsrichtungen. Einzelne Angaben können im Modell auch weggelassen werden, wenn sie zur Darstellung des gewünschten Sachverhalts keine Rolle spielen und die Eindeutigkeit nicht verloren geht. Assoziationen können grundsätzlich uni- oder bidirektional sein. Ist keine explizite Pfeilrichtung angegeben, so wird von einer bidirektionalen Assoziation ausgegangen. Formal werden die Navigationsmöglichkeiten in dieser Situation als unspezifiziert und damit nicht als eingeschränkt betrachtet. Eine besondere Form der Assoziation ist die Komposition. Sie wird durch eine ausgefüllte Raute an einem Assoziationsende dargestellt. In einer Komposition sind die Teilobjekte in einer starken auch den Lebenszyklus betreffenden Abhängigkeit vom Ganzen. Der UML-Standard bietet eine Reihe zusätzlicher Merkmale für Assoziationen an, die Assoziationseigenschaften genauer regeln. Abbildung 3.6 beinhaltet einige häufig eingesetzte Merkmale, wie zum Beispiel {ordered}, das einen geordneten Zugriff mit Index erlaubt. Mit {frozen} wird angezeigt, dass nach der Initialisierung eines Auktionsobjekts die beiden Assoziationen zu den Policy-Objekten nicht mehr verändert werden. Mit {addOnly} wird modelliert, dass in der Assoziation nur Objekte hinzugefügt werden dürfen, das Entfernen jedoch verboten ist. Qualifizierte Assoziation bieten die Möglichkeit, aus einer Menge von zugeordneten Objekten mithilfe des Qualifikators ein einzelnes Objekt zu selektieren. Abbildung 3.7 zeigt mehrere auf unterschiedliche Weise qualifizierte Assoziationen. Während in explizit qualifizierten Assoziationen die Art des Qualifikators wählbar ist, stehen in geordneten Assoziationen ganzzahlige Intervalle beginnend mit der 0 zur Verfügung. 3.1.3 Repräsentation und StereotypenKlassendiagramme haben oft das Ziel, die für eine bestimmte Aufgabe notwendige Datenstruktur einschließlich ihrer Zusammenhänge zu beschreiben. Eine vollständige Liste aller Methoden und Attribute ist für einen Überblick dabei eher hinderlich. Ein Klassendiagramm stellt daher meist eine unvollständige Sicht des Gesamtsystems dar. So können einzelne Klassen oder Assoziationen fehlen. Innerhalb der Klassen können Attribute und Methoden weggelassen oder unvollständig dargestellt werden. Um einem UML-Diagramm anzusehen, ob die darin enthaltene Information vollständig ist, werden in UML/P die Repräsentationsindikatoren „… “ zur Markierung unvollständiger Information und „©“ zur Darstellung vollständiger Information verwendet (Abbildung 3.8). Die Indikatoren „©“ und „… “ wirken nicht auf die Klasse selbst, sondern auf ihre Darstellung innerhalb des Klassendiagramms. Ein „©“ beim Klassennamen besagt, dass sowohl die Attribut- als auch die Methodenliste vollständig ist. Demgegenüber bedeutet der Unvollständigkeits-Indikator „… “, dass die Darstellung unvollständig sein kann. Die beiden Repräsentationsindikatoren sind nur eine spezielle From von Merkmalen mit eigener syntaktischer Darstellung. Die UML bietet sehr allgemein die Möglichkeit, Modellelemente mit Stereotypen und Merkmalen zu markieren (Abbildung 3.9), die deren allgemeine Syntax die Formen ≪stereotyp≫, {merkmal} oder {merkmal=wert} hat.
|
|||||||||