53
1 TIT10AIK @ WS 2012 Software-Engineering II UML

1 TIT10AIK @ WS 2012 Software-Engineering II UML

Embed Size (px)

Citation preview

Page 1: 1 TIT10AIK @ WS 2012 Software-Engineering II UML

1 TIT10AIK @ WS 2012

Software-Engineering II

UML

Page 2: 1 TIT10AIK @ WS 2012 Software-Engineering II UML

2 TIT10AIK @ WS 2012

Themenübersicht» Objektorientierung» Aspektorientierung» Vorgehensmodelle» UML» Analyse- & Entwurfsmuster» Objektorientiertes Testen» Versionsverwaltung» Refactoring» Labor (Praktischer Teil)

Page 3: 1 TIT10AIK @ WS 2012 Software-Engineering II UML

3 TIT10AIK @ WS 2012

UMLUML 2.0

Christoph KecherGalileo Computing

424 Seiten

ISBN: 3-8984-2738-2 (Deutsch)

Page 4: 1 TIT10AIK @ WS 2012 Software-Engineering II UML

4 TIT10AIK @ WS 2012

UML – Was ist das?

» Unified Modelling Language» Allgemein verwendbare Modellierungsnotation

» Im Laufe vieler Jahre entstanden» Unabhängig von Programmiersprachen» Unabhängig von Vorgehensmodellen

» Eigenschaften» Einfach» Verständlich» Ausdrucksstark» Standardisiert

Page 5: 1 TIT10AIK @ WS 2012 Software-Engineering II UML

5 TIT10AIK @ WS 2012

Diagrammtypen

» Klassendiagramm» Objektdiagramm» Paketdiagramm» …

» Modellieren statische, zeitunabhängige Gegebenheiten

» Use-Case-Diagramm» Aktivitäts-Diagramm» Zustandsdiagramm» Sequenzdiagramm» …

» Modellieren Verhalten und zeitabhängige Gegebenheiten

Strukturdiagramme Verhaltensdiagramme

Page 6: 1 TIT10AIK @ WS 2012 Software-Engineering II UML

6 TIT10AIK @ WS 2012

Use-Case-Diagramm

» Modellieret Funktionalität des zu entwickelnden Systems

» Zeitpunkt: Analysephase» Bildet Grundlage für weitere Modelle» Hohes Abstraktionsniveau» Sicht eines externen Anwenders» Modelliert, welche Anwendungsfälle die Software bieten wird und nicht wie es Realisiert werden kann

Page 7: 1 TIT10AIK @ WS 2012 Software-Engineering II UML

7 TIT10AIK @ WS 2012

Akteur

» Modelliert einen Typ oder eine Rolle, die ein externer Benutzer oder ein externes System einnimmt

» Mehrere Akteure sind möglich

Page 8: 1 TIT10AIK @ WS 2012 Software-Engineering II UML

8 TIT10AIK @ WS 2012

Anwendungsfall

» Spezifiziert eine Aktion oder eine Menge von Aktionen, die von einem Subsystem zur Verfügung gestellt wird

Anwendungsfall Subsystem

Page 9: 1 TIT10AIK @ WS 2012 Software-Engineering II UML

9 TIT10AIK @ WS 2012

Assoziation

» Modelliert Beziehungen zwischen Anwendungsfällen» Wird angewandt, wenn Akteure Anwendungsfälle

ausführen dürfen» Anmerkung: Da Aktoren externe Elemente in Use-

Cases representieren, werden sie außerhalb der Subsystemgrenzen positioniert

Page 10: 1 TIT10AIK @ WS 2012 Software-Engineering II UML

10 TIT10AIK @ WS 2012

Generalisierung

» Ein Akteur erbt alle Eigenschaften eines anderen Akteurs

» Kann auch für Anwendungsfälle verwendet werden

Page 11: 1 TIT10AIK @ WS 2012 Software-Engineering II UML

11 TIT10AIK @ WS 2012

Include

» Modelliert das unbedingte Einbinden eines Anwendungsfalles in einen anderen

» Jedes Mal, wenn ein Anwendungsfall ausgeführt wird, müssen alle mit <<include>> assoziierten Anwendenfälle ausgeführt werden

» Im Bsp.: Das Planen einer Vorlesung beinhaltet demnach immer das Vorbereiten des Vorlesungsinhaltes, das Halten der Vorlesung und das Festlegen der Prüfungsleistung

Page 12: 1 TIT10AIK @ WS 2012 Software-Engineering II UML

12 TIT10AIK @ WS 2012

Extends» Modelliert das bedingte Einbinden eines

Anwendungsfalles in einen Anderen» Ein bedingt eingebundener Anwendungsfall kann

(muss aber nicht) bei der Ausführung des einbindenden Anwendungsfalles durchgeführt werden

» Achtung: Der Pfeil zeigt von dem bedingt eingebundenen Anwendungsfall auf den Einbindenden

Page 13: 1 TIT10AIK @ WS 2012 Software-Engineering II UML

13 TIT10AIK @ WS 2012

Extension Points

» Definieren, welchen Teil eines Anwendungsfalles eine Extends-Beziehung bedingt erweitert

ExtensionPoint

ExtensionPoint

Page 14: 1 TIT10AIK @ WS 2012 Software-Engineering II UML

14 TIT10AIK @ WS 2012

Aktivitätsdiagramm

» Fokus auf Aktionen, die durchgeführt werden können

» Analyse-Phase: » Modellierung von Geschäftsprozessen» Zeigt Reihenfolge von Prozessen und Tätigkeiten auf» Erleichtert Analyse der Geschäftsprozesse» Können zur Umsetzung verwendet werden» Sicht des Anwenders

» Entwurfs-Phase» Modellierung von internen Systemprozessen» Wichtigster Einsatz der AD» Umfangreiche Abläufe, komplexe Algorithmen

» Implementierungs-Phase:» Realisierungsvorlage

» Test-Phase:» Grundlage für Testfälle

Page 15: 1 TIT10AIK @ WS 2012 Software-Engineering II UML

15 TIT10AIK @ WS 2012

Aktion

» Ausführbarer Knoten, der Funktionalität bietet

» Grundlegende Einheit eines Aktivitätsdiagrammes

Page 16: 1 TIT10AIK @ WS 2012 Software-Engineering II UML

16 TIT10AIK @ WS 2012

Kontrollfluss

» Gerichtete Verbindung zw. Aktionsknoten

» Definiert die Reihenfolge der Aktivitäten

Kontrollfluss

Page 17: 1 TIT10AIK @ WS 2012 Software-Engineering II UML

17 TIT10AIK @ WS 2012

Aktivitätsbereich

» Ordnet Aktivitäten eindeutig Akteuren zu (Siehe Use-Case-Diagramm)

» Alle Aktionen, die hier modelliert werden, müssen im Use-Case-Diagramm zuvor definiert worden sein

» Umgekehrt ist es jedoch möglich, dass eine in einem Use-Case-Diagramm definierte Aktion nicht in einem Aktivitätsdiagramm verfeinert wird

Akteur

Page 18: 1 TIT10AIK @ WS 2012 Software-Engineering II UML

18 TIT10AIK @ WS 2012

Entscheidungsknoten» Modellieren Entscheidungsfälle

Startpunkt

Endpunkt

Page 19: 1 TIT10AIK @ WS 2012 Software-Engineering II UML

19 TIT10AIK @ WS 2012

Gabelung / Zusammenführung

» Deutet parellele Abläufe an

Gabelung

Zusammen-führung

Page 20: 1 TIT10AIK @ WS 2012 Software-Engineering II UML

20 TIT10AIK @ WS 2012

Zustandsdiagramm

» Ahnlich dem Aktivitätsdiagramm» Ähnliche Symbolik

» Konzentriert sich im Gegensatz zum Aktivitätsdiagramm nicht auf Aktionen sondern (zustandsabhängige) Reaktionen von Systemen

Page 21: 1 TIT10AIK @ WS 2012 Software-Engineering II UML

21 TIT10AIK @ WS 2012

Zustandsdiagramm BSP.:

Event Interne Aktion

Transition

Page 22: 1 TIT10AIK @ WS 2012 Software-Engineering II UML

22 TIT10AIK @ WS 2012

Sequenzdiagramm

» Modellieren zeitabhängige Interaktionen zwischen Objekten

» Im Vergleich zu Aktivitätsdiagrammien liegt hier der Fokus auf den Nachrichtenaustausch, nicht die verschiedenen Ablaufpfade

» Analysephase: Darstellungen der Geschäftsprozesse auf Nachrichtenebene

» Entwurfsphase: Interaktionen von Systemen oder Aktoren» Bsp: Kommunikation Benutzer mit GUI

Page 23: 1 TIT10AIK @ WS 2012 Software-Engineering II UML

23 TIT10AIK @ WS 2012

Lebenslinie

» Eine Lebenslinie stellt einen Teilnehmer einer Interaktion dar

» Durch ein Stop-Symbol wird dargestellt, dass eine Lebenslinie terminiert

» Eine gestrichelte Linie stellt einen passiven bereich einer Lebenslinie dar

Lebenslinie

Stop-SymbolpassiveLebenslinie

Page 24: 1 TIT10AIK @ WS 2012 Software-Engineering II UML

24 TIT10AIK @ WS 2012

Create-Nachricht

» Ein Objekt wird erstellt

Nachricht

Page 25: 1 TIT10AIK @ WS 2012 Software-Engineering II UML

25 TIT10AIK @ WS 2012

Nachricht mit Rückantwort

Nachricht

Rückantwort

Page 26: 1 TIT10AIK @ WS 2012 Software-Engineering II UML

26 TIT10AIK @ WS 2012

Klassendiagramm

» Zentrales Konzept der UML» Modellierung von Klassen und deren Zusammenhänge» Analysephase: Relativ einfache Diagramme für Kommunikation mit Vorgesetzten / Partnern

» Entwurfsphase: Detailliert, legt spätere Programmstruktur fest

» Definieren nicht, in welcher Reihenfolge Klassen miteinander kommunizieren.

Page 27: 1 TIT10AIK @ WS 2012 Software-Engineering II UML

27 TIT10AIK @ WS 2012

Klassen I

Klassenname

Attribute

MethodenAccess

Modifiers

DatentypPrivate –

Protected #Package ~Public +

Page 28: 1 TIT10AIK @ WS 2012 Software-Engineering II UML

28 TIT10AIK @ WS 2012

Klassen II

class BADozent

{

private String name;

private String geburtsDatum;

public void setName( String name )

{

}

public void benote( BAStudent student )

{

}

}

vs.

» einfach, übersichtlich» Für fachunkundige lesbar» Ohne programmiersprachen-

spezifische Elemente

Page 29: 1 TIT10AIK @ WS 2012 Software-Engineering II UML

29 TIT10AIK @ WS 2012

Klassen III

Default-Wert

Typ mit Angabeder Multiplizität

(statisches)Klassenattribut

Page 30: 1 TIT10AIK @ WS 2012 Software-Engineering II UML

30 TIT10AIK @ WS 2012

(Binäre) Assoziation

» Spezifiziert eine semantische Beziehung zwischen zwei Klassen

» BAStudent und BADozent „kennen“ sich gegenseitig, können interagieren

Page 31: 1 TIT10AIK @ WS 2012 Software-Engineering II UML

31 TIT10AIK @ WS 2012

Assoziation - Name

» Durch einen Assoziationsnamen kann man die Beziehung genauer spezifizieren (e.g. „benotet“)

Assoziationsname

Anmerkung: Dies würde heißen, dass auch der BAStudent den BADozent benoten kann

Page 32: 1 TIT10AIK @ WS 2012 Software-Engineering II UML

32 TIT10AIK @ WS 2012

Assoziation - Navigierbarkeit

» Gerichtete Assoziationen sind binäre Assoziationen, die die Navigierbarkeit einschränken

» Ein navigierbares Ende definiert, dass die Klasse am anderen Assoziationsende Kenntnis über die Klasse besitzt

» Ein nicht navigierbares Ende verbietet solch eine Kenntnis

nicht navigierbar navigierbar

BADozent enthält eine Abhängigkeit zu BAStudent. Umgekehrt besteht keine Abhängigkeit

Page 33: 1 TIT10AIK @ WS 2012 Software-Engineering II UML

33 TIT10AIK @ WS 2012

Assoziation - Multiplizität

» Durch Hinzufügen von Multiplizitäten kann definiert werden, wieviele Referenzen des anderen Typs existieren können.

» Multiplizitäts-Formen:» Beliebig viele „*“» Feste Zahl z.B. „1“» Zahlenbereich z.B. „1..15“ oder „1..*“

» Im Beispiel:» Ein BADozent kann einen bis 40 Studenten benoten» Ein BAStudent kann von einem bis 15 Dozenten benotet werden

Page 34: 1 TIT10AIK @ WS 2012 Software-Engineering II UML

34 TIT10AIK @ WS 2012

Assoziation - Rollen

» Definieren die Rollen der Klassen bei der Assoziation» Eine Klasse kann

» an mehreren Assoziationen teilhaben» dabei in verschiedene Rollen schlüpfen

» Die Rolle wird oft nach dem Attributnamen der Referenz benannt

Sichtbarkeit der Rolle

Rolle

Page 35: 1 TIT10AIK @ WS 2012 Software-Engineering II UML

35 TIT10AIK @ WS 2012

Assoziation: Aggregation

» Spezielle Form der binären Assoziation» Beschreibt, dass eine Klasse ein Teil einer anderen ist

» Ein Studiengang kann auch ohne BA-Studenten existieren (auch wenn das nichts Gutes für den Studiengang verheißt)

Page 36: 1 TIT10AIK @ WS 2012 Software-Engineering II UML

36 TIT10AIK @ WS 2012

Assoziation: Komposition

» Starke Form der Aggregation» Sagt aus, dass die Verbindung zwischen den Klassen

untrennbar ist.» Wird das komponierende Objekt zerstört können die

komponierte Objekte nicht weiterexistieren.» Im Beispiel:

» Ein Kurs kann ohne BA-Studenten nicht existieren

Page 37: 1 TIT10AIK @ WS 2012 Software-Engineering II UML

37 TIT10AIK @ WS 2012

Assoziation: Generalisierung

» Mithilfe der Generalisierung ist es möglich, Vererbung zu modellieren

» Der Pfeil zeigt stets auf die Superklasse

Page 38: 1 TIT10AIK @ WS 2012 Software-Engineering II UML

38 TIT10AIK @ WS 2012

Abstrakte Methoden

» Durch kursives Schreiben eines Methoden- oder Klassennamens wird dargestellt, dass es sich um eine abstrakte Eigenschaft handelt

» Optional wird unterhalb des Klassennamens auch {abstract} notiert abstrakt

Page 39: 1 TIT10AIK @ WS 2012 Software-Engineering II UML

39 TIT10AIK @ WS 2012

Stereotyp

» Können in allen Diagrammarten verwendet werden

» Spezifizieren Art des Elementes» Verändern nicht die Semantik» Verändern die Auskunft über Zweck und Rolle des Elementes

<<stereotyp>>

Page 40: 1 TIT10AIK @ WS 2012 Software-Engineering II UML

40 TIT10AIK @ WS 2012

Gängige Stereotypen

<<utility>>» Dient als Werkzeugkasten für weitere Klassen (e.g. java.util.*)

<<interface>> » Schnittstellendefinition<<enumeration>>» Definiert einen Datentypen, der Elemente beinhalten kann (e.g. java.util.Vector)

<<use>>» Gibt an, dass das Element vom anderen verwendet wird

Page 41: 1 TIT10AIK @ WS 2012 Software-Engineering II UML

41 TIT10AIK @ WS 2012

Schnittstellen I

» Mit Schnittstellen kann man die in Java existierenden Interfaces modellieren

» Sie besitzen wie zu erwarten einen Namen und Schnittstellen-Operationen

» Oft werden Schnittstellen auch mit dem Stereotyp <<interface>> oberhalb des Namens gekennzeichnet

Name

Operationen

PartyPerson<<interface>

+feiern(): void

Page 42: 1 TIT10AIK @ WS 2012 Software-Engineering II UML

42 TIT10AIK @ WS 2012

Schnittstellen II» Durch einen gestrichelten geschlossenen Pfeil kann

modelliert werden, dass eine Klasse ein Interface realisiert (implementiert).

» Gelegentlich wird dies auch durch die Notation von <<realize>> am Pfeil betont

Page 43: 1 TIT10AIK @ WS 2012 Software-Engineering II UML

43 TIT10AIK @ WS 2012

Schnittstellen III

Werden Interfaces von anderen Klassen verwendet, modelliert man dies mit einer <<use>>-Abhängigkeit

Page 44: 1 TIT10AIK @ WS 2012 Software-Engineering II UML

44 TIT10AIK @ WS 2012

Objektdiagramm

» Basiert auf ein Klassendiagramm» Dient zur Veranschaulichung von

Klassendiagrammen» Stellt die instanziierten Objekte zu einem

speziellen Zeitpunkt dar» Enthält nur Attribute, keine Methoden» Darf nur Objekte beinhalten, deren Klassen im

zugrundeliegenden Klassendiagramm definiert wurden

» Darf nur Attribute beinhalten, die diese Klassen definiert haben

» Kann unvollständig sein und nur Attribute umfassen, die für den Zustand von Bedeutung sind

Page 45: 1 TIT10AIK @ WS 2012 Software-Engineering II UML

45 TIT10AIK @ WS 2012

Objektdiagramm

Klassendiagramm Objektdiagramm

Objektname ZugehörigeKlasse

Attributname Attributwert

Page 46: 1 TIT10AIK @ WS 2012 Software-Engineering II UML

46 TIT10AIK @ WS 2012

Link

» Pendant zur Assoziation im Klassendiagramm

» Verbinden genau zwei Objekte

» Bei 1:n-Multiplizitäten werden Links zu den einzelnen Instanzen modelliert

Link

Page 47: 1 TIT10AIK @ WS 2012 Software-Engineering II UML

47 TIT10AIK @ WS 2012

Namenlose Objekte

» Objektnamen können weggelassen werden, wenn sie im Kontext nicht wichtig erscheinen

NamenloseInstanz

Page 48: 1 TIT10AIK @ WS 2012 Software-Engineering II UML

48 TIT10AIK @ WS 2012

Rollen

» Entsprechen den Rollen des Klassendiagramms

» Werkzeug der Wahl um Objektreferenzen zu modellieren

Page 49: 1 TIT10AIK @ WS 2012 Software-Engineering II UML

49 TIT10AIK @ WS 2012

Paketdiagramm

» Frühe Phasen der Softwareentwicklung (Analyse/Design)

» Horizontale Strukturierung» Gruppiert Klassen in Pakete» Klassifizierung von Klassen

» Vertikale Strukturierung» Gruppiert Pakete in Unterpakete» Bessere Übersicht („Zoomen“)

Page 50: 1 TIT10AIK @ WS 2012 Software-Engineering II UML

50 TIT10AIK @ WS 2012

Horizontale Strukturierung

Pakete

Page 51: 1 TIT10AIK @ WS 2012 Software-Engineering II UML

51 TIT10AIK @ WS 2012

Vertikale Strukturierung

Unterpakete

Page 52: 1 TIT10AIK @ WS 2012 Software-Engineering II UML

52 TIT10AIK @ WS 2012

Notizen

» Notizen sind ein zentrales Element der UML

» Sie können in jeder Art von Diagramm verwendet werden

» Sie sollen deskriptiv die modellierten Gegebenheiten verdeutlichen

Notiz

Page 53: 1 TIT10AIK @ WS 2012 Software-Engineering II UML

53 TIT10AIK @ WS 2012

Tools

» ArgoUML, Open Source» MagicDraw UML, Kommerziell» PlantUML, Open Source» Innovator, Kommerziell» ... und viele mehr

» Achten Sie bei der Wahl der Tools, ob diese UML 2.0 korrekt darstellen!

» Bei PlantUML ist eine Anpassung der Konfiguration nötig.