1 / 49 Spezifikation von Kommunikationssystemen 11. Unified Modeling Language (UML) Prof. Jochen Seitz Fachgebiet Kommunikationsnetze 20. Juli 2015
2 / 49 Übersicht 1 Modellierung 2 Grundlagen 3 Strukturdiagramme 4 Verhaltensdiagramme 5 Interaktionsdiagramme
Exkurs: Modellierung Modell Vereinfachung der Realität Ziel Komplexes System besser verstehen Spezifkation Konstruktion Modell Visualisierung Dokumentation 3 / 49
Objekt-orientierte Modellierung Analyse 1 Konkretisierung Design 2 Forward Engineering 3 Backward Engineering 4 Roundtrip Engineering Code Quelle: (3) 4 / 49
5 / 49 OO Modellierungssichten Begriffe Funktionalität Leistung Skalierbarkeit Durchsatz Entwurf Interaktion Anwendungsfall Implementierung Deployment Konfigurationsmanagement Systembestandteile Verhalten Topologie Verteilung Installation
Grundregeln Modellauswahl Beeinflusst von Herangehensweise und Lösungsansätzen Präzisionsebenen Unterschiedliche Detaillierungsgrade Bezug zur Realität Vereinfachung ohne Ausschluss wichtiger Aspekte Mehrere Modelle Unterschiedliche Sichtweisen 6 / 49
7 / 49 Einführung in UML Standardsprache zur Modellierung von Begriffen und entsprechenden Beziehungen Building Blocks Regeln Grundlegende Mechanismen mit graphischer Notation Definiert, wie Modelle erzeugt werden, NICHT welche Modelle benötigt werden! Kein Vorgehensmodell bzw. Entwicklungsprozess
8 / 49 Geschichte
9 / 49 Building Blocks Dinge Beziehungen Diagramme Struktur Verhalten Gruppierung Anmerkungen Abhängigkeiten Umsetzung Generalisierung Assoziationen
10 / 49 Diagrammübersicht statische Aspekte Struktur Klassendiagramm Objektdiagramm Komponentendiagramm Kompositionsstrukturdiagramm Paketdiagramm Verteilungsdiagramm Profildiagramm dynamische Aspekte Verhalten / Funktion Anwendungsfalldiagramm Zustandsdiagramm Aktivitätsdiagramm Interaktionen Sequenzdiagramm Kommunikationsdiagramm Zeitverlaufsdiagramm Interaktionsübersichtsdiagramm
11 / 49 Klassendiagramm - Anwendung Modellierung von Begriffen und Beziehungen zwischen diesen Begriffen Statische Analyse- oder Designsicht Enthält alle relevanten strukturellen Zusammenhänge und Datentypen
12 / 49 Klassendiagramm - Notation - Klasse Name Sichtbarkeiten: Attribute private protected package public Methoden / Operationen Point - xcoord - xcoord : Double - xcoord : Double = 0 # origin + setx( ) ~ setx( x Double ) + getx( ) : Double Typ Initalisierung Klassenvariable Parameter Rückgabewert
13 / 49 Klassendiagramm - Vererbung Notation RoutingProtocol - RoutingTable Randbedingung Vererbung + findpath() {incomplete} OLSR AODV - HelloInterval - RouteTimeout + sendhello() + sendrreq() + sendtc() + sendrrep() Oberklasse als allgemeiner Typ und Unterklasse als spezieller Typ, der die Oberklasse erweitert Eine Ist-Ein-Beziehung Objekt der Oberklasse ist durch Objekte der Unterklasse ersetzbar + sendrerr()
14 / 49 Klassendiagramm - Assoziation Notation Dienstanbieter Rolle Nutzer WebServer Session 1..* * Browser Leserichtung Name der Assoziation Session - password + login() Multiplizität Assoziationsklasse Logische Beziehungen zwischen Klassen Beziehungen gelten für alle Objekte einer Klasse Von Assoziation abhängige Attribute und Operationen
15 / 49 Klassendiagramm - Komposition/Aggregation Notation Stack 1..* 1 Protocol Komposition 1..* Aggregation Multiplizität immer 1 Spezielle Assoziationen Objekt ist Bestandteil eines anderen Aggregation und Komposition sind: - transitiv - asymmetrisch ProtocolDataUnit
16 / 49 Klassendiagramm - Notation - Spezialfälle Stereotyp datatype Point xcoord: Double ycoord: Double interface Connection connect() abstract Router findpath() Anbieter Nutzer Router findpath()
17 / 49 Klassendiagramm - Unterscheidung Sichtweise Schnittstelle Außenschnittstelle mit Zugriffsmöglichkeiten Abstrakte Klasse Innenansicht mit gemeinsamem Kern aller Unterklassen Implementierung Erweiterungen Kein Code möglich Reine Definition der Schnittstelle Müssen in jeder Unterklasse einzeln ergänzt werden Defaultimplementierung Überschreiben in Unterklasse möglich Durch Defaultimplementierung in allen Unterklassen verfügbar
18 / 49 Objektdiagramm - Anwendung Dokumentiert die innere Struktur des Systems zu einem bestimmten Zeitpunkt zur Laufzeit Zeigt konkrete Objekte und Attributbelegungen Beispielhafte Darstellung zur Veranschaulichung Herleitung von Mengenverhältnissen Dokumentation der Realisierung von abstrakten Klassen / bestimmten Assoziationen Spezifikation von Testdaten Überprüfung des Modells
19 / 49 Objektdiagramm - Unterschied zu Klassendiagrammen Gleicher Detailierungsgrad Aber: Ergebnis der Vererbung Konkrete Links, die aus Assoziationen entstehen Konkrete Werte Unvollständiges Beispiel
20 / 49 Objektdiagramm - Notation yukon : Webserver : Stack benanntes Objekt Link aktives Objekt : HTTP : TCP [connected] : IP : WLAN anonymes Objekt bestimmter Zustand : Frame seqno = "123" bestimmter Wert
21 / 49 Komponten- und Kompositionsstrukturdiagramm - Definition Komponenten modulare Systemteile, die ihren Inhalt kapseln eigenständige Anwendungen mit definierten Schnittstellen bestehen aus enthaltenen Klassen oder anderen Komponenten
22 / 49 Komponten- und Kompositionsstrukturdiagramm - Verwendung Grobentwurf eines Systems Struktur des Systems physikalische Bestandteile Zuständigkeiten, Beziehungen und Schnittstellen von Teilen weitere Ziele wiederverwendbare SW-Komponenten Zuordnung von Klassen zu Quellcode-Dateien
23 / 49 Komponten- und Kompositionsstrukturdiagramm - Unterschiede Kompositionsstrukturdiagramm Wie sieht das Innenleben einer Klasse, einer Komponente, eines Systemteils aus? Zeigt Teile eines Gesamtelements und deren Mengenverhältnisse Ermöglicht präzise Modellierung der Teile Komponentendiagramm Wie werden meine Klassen zu Komponenten zusammengefasst und wie stehen diese in Beziehung? Zeigt Organisation und Abhängigkeiten einzelner technischer Komponenten
24 / 49 Komponentendiagramm - Notation Komponentensymbol Komponente Schnittstellenverbindung Port TCPIPStack Teil WebBrowser INetwork TCP direkte Verbindung IP delegierte Verbindung Komponentendefinition NetworkInterface Portname
25 / 49 Kompositionsstrukturdiagramm - Notation Komponente Middleware ServiceBroker Teil Externe Schnittstelle sucht Dienst registriert Dienst Dienst ServiceUser nutzt Dienst ServiceProvider
26 / 49 Paketdiagramm - Anwendung Wie kann ich mein Modell so aufteilen, dass es übersichtlich bleibt? ein großes System in Arbeitspakete aufteilen die Pakete und deren Beziehungen untereinander beschreiben gruppieren der Modellelemente nach Themen (funktional, logisch oder in Schichten) Anmerkungen Ein Modellelement darf nur zu einem Paket gehören Ein Paket definiert einen Namensraum und eine Sichtbarkeit Pakete können verschachtelt sein
27 / 49 Paketdiagramm - Notation Network einfache Namen ProtocolStack umgebendes Paket import Paketinhalt Paket Interfaces::Ethernet qualifizierter Name
28 / 49 Verteilungsdiagramm - Anwendung Wie sieht das Einsatzumfeld des Systems aus? Hardware, Server, Datenbanken usw. Wo befinden sich die Komponenten des Systems zur Laufzeit? greifbare Systemteile Anmerkungen hohes Abstraktionsniveau wenige Notationselemente
29 / 49 Verteilungsdiagramm - Notation PC Printer PC Verbindungen LAN Access Point Router Internet Knoten Mobiles Endgerät
30 / 49 Profildiagramm - Anwendung Darstellung von verwendeten UML-Profilen Wie wurde die UML für dieses Projekt angepasst? neue Stereotypen Anmerkungen Erfordert Verständnis des UML Meta-Modells Erst seit UML 2.2 vorhanden
31 / 49 Anwendungsfalldiagramm - Anwendung Zentraler Aspekt: Welche Funktionen bietet mein System nach außen? Black-Box-Ansicht mit Aktoren (Nutzern, Stakeholdern und Nachbarsystemen) Verwendung für Modellierung einzelner Abläufe inkl. Varianten Kontextabgrenzung Funktionale Anforderungen Anmerkungen: Verbale, textuelle Beschreibung oder graphische Darstellung hohes Abstraktionsniveau einfache Notationsmittel
32 / 49 Anwendungsfall - Template Use Case Name Primary Actor Further Actors Stakeholders and Interests Success Guarantees Minimal Guarantees Trigger Basic Course Alternate Course 2a Step 1 Step 2 Step 3 Step 4 Step 2a Step 2a1
33 / 49 Anwendungsfalldiagramm - Notation System Realisierung Aktor UseCase extend include Systemgrenze Generalisierung
34 / 49 Zustandsdiagramm - Anwendung Modellieren von Zustandsautomaten Zustände, Übergänge und Ereignisse inkl. Bedingungen, Ein- und Austrittsaktionen System als White-Box zustandsbasierte Abläufe Algorithmen Alternative Beschreibung möglich verbal Aktivitätsdigrammen (für einzelne Abläufe)
Zustandsdiagramm - Notation <<webservice>> Flugreservation reservieren() canceln() buchen() sm Flugreservation (protocol) reservieren() canceln() Flug reserviert buchen() [Buchung möglich] [Buchung nicht möglich] Flug gebucht Reservation gecancelt Quelle: (9) 35 / 49
36 / 49 Aktivitätsdiagramm - Anwendung Modellierung von Abläufen und deren Steuerung Bedingungen, Schleifen, Verzweigungen Parallelisierung und Synchronisation Darstellung von flussorientierten Prozessen einzelne Schritte einer Aktivität inkl. Reihenfolge Verantwortungsbereiche ( swim lanes )
37 / 49 Aktivitätsdiagramm - Notation Punkte addieren [Punkte < 100] [Punkte >= 100] Klausur verfehlt Klausur bestanden Note ermitteln Note veröffentlichen Schein ausstellen Quelle: (4)
38 / 49 Sequenzdiagramm - Anwendung Modellierung des zeitlichen Ablaufs eines Einzelfalls Objekte und Methodenaufrufe Informationsaustausch zwischen Kommunikationspartnern präziser zeitlicher Ablauf mit Nebenläufigkeiten konkretisiert häufig einen Anwendungsfall Konventionen Leserichtung links rechts, oben unten möglichst keine Überkreuzungen von Aufrufen (in der Darstellung)
39 / 49 Sequenzdiagramm - Unterschied zu Weg-Zeit-Diagrammen Beide stellen zeitliche Abläufe dar Aber: im Sequenzdiagramm: Methodenaufrufe zwischen Objekten im Weg-Zeit-Diagramm: Signale und Reaktionen darauf (PDUs, weitere Signale)
40 / 49 Sequenzdiagramm - Notation :A :B synchroner Operationsaufruf asynchroner Operationsaufruf synchroner Operationsaufruf...... mit Antwort Quelle: (7)
41 / 49 Kommunikationsdiagramm - Anwendung Modellierung der Zusammenarbeit zwischen Kommunikationspartnern im Überblick Beziehungen zwischen den Objekten und die Nachrichten, die übertragen werden Reihenfolge, in der die Nachrichten gesendet werden Anmerkungen viele interagierende Teile möglichst einfach darstellen grundsätzliches Verständnis des Ablaufs und der Verantwortlichkeiten keine exakte zeitliche Abfolge
42 / 49 Kommunikationsdiagramm - Unterschied zu Sequenzdiagrammen Kommunikationsdiagramm Anordnung der Objekte in Fläche Sequenz der Nachrichten durch Nummerierung viele Objekte, die wenige Nachrichten austauschen Sequenzdiagrammen Objekte in einer Linie Sequenz der Nachrichten graphisch auf Zeitachse wenige Objekte, die viele Nachrichten austauschen
43 / 49 Kommunikationsdiagramm - Notation Quelle: (6)
44 / 49 Zeitverlaufsdiagramm - Anwendung Visualisiert das exakte zeitliche Verhalten Fragestellungen Zusammenspiel von Zuständen verschiedener Systeme Abläufe, bei denen Ereignisse zum richtigen Zeitpunkt eintreten sollen Nachrichtenaustausch
45 / 49 Zeitverlaufsdiagramm - Notation Rot Verkehrsampel Gelb Grün Quelle: (8)
46 / 49 Interaktionsübersichtsdiagramm - Anwendung Wann läuft welche Interaktion ab? Verbindet Interaktionsdiagramme (Sequenz-, Kommunikations- und Zeitverlaufsdiagramme) Anmerkungen Top-Level-Ebene hohes Abstraktionsniveau
Interaktionsübersichtsdiagramm - Notation sd Zutrittskontrolle sd Code eingeben :Benutzer :Zutrittskontroll System Code eingeben Code prüfen [Code OK] [Code nicht OK] ref Drehtür für einen Durchgang freigeben Quelle: (5) 47 / 49
48 / 49 Zusammenfassung - Wann verwende ich welches Diagramm? verschiedene Diagramme um ähnliche Sachverhalte darzustellen Sequenzdiagramm vs. Kommunikationsdiagramm Diagramme in verschiedenen Entwicklungsphasen verwendbar Beispiel: Klassendiagramm in der Analyse und im Design aber unterschiedliche Art des Einsatzes Pro Diagramm nur ein spezieller Ausschnitt des Systems Diagrammauswahl ist projektabhängig Die Anzahl der zu erstellenden Diagramme abhängig von Komplexität Kommunikationsbedarf Diagramme entstehen nach Bedarf Festlegung erlaubter Diagrammtypen erfolgt im Projekt
49 / 49 Literatur I [1] G. Booch, J. Rumbaugh, and I. Jacobson. The Unified Modelling Language User Guide. Addison-Wesley, 2nd edition edition, 2005. [2] T. Erler and M. Ricken. UML 2 Ge-Packt. Mitp-Verlag, 2005. [3] R. Hahn and W. Weber. Objektorientierte Analyse und Design, 2014. Hochschule Darmstadt. Fachbereich Informatik. [4] Wikipedia. Aktivitätsdiagramm, 2015. [5] Wikipedia. Interaktionsübersichtsdiagramm, 2015. [6] Wikipedia. Kommunikationsdiagramm, 2015. [7] Wikipedia. Sequenzdiagramm, 2015. [8] Wikipedia. Zeitverlaufsdiagramm, 2015. [9] Wikipedia. Zusantdsdiagramm, 2015.