Software Engineering
5) SW Design
Prof. Dr. Anja Metzner Hochschule Augsburg, Fakultät für Informatik
Kontakt: [email protected]
Studiengang WiBac 4 (Stand: 15.03.2014)
© Prof. Dr. A. Metzner, Hochschule Augsburg, 2014
Prof. Dr. A. Metzner 2
Gliederung
SW Design
1. Überblick SW Design
2. Notationen
3. Architekturen
4. Strategien und Methoden
5. SW Wiederverwendung
Prof. Dr. A. Metzner 3
1. Überblick SW Design
SW Design ist
„der Prozess die SW Architektur, Komponenten, Schnittstellen und andere Merkmale eines Systems oder einer Komponente zu definieren“
„das Ergebnis dieses Prozesses“
[IEEE Std 610.12-1990 (R2002), Standard Glossary of Software Engineering Terminology, 1990]
Prof. Dr. A. Metzner 4
1. Überblick SW Design
Prozesssicht:
SE Lebenzyklus Aktivität in der die Anforderungen analisiert werden um die interne Struktur der SW zu produzieren
Ergebnissicht:
Beschreibung der SW Architektur: Wie SW zerlegt wird, in Komponenten organisiert wird und wie die Schnittstellen zwischen den Komponenten sind
Prof. Dr. A. Metzner 5
1. Überblick SW Design
Aufgaben
Wichtige Phase bei der SW Herstellung
Definition der Vorgehensweise
Modellbildung SW Ingenieure produzieren eine Vielzahl an
unterschiedlichen Modellen
Die Modelle bilden einen Plan wie die Lösung implementiert werden kann
Die Modelle werden analysiert und evaluiert ob sie die Anforderungen (erstellt in der Definitionsphase) erfüllen
Alternative Lösungen und deren Zielkonflikte werden diskutiert
Die resultierende Modellierung dient als Startpunkt für die Implementierung und als Vorlage für die Testphase
Prof. Dr. A. Metzner 6
1. Überblick SW Design
Aktivitäten
1. Erstellung der SW Architektur (Makroarchitektur)
Top-Level Design: Beschreibung der Software auf hohem Abstraktionsniveau und deren Organisation
Identifikation der SW Komponenten
2. Erstellung des Detailkonzepts (Mikroarchitektur)
Detaillierte Beschreibung jeder Einzelkomponente um die Implementierung zu ermöglichen
Prof. Dr. A. Metzner 7
1. Überblick SW Design
Ergebnis
Pflichtenheft u. evtl. erweitertes Entwurfsdokument
Inhalt: Vielzahl von Modellen für jede Komponente der SW
Frage die beantwortet wird: WIE soll die SW entwickelt werden
Beteiligte
Systemanalytiker
SW-Entwickler
Prof. Dr. A. Metzner 8
2. Notationen
Notationen dienen dazu SW Design Artefacte zu repräsentieren
Sie helfen dabei eine einheitliche „Sprache“ zu bilden beim SW Design
Häufig durch graphische Darstellungen repräsentiert, aber auch andere Darstellungsformen sind manchmal sinnvoll
Einsatz Manche Notationen eigenen sich mehr zur Darstellung der
Makroarchitektur, andere eher zur Darstellung der Mikroarchitektur
Manche Notationen können in der SW Definitions- und in der SW Design Phasen eingesetzt werden
Prof. Dr. A. Metzner 10
2. Notationen
Überblick UML
Diagrammarten
(aktuelle Version: V2.0 -> V2.1)
UML-Diagramme
Strukturdiagramme
Klassen-diagramme
Objekt-diagramme
Komponenten-diagramme
Kompositionsstruktur-diagramme
Paket-diagramme
Verteilungs-diagramme
Use Case-diagramme
Aktivitäts-diagramme
Zustands-diagramme
Verhaltensdiagramme
Interaktionsdiagramme
Kommunikations-diagramme
Sequenz-diagramme
Zeit-diagramme
Interaktions-übersicht
Prof. Dr. A. Metzner 12
2. Notationen
Strukturdiagramme
Klassendiagramme
Verwendung um eine Menge von Klassen (und Objekte) darzustellen und deren Beziehungen zueinander
Fachliches Konzept
Technisches Konzept
Prof. Dr. A. Metzner
2. Notationen
15
…und zunächst ein Ausflug in die Vergangenheit:
Struktogramme als Lernobjekte wie gute SW-Architektur modelliert werden kann…
Prof. Dr. A. Metzner 16
2. Notationen
Verhaltensdiagramme (dynamische Views)
Struktogramme
Nasi-Shneidermann Diagramm
DIN 66261
(1972/73 I. Nassi, B. Shneidermann)
zeitl. Ablauf
Eingabe Formulardaten
Formulardaten ok?
Fehlermeldung 1 ausgeben
Partner mit Formulardaten suchen
Partner vorhanden?
FehlerMldg 2 ausgeben
Partnerliste ausgeben
nein ja
nein ja
Prof. Dr. A. Metzner
2. Notationen
17
…und wie wird heute Software modelliert?:
UML-Aktivitätsdiagramme
Prof. Dr. A. Metzner 18
2. Notationen
Verhaltensdiagramme (dynamische Views)
Aktivitätsdiagramm
Verwendung zur Darstellung des Kontrollflusses einer Aktivität
Es zeigt das schrittweise Abarbeiten eines Vorgangs
zeitl. Ablauf
[ja]
Prof. Dr. A. Metzner 20
2. Notationen
Verhaltensdiagramme
Aktivitätsdiagramm
Einige Notations- elemente
(www.oose.de/uml)
Prof. Dr. A. Metzner 24
2. Notationen
Verhaltensdiagramme (dynamische Views)
Sequenzdiagramm
Verwendung zur Darstellung von Interaktionen zwischen Objekten und Objektgruppen
Betonung auf der zeitlichen Reihenfolge von Messages die zwischen den Objekten versendet werden
Prof. Dr. A. Metzner 25
2. Notationen
Verhaltensdiagramme (dynamische Views)
Sequenzdiagramm
Notationselemente
(www.oose.de/uml)
Prof. Dr. A. Metzner 26
3. Architekturen
Was ist Architektur?
(DataWarehouse Referenzarchitektur, Wikipedia, 2009)
Prof. Dr. A. Metzner 28
SAP-Interaktions-Modell
Maier Name
Bahnhofstrasse 3 Strasse
Augsburg Ort
Suchen
Anwender
allg
Benutzer-
Schnittstelle Input
(Daten + Befehle) Output (Daten)
Präsentationslogik
Datenhaltungslogik
Anwendungslogik
Tabelle Yadresse
...
...
Maier | Bahnhofstrasse 3 | Augsburg
Code-Deklaration
Ereignis i
Code-Aufruf zu Ereignis i
Ablauflogik-
Schnittstelle
Datenbank-
Schnittstelle
Ablaufsteuerung
Datenbeschreibungs-
Definition Name | CHAR | 20
Strasse | CHAR | 20
Ort | CHAR | 20
Telnr | INT4 | 15
Prioritäten
An
we
nd
er
En
twic
kle
r
1
2
3
2
1
3
1
1
ppt: Bild-Kap03-02.wmf
Ebene
1
2
3
4
Prof. Dr. A. Metzner 30
3. Architekturen
Was ist Architektur?
Modell für „Größter gemeinsamer Teiler“
Prof. Dr. A. Metzner 31
3. Architekturen
(M.Foegen, J.Battenfeld, Rolle der Architektur, Informatik-Spektrum, 2001)
Prof. Dr. A. Metzner 32
3. Architekturen
Eine Softwarearchitektur ist eine Beschreibung der Subsysteme und Komponenten eines SW Systems und der Beziehungen dazwischen
Beinhaltet
Makroarchitektur: High-Level Architektur
z.B. Web Systeme basieren auf verteilten Architekturen
Mikroarchitektur: Softwarestruktur
z.B. Programmstruktur, Low-Level Modelle und Design Pattern
Prof. Dr. A. Metzner 33
3. Architekturen
Beispiele:
SOA – Service orientierte Architekturen Makroarch.: Client-Server
Mikroarch.: Design Pattern z.B. Singelton
Prof. Dr. A. Metzner 34
3. Architekturen
Makroarchitektur
Generelle Architekturen
Schichten
Beispiel: ISO-OSI 7-Schichtenmodell
Pipes: FIFO Konstrukte
Beispiel: Message Queues, allgemeine Warteschlangen
Filter
Beispiel: Spamfilter
Blackboards
Architekturmodell: Expertengruppe, Zusammenarbeit, Lösungen in hierarchisch organisierter Form ablegen
Prof. Dr. A. Metzner 35
3. Architekturen
Makroarchitektur
verteilte Architekturen
Three-tier Architekturen
Client-Server Architekturen
Benutzeroberfläche
Applikationsserver
Datenbankserver
Operation anfordern
Daten anfordern
Auf Daten warten
Daten zurückgeben
Ergebnis zurückgeben
Auf Ergebnis warten
t
Client Server
Applikations Server
Datenbank Server
Prof. Dr. A. Metzner 36
3. Architekturen
Makroarchitektur
verteilte Architekturen
Broker Architektur:
Beispiel: Request Broker (Vermittler-Komponenten)
Client Anwendung
Client-side Proxy
Server Anwendung
Server-side Proxy
Request Broker
Logische Kommunikation
physische Kommunikation
Prof. Dr. A. Metzner 37
3. Architekturen
Makroarchitektur
Interaktive Systeme
Modell-View-Controller
Presentation-Abstraction-Control: Präsentationsschicht, Businessschicht, Datenpersistenzschicht, Datenschicht
Business-Logik Präsentations-Logik
Prof. Dr. A. Metzner 38
3. Architekturen
Makroarchitektur
Adaptive Systeme (deu: anpassungsfähig)
Mikrokernel:
Reflektion: Zur Laufzeit (per Programm) nachsehen welche Funktionen ein Assembly anbietet
Client Prozess
Server Prozess
Mikrokernel
Speicher
Interprozesskommunikation
Prof. Dr. A. Metzner 39
3. Architekturen
Makroarchitektur
Andere Architekturen
Batch Prozesse
Interpreter
Prozess Kontrolle
Regel-basierte Systeme
...
Prof. Dr. A. Metzner 40
3. Architekturen
Mikroarchitektur
Design Pattern
Was ist das? Entwurfsmuster
Warum? „Each Pattern describes a problem which occurs over
and over again in our environment, and then describes the core of solution to that problem, in such a way that you can use this solution a million times over, without doing it the same way twice“
„Best Practice“ Vorschläge für SW Design Probleme
(C.Alexander, GoF)
Prof. Dr. A. Metzner 41
3. Architekturen
Die vier wichtigsten Bestandteile eines Design Patterns
Name
Name des Patterns eindeutig und beschreibend
Somit wird ein höherer Abstraktionslevel erreicht
Problem
Beschreibung des zu lösenden Problems und seines Kontexts
Manchmal Aufzählung möglicher Designfehler
Lösung
Elemente die das Design ausmachen und deren Beziehungen
Verantwortlichkeiten und Kollaboration
Konsequenzen
Zeit- und Platzabstimmungen
Evtl. sprachabhängige und implementationsabhängige Bedenken
Prof. Dr. A. Metzner 43
3. Architekturen
Mikroarchitektur
Design Pattern Erzeugung: Singelton, Factory, Prototype, Builder
Beispiel: Singelton (deu: Das Einzelstück)
erzeugt und verwaltet das einzige Objekt der Klasse
bietet globalen Zugriff auf dieses Objekt über eine Instanzoperation (getInstance(); )
die Instanzoperation ist eine Klassenmethode, das heißt statisch gefunden
das private Attribut „Instanz“ (instance) ist ein Klassenattribut, das heißt ein statisches Attribut
Prof. Dr. A. Metzner 44
3. Architekturen
Mikroarchitektur
Design Pattern
Struktur: Facade, Adapter, Bridge, Composite, Decorator, Flyweight, Proxy
Beispiel: Fassade
Bietet eine vereinfachte Schnittstelle zu einer Menge von Schnittstellen in einem Subsystem
Vereinfachung des Gebrauchs des Subsystems
Die komplizierten Schnittstellen des Subsystems werden „gewrapped“
Facade
+Do_it()
Complx_Facade
Subsystem
Client
Prof. Dr. A. Metzner 45
3. Architekturen
Mikroarchitektur
Design Pattern
Verhalten: Command, Interpreter, Iterator, Mediator, Memento, Observer, State, Strategy, Template, Visitor
Beispiel: Observer
Weitergabe von Änderungen an einem Objekt an von diesem Objekt abhängige Strukturen
Prof. Dr. A. Metzner 46
4. Strategien und Methoden
Funktions-orientiertes Design
Klassische Methode
Dekomposition Identifizieren der wichtigsten Funktionen zuerst
Top-Down Vorgehen Bearbeiten und Verfeinern
Verwendung von Diagrammtypen wie Structured Analysis
Strukturcharts
main
f1() f2()
f3() f4()
Prof. Dr. A. Metzner 47
4. Strategien und Methoden
Objekt-orientiertes Design
Simpler Anfang Objekte zu identifizieren Noun = object
Verb = method
Adjective = attribute
Vorgehensmöglichkeiten Komponenten-basiertes Vorgehen
Vererbung und Polymorphismus identifizieren
Daten-orientiertes Vorgehen Datenabstraktion
Zuständigkeits-orientiertes Vorgehen Responsibilities identifizieren
Meta-Informationen sammeln gewinnen und anwenden durch z.B. Reflektion
Verwendung von allen UML Diagrammtypen
Wiederverwendung steht im Vordergrund
Prof. Dr. A. Metzner 48
4. Strategien und Methoden
Datenstruktur-orientiertes Design
Beispiel: Entity-Relationship
Diagramme, HIPO Diagramm
SW Ingenieur beginnt zuerst Inputs und Outputs zu beschreiben
Kontrollstruktur wird aufgrund der entstandenen Datenstrukturen entworfen
Häufig werden Heuristiken eingesetzt Beispiel: wenn ein Versatz zwischen Input- und Outputdaten
vorkommt
(Wikipedia, ERM in modifizierter Chen-Notation)
Prof. Dr. A. Metzner 49
4. Strategien und Methoden
Komponenten-orientiertes Design
Komponente: unabhängige Einheit
Schnittstellen definieren
Abhängigkeiten abschätzen
Unabhängigkeit der Komponenten fördern wenn möglich
Anbieten, entwickeln und integrieren von Komponenten
Wiederverwendung stärken wo möglich
Prof. Dr. A. Metzner 50
4. Strategien und Methoden
Andere Methoden
Formale Methoden
Transformationsmethoden
Transaktionsmethoden
...
Prof. Dr. A. Metzner 51
5. SW Wiederverwendung
Englischer Begriff: Reuse
Produktlinien
Identifizieren von gemeinsamen Eigenschaften von Teilnehmern und Gründung einer Produktfamilie
Prof. Dr. A. Metzner 52
5. SW Wiederverwendung
Englischer Begriff: Reuse
Frameworks:
Ein teilweise fertiges SW System, dass vom SW Entwickler erweitert werden kann
oft OO
oft werden spezielle Plug-ins instanziiert
Beispiel: Microsoft .NET Framework Common Language Infrastructure (CLI)
Common Language Runtime (CLR) ist die Virtual Machine von .NET
Client-PC benötigt zur Ausführung das installierte .NET Framework
Veröffentlichter Code unter Microsoft Reference License; Es ist jedoch nicht erlaubt, den Quellcode zu modifizieren