Software-Engineering II
description
Transcript of Software-Engineering II
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)
3 TIT10AIK @ WS 2012
UMLUML 2.0
Christoph KecherGalileo Computing
424 Seiten
ISBN: 3-8984-2738-2 (Deutsch)
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
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
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
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
8 TIT10AIK @ WS 2012
Anwendungsfall
» Spezifiziert eine Aktion oder eine Menge von Aktionen, die von einem Subsystem zur Verfügung gestellt wird
Anwendungsfall Subsystem
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
10 TIT10AIK @ WS 2012
Generalisierung
» Ein Akteur erbt alle Eigenschaften eines anderen Akteurs
» Kann auch für Anwendungsfälle verwendet werden
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
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
13 TIT10AIK @ WS 2012
Extension Points
» Definieren, welchen Teil eines Anwendungsfalles eine Extends-Beziehung bedingt erweitert
ExtensionPoint
ExtensionPoint
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
15 TIT10AIK @ WS 2012
Aktion
» Ausführbarer Knoten, der Funktionalität bietet
» Grundlegende Einheit eines Aktivitätsdiagrammes
16 TIT10AIK @ WS 2012
Kontrollfluss
» Gerichtete Verbindung zw. Aktionsknoten
» Definiert die Reihenfolge der Aktivitäten
Kontrollfluss
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
18 TIT10AIK @ WS 2012
Entscheidungsknoten» Modellieren Entscheidungsfälle
Startpunkt
Endpunkt
19 TIT10AIK @ WS 2012
Gabelung / Zusammenführung
» Deutet parellele Abläufe an
Gabelung
Zusammen-führung
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
21 TIT10AIK @ WS 2012
Zustandsdiagramm BSP.:
Event Interne Aktion
Transition
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
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
24 TIT10AIK @ WS 2012
Create-Nachricht
» Ein Objekt wird erstellt
Nachricht
25 TIT10AIK @ WS 2012
Nachricht mit Rückantwort
Nachricht
Rückantwort
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.
27 TIT10AIK @ WS 2012
Klassen I
Klassenname
Attribute
MethodenAccess
Modifiers
DatentypPrivate –
Protected #Package ~Public +
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
29 TIT10AIK @ WS 2012
Klassen III
Default-Wert
Typ mit Angabeder Multiplizität
(statisches)Klassenattribut
30 TIT10AIK @ WS 2012
(Binäre) Assoziation
» Spezifiziert eine semantische Beziehung zwischen zwei Klassen
» BAStudent und BADozent „kennen“ sich gegenseitig, können interagieren
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
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
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
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
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)
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
37 TIT10AIK @ WS 2012
Assoziation: Generalisierung
» Mithilfe der Generalisierung ist es möglich, Vererbung zu modellieren
» Der Pfeil zeigt stets auf die Superklasse
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
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>>
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
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
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
43 TIT10AIK @ WS 2012
Schnittstellen III
Werden Interfaces von anderen Klassen verwendet, modelliert man dies mit einer <<use>>-Abhängigkeit
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
45 TIT10AIK @ WS 2012
Objektdiagramm
Klassendiagramm Objektdiagramm
Objektname ZugehörigeKlasse
Attributname Attributwert
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
47 TIT10AIK @ WS 2012
Namenlose Objekte
» Objektnamen können weggelassen werden, wenn sie im Kontext nicht wichtig erscheinen
NamenloseInstanz
48 TIT10AIK @ WS 2012
Rollen
» Entsprechen den Rollen des Klassendiagramms
» Werkzeug der Wahl um Objektreferenzen zu modellieren
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“)
50 TIT10AIK @ WS 2012
Horizontale Strukturierung
Pakete
51 TIT10AIK @ WS 2012
Vertikale Strukturierung
Unterpakete
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
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.