Software

Werbung
Software-Design
• Definition
• Der Prozess
• Prinzipien
• Strategien und Methoden
• Notationen
• Aufgabe
Vorlesung Software Engineering
© Prof. Dr. Peter Knauber
HS Mannheim
Definition
Design
Definition
Prozess
Prinzipien
Methoden
SADT
OOD
Jackson
Notationen
Design ist
• der Prozess zum Definieren
– der Architektur,
– der Komponenten,
– der Schnittstellen und
– anderer Charakteristika (Datenstrukturen, Algorithmen etc.)
eines Systems oder einer Komponente sowie
• das Ergebnis dieses Prozesses.
Aufgabe
Quelle: IEEE Std 610.12-1990.
IEEE Standard Glossary of Software Engineering Terminology
Folie 1
Vorlesung Software Engineering
© Prof. Dr. Peter Knauber
HS Mannheim
Partner-Diskussion:
Design-Begriffe
Design
Definition
Prozess
Prinzipien
Methoden
• Klären Sie mit einem Partner die folgenden Begriffe aus der
vorherigen Definition:
–
–
–
–
Architektur
Komponente
Schnittstelle
System
SADT
OOD
Jackson
Notieren Sie schriftlich Ihre "Definitionen" (keine perfekte
Formulierung notwendig) sowie mindestens ein Beispiel pro Begriff!
Notationen
Aufgabe
• Dauer: 5 Minuten
Folie 2
Vorlesung Software Engineering
© Prof. Dr. Peter Knauber
HS Mannheim
Vorgehen und Ergebnis
Design
Definition
Prozess
Prinzipien
Methoden
SADT
• Anforderungen werden analysiert, um
eine Beschreibung der
– internen Struktur und
– Organisation
eines Systems zu erstellen,
die als Basis der Konstruktion (Implementierung) dient
OOD
Jackson
Notationen
Aufgabe
• Das Ergebnis beschreibt die Architektur des Systems, das heißt
– wie das System aus Komponenten aufgebaut ist und
– die Schnittstellen/Beziehungen zwischen diesen Komponenten
• Ziel:
Das Ergebnis muss eindeutig (genug) sein, damit es bei der
Implementierung keine Abstimmungsprobleme gibt!
Folie 3
Vorlesung Software Engineering
© Prof. Dr. Peter Knauber
HS Mannheim
Der Entwurfsprozess
Dokumentierte
Anforderungen
Design
Definition
Prozess
Prinzipien
Methoden
SADT
Architekturentwurf
Abstrakte
Spezifikation
Schnittstellenentwurf
Komponentenentwurf
Entwurf der
Datenstrukturen
Algorithmenentwurf
OOD
Jackson
Systemarchitektur
Notationen
Aufgabe
Folie 4
Vorlesung Software Engineering
© Prof. Dr. Peter Knauber
HS Mannheim
Der Entwurfsprozess
Dokumentierte
Anforderungen
Design
Definition
Prozess
Prinzipien
Methoden
Abstrakte
Spezifikation
Schnittstellenentwurf
Komponentenentwurf
Entwurf der
Datenstrukturen
Algorithmenentwurf
Notationen
Softwarespezifikation
Schnittstellenspezifikation
Komponentenspezifikation
Spezifikation der
Datenstrukturen
Algorithmenspezifikation
Aufgabe Begründung
Begründung
Begründung
Begründung
Begründung
Begründung
SADT
Architekturentwurf
OOD
Jackson
Systemarchitektur
Architektur-Design
Detail-Design
Folie 5
Vorlesung Software Engineering
© Prof. Dr. Peter Knauber
HS Mannheim
Design als kreativer Prozess
Design
Definition
Prozess
• Lösen schwieriger Probleme – Probleme, die keine eindeutige
Lösung besitzen (daher müssen Begründungen dokumentiert
werden!)
Prinzipien
Methoden
SADT
OOD
Jackson
Notationen
Aufgabe
Zugehörige Konzepte
• Ziele
• Einschränkungen / Beschränkungen (Constraints)
• Alternativen
• Darstellungen
• Lösungen
Folie 6
Vorlesung Software Engineering
© Prof. Dr. Peter Knauber
HS Mannheim
Design-Ebenen
Design
Definition
Prozess
• Architektur-Design (Top-Level-Design)
– Top-Level-Struktur
– Komponenten, Beziehungen zwischen Komponenten
Prinzipien
Methoden
SADT
• Detail-Design
– Genaue Beschreibung jeder Komponente für die Implementierung
OOD
Jackson
Notationen
Aufgabe
Folie 7
Vorlesung Software Engineering
© Prof. Dr. Peter Knauber
HS Mannheim
Design-Prinzipien (enabling techniques) 1/2
Design
Definition
Prozess
Prinzipien
Methoden
SADT
OOD
Jackson
Notationen
• Abstraktion – der Prozess, Information zu vergessen
– Abstraktion durch Parametrisierung, durch Spezifikation
– Prozedurale Abstraktion, Datenabstraktion, Kontrollabstraktion
• Coupling and Cohesion
– Zusammenhang zwischen Komponenten
– Zusammenhang (innerhalb) der Komponenten
• Dekomposition und Modularisierung
– Zerlegen eines großen Systems in kleinere, beherrschbare Einheiten
– Verteilen von Funktionalität auf Komponenten
Aufgabe
Folie 9
Vorlesung Software Engineering
© Prof. Dr. Peter Knauber
HS Mannheim
Design-Prinzipien (enabling techniques) 2/2
Design
Definition
Prozess
Prinzipien
Methoden
SADT
OOD
Jackson
• Kapselung, Information Hiding
– Verbergen der Details einer Komponente
– Unzugänglich machen der Details
• Trennen von Schnittstelle und Implementierung
– Komponenten durch ihre Schnittstellen spezifizieren
• Vollständigkeit und Primitivität
– Komponenten enthalten alles, was zu einer Abstraktion gehört, aber nicht
mehr
Notationen
Aufgabe
Folie 10
Vorlesung Software Engineering
© Prof. Dr. Peter Knauber
HS Mannheim
Partner-Interview:
Design-Prinzipien
Design
Definition
Prozess
Prinzipien
Methoden
SADT
OOD
Jackson
• Erklären Sie abwechselnd mit Ihrem Partner die folgenden Begriffe
–
–
–
–
–
–
Abstraktion
Coupling and Cohesion
Dekomposition und Modularisierung
Kapselung, Information Hiding
Trennen von Schnittstelle und Implementierung
Vollständigkeit und Primitivität
Geben Sie für jeden Begriff mindestens ein Beispiel an!
Notationen
Aufgabe
• Dauer: 6 Minuten
Folie 11
Vorlesung Software Engineering
© Prof. Dr. Peter Knauber
HS Mannheim
Design
Definition
Prozess
Prinzipien
Methoden
SADT
OOD
Jackson
Notationen
Aufgabe
Folie 12
Vorlesung Software Engineering
© Prof. Dr. Peter Knauber
HS Mannheim
Design-Strategien und -Methoden
Design
Definition
Prozess
Prinzipien
• Allgemeine, methoden-übergreifende Strategien
– Divide and Conquer
– Stepwise Refinement
– Top-Down <-> Bottom-Up
Methoden
SADT
OOD
Jackson
Notationen
Aufgabe
• Spezielle Vorgehensweisen / Methoden
–
–
–
–
–
Funktions-orientiertes (Strukturiertes) Design
Objekt-orientiertes Design
Datenstruktur-orientiertes Design
Formale Methoden
Transformationsmethoden
→ Beispiel: Model-Driven Architecture (MDA)
Folie 13
Vorlesung Software Engineering
© Prof. Dr. Peter Knauber
HS Mannheim
Strukturiertes Design
Design
Definition
Prozess
Prinzipien
Methoden
SADT
OOD
• Meist anschließend an eine Strukturierte Analyse
• Prinzip
– Identifikation der Haupt-Funktionalität
– Top-Down-Verfeinerung
Eingabe (Daten)
• Ergebnisse
– Datenfluss-Diagramme
– Prozessbeschreibungen
Jackson
Prozedur
Notationen
Aufgabe
• Eine mögliche Notation für
Strukturierte Analyse und Design:
SADT = Structured Analysis and
Design Technique
Ausgabe (Daten)
Folie 14
Vorlesung Software Engineering
© Prof. Dr. Peter Knauber
HS Mannheim
SADT-Diagramm:
Beispiel "Formulare bearbeiten", A-0
Kontroll-Information
(wird benutzt, nicht verändert)
Design
Definition
Vorschriften
Prozess
Prinzipien
Ausgabedaten
Methoden
SADT
OOD
Leere Formulare,
Daten
Formulare
bearbeiten
Bescheide
Jackson
Notationen
Aufgabe
Eingabedaten
Antragsteller,
Prüfer,
Entscheidungsinstanz
Folie 15
Vorlesung Software Engineering
Mechanismus
(Benutzer, Prozessor, ...)
Aktivität
Datenfluss
© Prof. Dr. Peter Knauber
HS Mannheim
SADT-Diagramm:
Beispiel "Formulare bearbeiten", A0
Design
Definition
Prozess
Prinzipien
Methoden
SADT
OOD
Jackson
Notationen
Aufgabe
Folie 16
Vorlesung Software Engineering
© Prof. Dr. Peter Knauber
HS Mannheim
SADT-Konzepte
Design
Definition
Prozess
Prinzipien
Methoden
SADT
OOD
• Systembeschreibung jeweils von einem Standpunkt aus;
unter Umständen mehrere Standpunkte nacheinander,
Beispiel: Benutzer und Verwaltung einer Bibliothek
• Beschreibung beginnt auf der höchsten Abstraktionsebene;
Verfeinerungen führen zu hierarchischer Zerlegung des Systems
• Zerlegung in Teilsysteme derart, das jedes Teilsystem unabhängig von
den anderen Teilen der gleichen Ebene verfeinert werden kann
• Keine Darstellungsmöglichkeiten für den Kontrollfluss (Bedingungen etc.)
Jackson
Notationen
Aufgabe
Folie 17
Vorlesung Software Engineering
© Prof. Dr. Peter Knauber
HS Mannheim
Objektorientiertes Design
Design
Definition
Prozess
Prinzipien
Methoden
SADT
OOD
Jackson
Notationen
Aufgabe
• Prinzip
Jedes Objekt/Ding (jede "Art" von Objekten) in der Realität wird
durch ein Objekt (eine Klasse von Objekten) im Modell repräsentiert
• Konzepte
– Klassen, Objekte
– Vererbung, Polymorphismus
– Komponenten
Nachrichten
• Ursprung: Daten-Abstraktion
• "Standard"-Notation:
UML (Unified Modeling Language)
Folie 18
Vorlesung Software Engineering
Objekt (Daten)
Nachrichten
© Prof. Dr. Peter Knauber
HS Mannheim
Objektorientierter Entwurf:
Heuristische Vorgehensweise [Booch]
Design
Definition
Prozess
Prinzipien
Methoden
SADT
OOD
Jackson
Notationen
Aufgabe
1. Identifiziere Klassen und Attribute
anhand der Substantive aus der Anforderungsbeschreibung
2. Identifiziere Methoden (für die Klassen)
anhand der Verben aus der Anforderungsbeschreibung
3. Definiere, welche Objekte welche andere sehen (müssen):
Beziehungen (inklusive Vererbung) zwischen Klassen
3. Definiere die Schnittstelle (Interfaces) der Klassen:
Festlegen von Parameterlisten, Ergebnistypen für die Methoden
4. Implementiere die Klassen, Attribute und Methoden:
Wahl einer geeigneten Repräsentation in der Programmiersprache
Folie 19
Vorlesung Software Engineering
© Prof. Dr. Peter Knauber
HS Mannheim
Klassendiagramm:
Beispiel "Produkte in einem Lager"
Design
buys
Customer
Definition
Prozess
Product
1..*
1
stock_level
ID
stores
Database
1
Print_out_Detail
1
name
cost
0..*
Prinzipien
{disjoint, incomplete}
{disjoint, complete}
Methoden
SADT
OOD
Jackson
Discrete_Product
Non_Discrete_Product
price_per_item
price_per_gram
Notationen
Aufgabe
0..*
1
Perishable_Product
sell_by_date
0..*
identifies
weighs
grams
0..1
0..1
activates
is_warned_about
Scales
Laser Reader
Beeper
0..1
0..*
1
Central
Control
Point
0..1
activates
Folie 20
Vorlesung Software Engineering
© Prof. Dr. Peter Knauber
HS Mannheim
Vorgehen beim OOD
Design
Definition
Prozess
Anleitung
Prinzipien
Methoden
SADT
OOD
Jackson
Notationen
Aufgabe
Aufgabe
• Auf der Vorlesungs-Homepage finden Sie zwei Implementierungen
von Parkscheinautomaten:
Wählen Sie einen davon aus, bringen Sie diesen zur nächsten
Stunde mit
• Dokumentieren Sie Szenarien / Use Cases, die von dem gewählten
Automaten unterstützt werden
• Entwickeln Sie nach dem Muster der SIB / withdraw ein Design mit
den notwendigen Abläufen und Klassen
Folie 21
Vorlesung Software Engineering
© Prof. Dr. Peter Knauber
HS Mannheim
Datenstruktur-orientiertes Design
Design
Definition
Prozess
Prinzipien
Methoden
SADT
• Prinzip
– Ausgangsbasis: Struktur von Ein- und Ausgabedaten
– Kontrollstrukturen werden so definiert, dass sie Eingabedaten in
Ausgabedaten transformieren können
• Beispiel-Notation:
Jackson Structure Diagrams (Michael A. Jackson)
OOD
Jackson
Notationen
Aufgabe
• Beispiel "Bestandsführung":
Es soll ein wöchentlicher Bericht über Bestandsänderungen in einem
Lager generiert werden, sortiert nach Warentypen
– 1. Schritt: Datenstruktur der Ein- und Ausgabedaten festlegen
– 2. Schritt: passende Transformationen entwerfen
Folie 22
Vorlesung Software Engineering
© Prof. Dr. Peter Knauber
HS Mannheim
Jackson Struktur-Diagramm:
Beispiel "Bestandsführung", Datenstruktur
Input
Design
Definition
Output
1
Liste aller
Transaktionen
Prozess
Sequenz
Wöchentlicher
Bericht
Prinzipien
Methoden
SADT
OOD
Liste von Transaktionen
eines Warentyps
Berichtskopf
Berichtsrumpf
Zusammenfassung
Jackson
2
Notationen
Transaktion
Aufgabe
*
Zeile pro
Warentyp
o
T_in
Iteration
o
T_out
*
Alternative
Folie 23
Vorlesung Software Engineering
© Prof. Dr. Peter Knauber
HS Mannheim
Jackson Struktur-Diagramm:
Beispiel "Bestandsführung", Programmstruktur
Design
Definition
für 1
- erfasse Liste aller Transaktionen
- erstelle wöchentlichen Bericht
Prozess
Prinzipien
Methoden
SADT
erstelle
Berichtskopf
erstelle
Berichtsrumpf
erstelle
Zusammenfassung
OOD
Jacksonfür
2
- erfasse alle Transaktionen eines Typs
- erstelle eine Zeile pro Typ
Notationen
Aufgabe
*
erfasse Transaktion
Folie 24
erfasse
T_in
Vorlesung Software Engineering
o
erfasse
T_out
o
© Prof. Dr. Peter Knauber
HS Mannheim
Design
Definition
Prozess
Prinzipien
Methoden
SADT
OOD
Jackson
Notationen
Aufgabe
Folie 25
Vorlesung Software Engineering
© Prof. Dr. Peter Knauber
HS Mannheim
Design-Notationen
Design
Definition
Prozess
Prinzipien
Methoden
SADT
OOD
Jackson
Notationen
Aufgabe
Aufgaben
• Beschreibung der Struktur
–
–
–
–
Beschreibung der Komponenten
Beschreibung der Beziehungen zwischen Komponenten
Statische Sicht
Überwiegend graphische Darstellung
• Beschreibung des (dynamischen) Verhaltens
– Überwiegend für das Detail-Design genutzt
– Dynamische Sicht
– Graphische oder textuelle Darstellung
Folie 26
Vorlesung Software Engineering
© Prof. Dr. Peter Knauber
HS Mannheim
Design-Notationen zur Strukturbeschreibung
Design
Definition
Prozess
Prinzipien
Methoden
SADT
OOD
Jackson
• Architektur-Beschreibungssprachen (ADL)
– Komponenten und Konnektoren
• Klassen- und Objektdiagramme
– Klassen und ihre Beziehungen
• Entity-Relationship-Diagramme (ER)
– Konzeptionelle Datenmodelle (für Datenbanken)
• Schnittstellen-Beschreibungssprachen (IDL)
– Name und Typen von Operationen von Komponentenschnittstellen
Notationen
Aufgabe
• Jackson-Structure-Diagrams
– Datenstrukturen mittels Sequenz, Alternative, Iteration
• Structure Charts
– Aufrufstruktur von Unterprogrammen/Modulen
Folie 27
Vorlesung Software Engineering
© Prof. Dr. Peter Knauber
HS Mannheim
Design-Notationen zur Verhaltensbeschreibung
Design
Definition
Prozess
Prinzipien
Methoden
SADT
OOD
Jackson
Notationen
Aufgabe
• Aktivitätsdiagramme, Flussdiagramme
– Kontrollfluss zwischen Aktivitäten
• Kollaborationsdiagramme, Sequenzdiagramme
– Interaktion zwischen Objekten
– Fokus auf ausgetauschten Nachrichten / auf deren zeitlichen Abfolge
• Datenflussdiagramme
– Datenfluss zwischen Prozessen
• Entscheidungstabellen und –Diagramme
– Darstellung komplexer Aktionen unter komplexen Bedingungen
• Formale Spezifikationssprachen
– Mathematisch basiert, oft durch Vor- und Nachbedingungen von Aktivitäten
• Pseudo-Code
– Detaillierte Verhaltensbeschreibung
• Zustandsübergangstabellen und –Diagramme
– Zustandsänderungen durch Aktivitäten
Folie 28
Vorlesung Software Engineering
© Prof. Dr. Peter Knauber
HS Mannheim
Herunterladen