softwaretechnik

Werbung
SOFTWARETECHNIK
Kapitel 2 – Modellierungskonzepte
Vorlesung im Wintersemester 2012/13
FG System- und Software-Engineering
Prof. Dr.-Ing. Armin Zimmermann
Inhalt
 Einführung
 Klassische Modelle
 Objektorientierung
 Unified Modeling Language
SSE Zimmermann
Softwaretechnik
Modellierung – 2
Einführung
 Wie beschreibt man Software und Systeme?

Zweck: Dokumentation, Kommunikation, Spezifikation,
Vertragsabschluss, Ausschreibung, …

Was wird beschrieben?








Struktur
Schnittstellen
Funktionen
Anforderungen
Abläufe
Begriffsbedeutungen
Arbeitsschritte
…
SSE Zimmermann
Softwaretechnik
Modellierung – 3
Einführung
 Wie beschreibt man Software und Systeme?
 Arten der Beschreibung






Gespräch, Interview
Text, Prosa
Strukturierter Text
Tabelle
Semi-formales Modell
Formales Modell
SSE Zimmermann
Softwaretechnik
Modellierung – 4
Einführung
 Modell

… ist eine Abstraktion eines Systems mit der Zielsetzung,
das Nachdenken über ein System zu vereinfachen, indem
irrelevante Details ausgelassen werden [Brügge]
Beschreibung eines Ausschnitts der Realität

Abstrahiert von




Unwichtigen inneren Details
Unwichtigen äußeren Einflüssen
Verfolgt einen Zweck für eine Anwendung



Diese bestimmen, was und wie im Modell beschrieben wird
„Gutes“ Modell daher nur für einen Zweck bestimmbar
Fragestellung am Anfang genau bestimmen
SSE Zimmermann
Softwaretechnik
Modellierung – 5
Einführung
Modelle
SSE Zimmermann
Softwaretechnik
Modellierung – 6
Einführung
 Modellieren




Abbilden signifikanter Eigenschaften
So genau wie nötig – Abstraktionsniveau, Modellart
Deskriptiv / Präskriptiv
Sichtweisen auf ein System




Struktur, Verhalten, Zustand, Interaktion, Test, Rolle, …
… heißt Weglassen
… setzt Verstehen voraus
… ist nicht automatisierbar
SSE Zimmermann
Softwaretechnik
Modellierung – 7
Einführung
 Einsatz von Modellen in der SW-Entwicklung
 Analysemodell
 Entwurfsmodell

wesentliche Entwurfsentscheidungen, Softwarestruktur, ..
 Implementierung (-smodell)
 Vorgehensmodell
 Produktmodell

Beschreibung der im Projekt entstehenden Artefakte und
ihrer Zusammenhänge
nach Rumpe
SSE Zimmermann
Softwaretechnik
Modellierung – 8
Einführung
 Modelle für …

Funktionen: Funktionsbaum, Datenflussdiagramm

Daten: Entity Relationship Diagram

Algorithmen: Pseudocode, Programmablaufplan,
Struktogramm, Entscheidungstabelle, Regeln

Systemumgebung: Datenflussdiagramm

Dynamisches Verhalten: Zustandsautomat,
Sequenzdiagramm, Petri-Netz (ggf. mit Zeitmodell)

Objektorientierte Modelle (später)
SSE Zimmermann
Softwaretechnik
Modellierung – 9
Einführung
 Entwicklung
Quelle: Rumpe
SSE Zimmermann
Softwaretechnik
Modellierung – 10
Inhalt
 Einführung
 Klassische Modelle
 Objektorientierung
 Unified Modeling Language
SSE Zimmermann
Softwaretechnik
Modellierung – 11
Klassische Modelle
 Funktionale Sicht

Funktionsbaum: Hierarchische Dekomposition der Fkt.

Beispiel: Abonnement-Verwaltung
Quelle: Jackisch
SSE Zimmermann
Softwaretechnik
Modellierung – 12
Klassische Modelle
 Data Dictionary


Verzeichnis von Daten mit Strukturinformation
Backus-Naur-Form, kontextfreie Grammatik
SSE Zimmermann
Softwaretechnik
Modellierung – 13
Klassische Modelle
 Datenmodellierung


System als statische Datenstruktur, Datenbanken-Sicht
Zerlegung in Komponenten
Quelle: Uni Trier
SSE Zimmermann
Softwaretechnik
Modellierung – 14
Klassische Modelle
 Entity-Relationship-Model

Daten und ihre Beziehungen
Quelle: Rumpe
SSE Zimmermann
Softwaretechnik
Modellierung – 15
Klassische Modelle
 Datenflussdiagramm



data flow diagram DFD [De Marco 1979]
Fluss und Transformation von Daten zwischen
Funktionen, Speichern und Schnittstellen
kein Kontrollfluss
Quelle: Riedling
SSE Zimmermann
Softwaretechnik
Modellierung – 16
Klassische Modelle
 Flussdiagramm


flow chart
Hier:
Geschäftsprozess
mit Vorgängen
und Dokumenten
Quelle: orghandbuch.de, BMI
SSE Zimmermann
Softwaretechnik
Modellierung – 17
Klassische Modelle
 Blockschaltbild

Eingebettetes System, HW/SW
SSE Zimmermann
Softwaretechnik
Modellierung – 18
Klassische Modelle
 Entscheidungstabellen




Regelbasierte Beschreibung
Bedingungen
Aktionen
Reduktionsregeln
Quelle: orghandbuch.de, BMI
SSE Zimmermann
Softwaretechnik
Modellierung – 19
Klassische Modelle
 Pseudocode

Von Programmiersprache abstrahierende,
detaillierte Beschreibung eines Algorithmus
SSE Zimmermann
Softwaretechnik
Modellierung – 20
Klassische Modelle
 Programmablaufplan (PAP)


Grafische Beschreibung
des Kontrollflusses
Unstrukturiert, GOTO
SSE Zimmermann
Softwaretechnik
Modellierung – 21
Klassische Modelle
 Struktogramm


NassiShneidermanDiagram
Keine Sprünge
daten, teiler+1, rechts)
Quelle: Wikipedia
SSE Zimmermann
Softwaretechnik
Modellierung – 22
Klassische Modelle
 Modellierung dynamischen Verhaltens

Diskrete Zustände und atomare Zustandsübergänge
SSE Zimmermann
Softwaretechnik
Modellierung – 23
Klassische Modelle
 Zustandsautomat



Verhalten mit Zuständen und -übergängen
Automatenmodelle und -theorie
Ggf. Zerlegung oder kommunizierende Automaten
Quelle: Rumpe
SSE Zimmermann
Softwaretechnik
Modellierung – 24
Klassische Modelle
 Ereignisgesteuerte
Prozesskette (EPK)


Geschäftsprozesse
BPM
Quelle: Krallmann
SSE Zimmermann
Softwaretechnik
Modellierung – 25
Klassische Modelle
 Petri-Netz

Grafische Beschreibung von
Nebenläufigkeit und Synchronisation
Prozess1
erzeugen
FreiePufferplätze
ablegen
N
PufferplätzeMitDaten
verarbeiten
Prozess2
SSE Zimmermann
abholen
Softwaretechnik
Modellierung – 26
Inhalt
 Einführung
 Klassische Modelle
 Objektorientierung
 Unified Modeling Language
SSE Zimmermann
Softwaretechnik
Modellierung – 27
Objektorientierung
 Grundprinzipien der Programmierung
 Imperative Programmierung




von-Neumann-Modell
Prozedural, strukturiert (C, Pascal)
Modular (Modula2, Ada83)
Objektorientiert (C++, Ada95, Java)
 Deklarative Programmierung



Funktional (Lisp)
Logisch (Prolog)
Datenfluss (Linda)
SSE Zimmermann
Softwaretechnik
Modellierung – 28
Objektorientierung
 Entwicklungsrichtung


Bessere Strukturierung für komplexe Zusammenhänge
Abstraktere Sichtweise
 Grundprinzip: Zerlegung






Horizontal: Teilsysteme, Module
Vertikal: Schichten
Voraussetzung: Schnittstellen, Kapselung
Nutze fertige Teillösungen (Wiederverwendung, patterns)
Behandle konzeptionell gleiche Dinge gleich
Teile und herrsche!
SSE Zimmermann
Softwaretechnik
Modellierung – 29
Objektorientierung
 Objekte


Analyse: als Modell realer Gegenstände
Entwurf: als Beschreibungsmittel für die Software-Lösung
Identität: IK-U5
Zustand: 5km/h
Verhalten:
Anhalten
SSE Zimmermann
Eigenschaft:
Geschwindigkeit
Softwaretechnik
Modellierung – 30
Objektorientierung
 Objekte

Ein System besteht aus vielen Objekten

Ein Objekt hat ein definiertes Verhalten



Ein Objekt hat einen inneren Zustand



Menge genau definierter Operationen
Operation wird beim Empfang einer Nachricht ausgeführt
Zustand des Objekts ist Privatsache
Resultat einer Operation hängt vom aktuellen Zustand ab
Ein Objekt hat eine eindeutige Identität


Identität ist unabhängig von anderen Eigenschaften
Es können mehrere verschiedene Objekte mit identischem
Verhalten und identischem inneren Zustand im gleichen
System existieren
Quelle: Rumpe
SSE Zimmermann
Softwaretechnik
Modellierung – 31
Objektorientierung
 Klasse

Gleichartige Objekte mit ggf. verschiedenen Zuständen
Auto
Klasse
Objekte
SSE Zimmermann
Softwaretechnik
Modellierung – 32
Objektorientierung
 Klasse


Verhaltensschema – Operationen
Innere Struktur – Attribute
Auto
Auto
Farbe
Geschwindigkeit
Anhalten()
Losfahren()
Klasse
Objekt
<< instanceOf >>
IK-U5
IK-U5: Auto
Farbe = orange
Geschwindigkeit = 5
SSE Zimmermann
Softwaretechnik
Modellierung – 33
Objektorientierung
 Klasse und Objekt
Auto
Farbe
Geschwindigkeit
Anhalten()
Losfahren()
class Auto {
private String Farbe;
private float Geschwindigkeit;
public void Anhalten() {
Geschwindigkeit = 0;
}
}
<< instanceOf >>
IK-U5: Auto
Farbe = orange
Geschwindigkeit = 5
SSE Zimmermann
Auto ik_u5;
ik_u5 = new Auto();
ik_u5.Anhalten();
Softwaretechnik
Modellierung – 34
Objektorientierung
 Beziehungen zwischen Klassen


Vererbung (Generalisierung, Spezialisierung)
Polymorphie
Fahrzeug
Auto
Rennwagen
SSE Zimmermann
Fahrrad
PKW
Softwaretechnik
Modellierung – 35
Objektorientierung
 Beziehungen zwischen Klassen

Assoziationen, Multiplizität, Rollen

Navigation
(Entwurf)
Bilder: Brügge/Dutoit
SSE Zimmermann
Softwaretechnik
Modellierung – 36
Objektorientierung
 Beziehungen zwischen Klassen

Aggregation
Quelle: Brügge/Dutoit

Komposition: Teile existieren nicht unabhängig
SSE Zimmermann
Softwaretechnik
Modellierung – 37
Objektorientierung
 Vorteile der Objektorientierung
 Zuständigkeitsbereiche

Daten, Operationen und Zustand: lokal und gekapselt
 Klare Schnittstellen

Definiertes Objektverhalten, Nachrichten
 Hierarchie

Vererbung und Polymorphie (Spezialisierung),
Klassenschachtelung
 Baukastenprinzip

Benutzung vorgefertigter Klassenbibliotheken, Anpassung
durch Spezialisierung (mittels Vererbung)
nach Rumpe
SSE Zimmermann
Softwaretechnik
Modellierung – 38
Inhalt
 Einführung
 Klassische Modelle
 Objektorientierung
 Unified Modeling Language
SSE Zimmermann
Softwaretechnik
Modellierung – 39
Unified Modeling Language
 UML

Grafisches Beschreibungsmittel für Aspekte des
Softwareentwurfs diskreter Systeme




Spezifikation, Entwurf, Visualisierung, Konstruktion,
Dokumentation von Software
Für OO-Softwareentwicklung und -prozess geeignet
UML ist weder Methode noch Prozess
Sammlung industriell erfolgreicher Modelle


Einheitliche Notation: Booch,
OMT, use cases, state charts
Nicht alle Elemente müssen
verwendet werden
SSE Zimmermann
Softwaretechnik
Modellierung – 40
Unified Modeling Language
 Warum UML?







Objektorientierung ist zur Zeit das optimale
Modellierungs-Paradigma, Industrie-Standard
Kombination von Struktur-, Verhaltens-, Interaktions-,
und Verteilungsmodellen
Für Analyse, Entwurf, Implementierung und Test
einsetzbar
Gute Werkzeugunterstützung für Editieren, Versionierung,
Codegenerierung
Erweiterbarkeit der UML mit Stereotypen und Tags
Semi-formale Modelle, z.T. verschiedene Interpretationen
Offenheit: Erweiterung mit stereotypes, tags, constraints
Nach Rumpe, Nierstrasz
SSE Zimmermann
Softwaretechnik
Modellierung – 41
Unified Modeling Language
 Nachteile UML






UML ist in vielen Facetten nicht präzise festgelegt
Werkzeuge für Transformation, Analyse etc. fehlen noch
UML ist keine „kleine Sprache“: Lernaufwand notwendig
Komponenten sind nicht adäquat darstellbar
Sprachen wie die UML werden erlernt durch Übung!
Aber: LV SWT ist kein kompletter UML-Kurs
Quelle: Rumpe
SSE Zimmermann
Softwaretechnik
Modellierung – 42
Unified Modeling Language
Quelle: Störrle
SSE Zimmermann
Softwaretechnik
Modellierung – 43
Unified Modeling Language
 Entwicklung der Unified Modeling Language









Grady Booch, Ivar Jacobson, James Rumbaugh (seit 86)
90er Jahre: Objektmodellierungstechnik OMT
Zahlreiche Bücher verfügbar
SE und Geschäftsprozessmodellierung ab [Jacobson92]
Ab 95 bei Rational: OMT+Booch+ClassDiagrams  UML
UML Consortium: DEC, I-Logix, Intellicorp, IBM, ICON
Computing, MCI Systemhouse, Microsoft, …
97: Standardisierung bei der OMG
99: UML 1.3, 03: UML 1.5
UML 2.0 Superstructure Spec: Okt. 04
SSE Zimmermann
Softwaretechnik
Modellierung – 44
Unified Modeling Language
 Neuerungen in UML 2

Einbettung (embodiment)


Neue Notationen


Architekturdiagramme, Interaktionsdiagramme,
Aktivitätsdiagramme, Zeitverlaufsdiagramme
Metamodell




Verhalten und Funktionalität ist immer Teil eines
Objektmodells
Konsolidiert
Neu erstellt: Interaktionen, Aktivitäten
Formale Semantik erleichtert
Neue Konzepte

CompositePart, Port und Connector, Collaboration, …
SSE Zimmermann
Softwaretechnik
Modellierung – 45
Unified Modeling Language
 Überblick über Modelle

Details ggf. in späteren Kapiteln
 Structure Diagrams

Class, Object, Component, Composite Structure,
Package und Deployment Diagrams
 Behavior Diagrams

Use Case, Activity und State Machine Diagrams
 Interaction Diagrams

Sequence, Communication, Timing und
Interaction Overview Diagrams
SSE Zimmermann
Softwaretechnik
Modellierung – 46
Unified Modeling Language
SSE Zimmermann
Softwaretechnik
Modellierung – 47
Unified Modeling Language
 Use Case Diagram

Beschreiben Systemfunktion aus Benutzersicht


Scenario: Beispiel für Interaktion


Was, nicht Wie
A patient calls the clinic to make an appointment for a yearly
checkup. The receptionist finds the nearest empty time slot in
the appointment book and schedules the appointment.
Elemente


Actor: löst Ereignisse aus (role)
Communication association: Kommunikationsverbindung
Quelle der folgenden Bilder: Practical UML
SSE Zimmermann
Softwaretechnik
Modellierung – 48
Unified Modeling Language
 Use Case Diagram

Use Case ist eine Sammlung von Scenarios

Verwendung



Erste Anforderungsspezifikation (requirements)
Kommunikation mit Kunden
Erstellen von Testfällen (test case generation)
SSE Zimmermann
Softwaretechnik
Modellierung – 49
Unified Modeling Language
 Class Diagram



Statischer Überblick über Systemaufbau aus Objekten
Klassen und ihre Beziehungen
Beispiel: Kundenbestellung aus Versandkatalog
SSE Zimmermann
Softwaretechnik
Modellierung – 51
Unified Modeling Language
 Class Diagram


Klassen: Name, Attribute, Methoden
Relationen





Association: Objekte beider Klassen stehen in Zusammenhang
und „wissen voneinander“.
Pfeil schränkt Zugriffsrichtung ein
Aggregation: Klasse gehört zu einer Sammlung
Generalization: Vererbungsbeziehung (subclass / superclass)
Relationen können am Ende benannt werden (role name)
Multiplicity am Ende der Relation: Anzahl möglicher Objekte
(Instanzen), die mit einem Objekt am anderen Ende
verbunden sein können
SSE Zimmermann
Softwaretechnik
Modellierung – 52
Unified Modeling Language
 Class Diagram Details
Composition

Spezialfall einer aggregation, in der die abhängigen
Objekte nicht alleine existieren können
SSE Zimmermann
Softwaretechnik
Modellierung – 53
Unified Modeling Language
 Packages

Gruppierung komplexer Klassendiagramme
SSE Zimmermann
Softwaretechnik
Modellierung – 57
Unified Modeling Language
 Object Diagram


Zeigen Objekte anstelle von Klassen (class diagram)
Für kompliziertere Abhängigkeiten benutzt (z.B.
Rekursion)
SSE Zimmermann
Softwaretechnik
Modellierung – 58
Unified Modeling Language
 Sequence Diagram


Beschreibung dynamischer Zusammenarbeit
zwischen Objekten über Zeitachse
Objekte



Nachrichten, Aufrufe als Pfeile




Existierend: gestrichelt (lifeline)
Aktiv: Rechteck (activation bar)
Synchron:
Asynchron:
Unspezifiziert:
Bedingungen in eckigen Klammern
SSE Zimmermann
Softwaretechnik
Modellierung – 59
Unified Modeling Language
 Sequence Diagram

Beispiel: Hotelreservierung
SSE Zimmermann
Softwaretechnik
Modellierung – 60
Unified Modeling Language
 Collaboration Diagram

Beschreiben wie sequence diagrams Zusammenarbeit
von Objekten, aber aus Sicht der Rollen (nicht Zeiten)
SSE Zimmermann
Softwaretechnik
Modellierung – 62
Unified Modeling Language
 Statechart Diagram


Verhalten von Objekten: Zustände und Zustandsübergänge
(state, state transition)
Beispiel: Online-Banking
SSE Zimmermann
Softwaretechnik
Modellierung – 63
Unified Modeling Language
 Statechart Diagram


Zustände können andere enthalten: Nebenläufigkeit
Zustandsraum  Kreuzprodukt der Unterzustandsmengen
SSE Zimmermann
Softwaretechnik
Modellierung – 64
Unified Modeling Language
 Activity Diagram





Entspricht Flussdiagramm
Fokus: Statechart – Objekt und Zeit,
Activity Diagram – Prozess und Reihenfolge
Aktivitäten: benannte Kästchen,
danach jeweils eine Transition (Pfeil)
Transitionen können abhängig von Bedingungen
unterschiedliche Ziele haben
Transitionen können


aufspalten (fork) und
vereinigen (join)
SSE Zimmermann
Softwaretechnik
Modellierung – 65
Unified Modeling Language
 Activity
Diagram

Beispiel
Geldautomat
SSE Zimmermann
Softwaretechnik
Modellierung – 66
Unified Modeling Language
 Vergleich von Ablaufmodellen
SSE Zimmermann
Softwaretechnik
Modellierung – 67
Herunterladen