Modellierung
Abstraktion der Domäne
Ziel: Herstellung konsistenter Sichten, Entwurf eines Systems.
Anforderungen → Modelle → Daten/Komponenten/Testspezifikationen.
Domäne / Problemdomäne / Anwendungsdomäne
Abgrenzbares Problemfeld Einsatzbereich für Computersysteme oder Software.
Spezielle Anforderungen an ein technisches System je nach Fachgebiet.
Konzeptionelle Modellierung
Abstrakte Repräsentation
Zeigt Struktur und Verhalten des zu entwickelnden Softwaresystems
Modelle
"Realitätsausschnitt" einer Problem-Domäne.
Überblick, Kommunikation im Team (Modellierungssprachen).
Abstraktionsprinzip: Information Hiding und Vererbung.
Modellierungs-Werkzeuge
Vorteile:
- Vorgabe der Modellstruktur, Konsistenzprüfer
- Sourcecode-Generierung
- besser Präsentationstauglich
- handlich bei grösseren Modellen, z.B. mehrere Diagramme für ein Modell
Nachteil:
- Erstellung von Prototypen langsam, einschränkend
Modell ≠ Diagramm
Diagramme stellen einen unvollständigen Teil der des Software-System-Modells dar
Modell kann viele Diagramme haben.
Normalerweise wenige / im besten Fall ein einziges Modell für ein Projekt.
Elemente in unterschiedlichen Diagrammen können sich auf ein und dasselbe Modellelement beziehen.
Jede Phase im Entwicklungsprozess erfordert eine andere Abstraktionsebene in den Modellen
Diagramme
-
Übersichts-Diagramme
Übersicht
Kommunikation mit Menschen außerhalb des Projekts
-
Technische Diagramme
Kommunikation mit Entwicklern
Unified Modeling Language UML
Strukturdiagramme (structure diagrams)
statische Zusammenhänge → statische Modelle ("immer")
- Klassendiagramm (class diagrams)
- Komponentendiagramme (component diagrams)
- Kompositionsstrukturdiagramme (composite structure diagrams)
- Objektdiagramme (object diagrams)
- Verteilungsdiagramme (deployment diagrams)
- Paketdiagramme (package diagrams)
Verhaltensdiagramme (behavior diagrams)
dynamische Zusammenhänge → dynamische Modelle ("wenn-dann")
- Aktivitätsdiagramme (activity diagrams)
- Anwendungsfalldiagramme (use-case diagrams)
- Zustandsautomaten (state diagrams)
Interaktionsdiagramme
zeitliches Verhalten
- Sequenzdiagramme (sequence diagrams)
- Kommunikationsdiagramme (communication diagrams)
- Interaktionsübersichtsdiagramme (interaction overview diagrams)
- Timing-Diagramme (timing diagrams)
Paketdiagramme (package diagrams)
Dienen dazu das Modell zu strukturieren / einzuteilen.
Abhängigkeiten
-
access
Zugriff, aber wird nicht importiert, vollständiger Paketname bei Aufrug
-
import
Zugriff, Namespace importiert
-
merge
Wird importiert aber es gibt namen die gleich sind, deshalb vollständigen Namen benutzen
Schichtendiagramme
Übersichtsdiagramme, sehr wenig Information.
> technischen Artefakte (Komponenten) in Pakete bzw. Schichten.
> Abhängigkeiten der Schichten zueinander mit Dependency-Pfeilen
Anwendungsfalldiagramme (use-case diagrams)
Erfassung der Anforderungen.
Kommt mit einer genauen textuellen Beschreibung der Anwendungsfälle.
Anwendungsfall
Ovale, Name ist ein Verb
Subjekt
System / Subsystem mit Anwendungsfällen
Akteur
Interagiert mit Subjekt mit Assoziationen .
Können von anderen Akteuren Erben.
Abhängigkeit
include
- Anwendung auf die der Pfeil zeigt wird immer ausgeführt (wie Methodenaufruf innerhalb einer anderen Methode)
extend
- (Pfeil wird umgekehrt gezeichnet!) Anwendung auf die der Pfeil zeigt ist die erbende Anwendung die quasi mit dem Pfeil Zugriff auf die
Funktionen des Vererbers bekommt.
Extension Points
Linie durch die Mitte der Anwendung die erbt.
Schrittweise Verfeinerung der Anforderungen
-
Enterprise goals
Anforderungen an Unternehmen (zB Datenexport nach xy)
-
User goals
Aus der Domäne herausgeholt → Anforderungen an Software
-
System goals
Anwendungsfälle, die vom Akteur „System“ bzw. „Administrator“ durchgeführt werden
Textuelle Beschreibung
Klassendiagramm (class diagrams)
Klassenart
in Stereotypen
<< ... >>
steht die Art der Klasse.
Klasse
Public + Sichtbar für jedes Element das die Klasse sieht
Protected # Sichtbar für Elemente der Klasse und ihrer Subklassen
Private - Sichtbar für Elemente der Klasse
Package ˜ Sichtbar für Elemente im selben Paket wie die Klasse
Attribute
sichtbarkeit attributName : Typ [ multiplizität ] = defaultWert { eigenschaften }
konkret
-foo : int = 0 { not null }
Methoden
sichtbarkeit methodenName ( parameterName : Typ ) : rückgabeTyp { eigenschaften }
konkret
+setFoo( foo : int ) : void { reentrant }
Abhängigkeiten / Generalisierungen
Assoziationen
Kann auch eine eigene Assoziationsklasse sein
Komposition
Immer eine 1..* Beziehung
Sollte das Ganze gelöscht werden, müssen Bestandteile auch gelöscht werden
Aggregation
Kann Teil von mehreren Dingen sein und nach einem Löschvorgang weiterexistieren
Sichten beim Entwicklungsprozess
-
Konzeptuelle Sichtweise / Domänenmodell
In der Analysephase, nicht detailiert
Klassen untersuchen Konzepte aus der Domäne
-
Spezifizierende Sicht / Komponentendiagramm
Architektur
-
Klassendiagramm
Implementierung (Meistens gegen Ende aus dem Source Code erstellt)
Komponentendiagramme (component diagrams)
Struktur zur Laufzeit.
Spezifizierende Sicht, System unterteilt in Komponenten (enthalten Klassen).
Implementierung ignoriert, als Black-box.
Wichtig: Schnittstellen
Komponenten
Rechteck mit Komponenten-Symbol rechts oben.
"Lollipop-Notation"
Aktivitätsdiagramme (activity diagrams)
Verhalten des Systems.
Geeignet für Methoden.
Aktionen
Atomar
Kann den Zustand des Systems ändern oder Nachrichten verschicken.
Aktivität
Nicht atomar.
Eine Aktivität enthält einen Kontrollfluss, Aktionen, andere Aktivitäten.
Zoomt man in eine Aktivität hinein, findet man ein anderes Aktivitätsdiagramm, das einen detaillierteren Kontrollfluss der jeweiligen Aktivität beschreibt.
Sequenzdiagramme (sequence diagrams)
Informationsaustausch / Kommunikation
Geeignet für Logik von Services und Methoden.
Classifier
Interaktion zwischen mehreren Classifiern (Klassen, Anwendungsfällen oder Akteuren) oder Instanzen.
Lebenslinien
Zeigen Lebensdauer eines Objektes
Aktivierungsbalken
Rechtecke auf der Lebenslinie
Zeigen aktives Ausführen einer Nachricht
Nachrichten
-
synchrone Nachrichten
Sender wartet auf Antwort
- asynchrone Nachrichten
- Antworten
Fragmente
Bestimmte Logik für Nachrichten
alt
: Fragment für if-else-then
opt
: switch, nur ausgeführt wenn Bedingung wahr
loop
: schleife, so lange ausgeführt wie Bedingung wahr
ref
: Referenz zu einem anderen Sequenzdiagramm
Zustandsautomaten (state machine diagrams)
Alle möglichen Folgen von Zuständen eines Modellelements (meistens Objekt).
Übergang zwischen Zuständen mit Transitionen .
Zustand
-
Einfacher Zustand
Zustände ohne Subzustände, zb Endzustand
-
Pseudo Zustand / Transienter Zustand
Zustand in denen System nicht bleibt, zb Initialzustand, Verzweigungen
-
Komplexer Zustand
Enthalten Subzustände
Aktivitäten
Zustände können Aktivitäten auslösen.
Aktivität Ausführung innerhalb eines Zustands
-----------------------------------------------------------------------------
entry / aktivität beim Eingang in den Zustand ausgeführt.
exit / aktivität beim Verlassen des Zustands ausgeführt.
do / aktivität wird ausgeführt, Parameter sind erlaubt.
event / aktivität behandelt Ereignis innerhalb des Zustands.
Zustandsübergang / State transition
Erfolgt wenn Bedingung / guard erfüllt ist.
Komplexer Zustand
- UND-Verfeinerung → nebenläufige subzustände
- ODER-Verfeinerung → getrennte subzustände
Entity-Relationship-Modell
Für Datenabankmodellierung
Lässt sich in Kombination mit dem Klassendiagramm benutzen
Bezeichnungen
Extended Entity Relationship Model (EER-Model)
Entity Relationship Diagram (ERD)
Dritte Normalform 3NF
Eine Form die erreicht werden kann wenn bestimmte Bedingungen eingehalten werden
Entity Relationship mit UML
Typen (VARCHAR, INTEGER, BOOL, FLOAT etc.)
IDEFØ: Daten- und Kontrollfluss
Top-Down Modell
Modellierung des Problembereichs
Datenfluss ( Daten-Token )
Kontrollfluss ( Kontroll-Token )