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

  1. Übersichts-Diagramme

    Übersicht

    Kommunikation mit Menschen außerhalb des Projekts

  1. 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

  1. Enterprise goals

    Anforderungen an Unternehmen (zB Datenexport nach xy)

  1. User goals

    Aus der Domäne herausgeholt → Anforderungen an Software

  1. 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

  1. Konzeptuelle Sichtweise / Domänenmodell

    In der Analysephase, nicht detailiert

    Klassen untersuchen Konzepte aus der Domäne

  1. Spezifizierende Sicht / Komponentendiagramm

    Architektur

  1. 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 )