Vorlesung „Softwaretechnologie“
Wintersemester
te se este 2009
009
Kapitel 5
Systementwurf, Komponenten und
Architekturen
ROOTS
Systementwurf
Ziel: Überbrücken der Lücke zwischen gewünschtem und
existierendem System auf handhabbare Weise
Problem
Gewünschtes System
Existierende
Systeme
Idee: Anwendung des “Divide and Conquer”-Prinzips
Modellierung des neuen Systems als Menge von Subsystemen
Folgeproblem: „Crosscutting concerns“ – Übergeordnete Belange die
viele Subsysteme betreffen (z
(z.B.
B Persistenz
Persistenz, Nebenläufigkeit
Nebenläufigkeit, ...))
Erst wenn diese geklärt sind, kann man die Subsysteme unabhängig
voneinander bearbeiten
Weg: Zielbestimmung Dekomposition Klärung der
übergeordneten Belangen
Danach erst Detailentwurf der Subsysteme
© 2000-2009 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
Seite 5-3
ROOTS
Systementwurf
Systementwurf
1. Entwurfsziele
8. Grenzfä
fälle
Definition
D
fi iti
Abwägungen
Initialisierung
Fehler
Ende
2. System
Dekomposition
7. Programmsteuerung
Ebenen / Partitionen
Kohärenz / Kopplung
Monolithisch
Ereignisbasiert
Threads
Parallele Prozesse
3. Hardware / Software
Zuordnung
Kaufen vs. Selbermachen
Netzwerktopologie
Allokation
6. Globale
Ressourcenverwaltung
Zugriffskontrolle
Sicherheit
4. Pesistente
5. Nebenläufigkeit
Identifizierung von
Datenverwaltung
Dateien
Datenbanken
Datenstrukturen
© 2000-2009 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
Thread
Seite 5-4
ROOTS
Nutzung der Ergebnisse der Anforderungsanalyse
für den Systementwurf
y
Nichtfunktionale Anforderungen
Aktivität
Akti ität 1:
1 Definition
D fi iti d
der E
Entwurfsziele
t
f i l
Use Case Modell, Objektmodell
Aktivität
Ak i i ä 2:
2 Systemdekomposition
S
d k
i i (A
(Auswahl
hl von S
Subsystemen
b
nach
h
funktionalen Anforderungen, Kohärenz und Kopplung)
Aktivität 3: Hardware/Software Zuordnung
Aktivität 4: Persistentes Datenmanagement
Use Case Modell, Dynamisches Modell
Aktivität 5: Nebenläufigkeit
Aktivität 6: Globale Ressourcenverwaltung
Aktivität 7: Programmsteuerung
Aktivität 8: Grenzfälle
© 2000-2009 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
Seite 5-5
ROOTS
Kapitel-Überblick
Ziele und Dekomposition
1.
1 E
Entwurfsziele
t
f i l
2. Dekomposition in Subsysteme
SystemArchitektur
Zielgerichteter Entwurf
3. Hardware/Software Zuordnung
4. Management persistenter Daten
5.
5 Nebenläufigkeit
6. Globale Ressourcenverwaltung
7. Programmsteuerung
8. Grenzfälle
© 2000-2009 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
Seite 5-6
ROOTS
Vorlesung „ Softwaretechnologie“
Kapitel
ap te 55: Syste
Systementwurf
e t u
ROOTS
Ziele und Dekomposition
( Brügge & Dutoit, Kap. 6)
Entwurfsziele
Dienstidentifikation
Subsystemaufteilung
1. Entwurfsziele
externe
t
Qualitäten
Q lität
Endbenutzer
Kunde
•
•
•
•
•
•
Funktionalität
Niedrige Kosten
Erhöhte Produktivität
Abwärtskompatibilität
Schnelle Entwickelung
Flexibilität
• Laufzeiteffizienz
•
•
•
•
Benutzerfreundlichkeit
Intuitive Bedienung
Erlernbarkeit
Robustheit, Fehlertoleranz
• Zuverlässigkeit
• Portabilität
• Gute Dokumentation
•
•
•
•
•
Anpassbarkeit
Minimale Fehleranzahl
Änderbarkeit,
Änderbarkeit Lesbarkeit
Wiederverwendbarkeit,
Gut definierte Schnittstellen
interne Q
Qualitäten
Entwickler
© 2000-2009 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
Seite 5-8
ROOTS
Interessenskonflikte Abwägungen
Funktionalität vs. Benutzbarkeit
Je
J überladener,
üb l d
um so schwerer
h
zu erlernen
l
Funktionalität vs. schnelle Entwicklung
Viel
Vi l Funktionalität
F ki
li ä zu iimplementieren
l
i
b
braucht
h Z
Zeit
i
Kosten vs. Robustheit
Sparen an Qualitätssicherung
Kosten vs. Wiederverwendbarkeit
Quick and dirty
Effizienz vs. Portabilität
Effizienz durch Speziallösung für bestimmtes Betriebssystem, DBMS, ...
Abwärtskompatibilität vs. Lesbarkeit
Viele Sonderfälle für Altversionen erschweren die Lesbarkeit
© 2000-2009 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
Seite 5-9
ROOTS
Bedeutung nichtfunktionaler
Anforderungen für den Systementwurf
DilemmaZu viele Alternativen
Die
Di gleiche
l i h F
Funktionalität
kti
lität iistt auff verschiedenste
hi d
t A
Arten
t realisierbar
li i b
Nutzen von NFAAuswahlkriterien
Nichtfunktionale Anforderungen dienen als Auswahlkriterien
Sie fokussieren die Entwurfsaktivitäten auf die relevanten Alternativen
Beispiele (NF Anforderung Lösungsmöglichkeiten)
„Hoher
Hoher Durchsatz“
Durchsatz Parallelität,
Parallelität optimistische Vorgehensweise
Vorgehensweise, …
„Zuverlässigkeit“ Einfache GUIs, Redundanz, …
© 2000-2009 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
Seite 5-10
ROOTS
2. Subsystem-Dekomposition
Erster Schritt: Subsystem-Identifikation
Welche
W l h Di
Dienste
t werden
d von d
dem S
Subsystemen
b
t
zur V
Verfügung
fü
gestellt
t llt
(Subsystem-Interface)?
1. Gruppiere Operationen zu Diensten
2. Gruppiere Typen die einen Dienst realisieren zu Subsystemen
Zweiter Schritt: Subsystem-Anordnung
Subsystem Anordnung
Wie kann die Menge von Subsystemen strukturiert werden?
Wie interagieren
g
sie?
Nutzt ein Subsystem einseitig den Dienst eines anderen?
Welche der Subsysteme nutzen gegenseitig die Dienste der anderen?
1.
1 Schichten und Partitionen
2. Software Architekturen
© 2000-2009 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
Seite 5-11
ROOTS
Subsystem-Identifikation: Dienste
Dienst: Menge von Operationen mit gemeinsamem Zweck
Beispiel:
B i i l B
Benachrichtigungsdienst
h i hti
di
t
lookupChannel(), subscribe(), sendNotice(), unsubscribe()
Dienste werden während des Systementwurfs identifiziert und spezifiziert
Dienstspezifikation: Vollständig typisierte Menge von Operationen
In
I UML und
d JJava würde
üd d
das einem
i
'I'Interface'
t f
' entsprechen
t
h
Beispiel: Spezifikation des obigem Dienstes
NotificationService
NotificationChannel lookupChannel(ChannelCharacteristics)
void subscribe(Observer)
void sendNotice(Notification)
void unsubscribe(Observer)
Entscheidung: Suche
nach Channel der
bestimmte Fähigkeiten
hat soll möglich sein.
Alternative: Suche
anhand von Namen
Verwendete Schnittstellen (Observer, ...) müssen
natürlich auch spezifiziert werden
© 2000-2009 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
Seite 5-13
ROOTS
Subsystem-Identifikation: Subsysteme
Subsystem (UML: Package)
Stark
St k kohärente
k hä t Menge
M
von Kl
Klassen, A
Assoziationen,
i ti
O
Operationen,
ti
E
Events
t
und Nebenbedingungen die einen Dienst realisieren
Wenn es gute Gründe gibt kann ein Subsystem mehr als einen Dienst
anbieten
Frage: Was ist Kohärenz?
© 2000-2009 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
Seite 5-15
ROOTS
Subsystem-Identifikation: Kopplung und
Kohärenz
Kohärenz = Maß der Abhängigkeiten innerhalb der Kapselungsgrenzen
(hier: innerhalb eines Subsystems)
Starke Kohärenz: Die Klassen im Subsystem haben ähnliche Aufgaben und
sind untereinander verknüpft (durch Assoziationen)
Kopplung = Maß der Abhängigkeiten zwischen den Kapselungsgrenzen
(hier: zwischen den Subsystemen)
Starker Kopplung: Modifikation eines Subsytems hat gravierende
Auswirkungen auf die anderen (Wechsel des Modells, breite
Neukompilierung, usw.)
Ziel: Wartbarkeit
Die meisten Abhängigkeiten sollten innerhalb einzelner Subsysteme
bestehen, nicht über die Subsystemgrenzen hinweg.
Kriterien
Subsysteme sollten maximale Kohärenz und minimale Kopplung haben
© 2000-2009 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
Seite 5-16
ROOTS
Beispiel: Kopplung und Kohärenz
Gegeben folgende drei Klassen. Die Pfeile zeigen Abhängikgeiten
(Feldzugriffe Methodeanaufrufe):
(Feldzugriffe,
A
B
C
a_1
b_1
c_1
a_2
b_2
c_2
a1(A,B,C)
b1(A,B,C)
c1(A,B,C)
a2(A,B,C)
b2(A,B,C)
c2(A,B,C)
a3(A,B,C)
b3(A,B,C)
c3(A,B,C)
a4(A B C)
a4(A,B,C)
b4(A B C)
b4(A,B,C)
c4(A B C)
c4(A,B,C)
Kaum Kohäsion.
b_1,, b_2 ungenutzt
g
b1 gehört nach A!
b2 - b4 gehören nach C!
Völlig unkohäsive
Klasse.
B kümmert
kü
t sich
i h mehr
h
um C-Elemente als C
selbst!
Klasse mit 2
unabhängigen
Kohäsionseinheiten
aufsplitten in 2 Klassen!
© 2000-2009 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
Seite 5-17
ROOTS
Vorlesung „ Softwaretechnologie“
Kapitel
ap te 55: Syste
Systementwurf
e t u
ROOTS
Das Facade Pattern
Facade Pattern
Absicht
Menge
g von Interfaces eines Subsystems
y
zusammenfassen
Abhängigkeiten der Clients von der Struktur des Subsystems reduzieren
client classes
client classes
Facade
subsystem
classes
subsystem
classes
Subsystem-Schnittstellen-Objekt
S b
S h i
ll Obj k
Objekt, das die Schnittstelle eines Subsystems nach außen darstellt
Bietet alle Methoden der Subsystem-Schnittstelle
Subsystem Schnittstelle
Vorteil: Clients müssen nichts über die Interna des Subsystems wissen
© 2000-2009 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
Seite 5-19
ROOTS
Facade Pattern: Beispiel
Facade
Compiler
compiler
subsystem
classes
compile()
St
Stream
BytecodeStream
CodeGenerator
StackMachineCodeGen
StackMachineCodeGen.
© 2000-2009 Dr. G. Kniesel
S
Scanner
T k
Token
Parser
Symbol
ProgramNodeBuilder
StatementNode
ProgramNode
ExpressionNode
VariableNode
RISCCodeGenerator
Vorlesung „Softwaretechnologie“
Seite 5-20
ROOTS
Facade Pattern: Anwendbarkeit
Viele Abhängigkeiten zwischen Klassen
Reduzieren
R d i
d
durch
h Facade-Objekte
F
d Obj kt
Einfaches Interface zu einem komplexen
p
Subsystem
y
Einfache Dinge einfach realisierbar (aus Client-Sicht)
Anspruchsvolle Clients dürfen auch "hinter die Facade schauen"
zB
B für
fü seltene,
lt
komplexe
k
l
Anpassungen
A
des
d Standardverhaltens
St d d h lt
Hierarchische Strukturierung
g eines System
y
Eine Facade als Einstiegspunkt in jede Ebene
© 2000-2009 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
Seite 5-21
ROOTS
Implementierung: Konfigurierbarkeit
einer Facade
Konfiguration
g
= Subklasse
Konfiguration
g
= Parameter
Compiler
Compiler
compile()
Compiler()
compile()
Compiler(CodeGenerator)
…
CodeGenerator
RISCCompiler
StackMachineCompiler
compile()
RISCCompiler()
compile()
StackMachineCompiler()
Stac
ac eCo p e ()
RISCCodeGenerator
StackMachineCodeGen
StackMachineCodeGen.
:Compiler
:RISCCompiler
…
…
:RISCCodeGenerator
© 2000-2009 Dr. G. Kniesel
:RISCCodeGenerator
Vorlesung „Softwaretechnologie“
Seite 5-23
ROOTS
Vorlesung „ Softwaretechnologie“
Kapitel
ap te 55: Syste
Systementwurf
e t u
ROOTS
Beispiel: Vom Analysemodell zur
Systemdekomposition
Gruppieren
pp
Dienste und Subsysteme einführen
Ausgangspunkt: Objektmodell der
Analyse
© 2000-2009 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
Seite 5-25
ROOTS
Naive System-Dekomposition: Nur
Gruppierung in Packages
Subsystem 1
Subsystem 5
Subsystem 2
Subsystem 3
Subsystem 4
Subsystem
y
6
© 2000-2009 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
Seite 5-26
ROOTS
System-Dekomposition: Dienste und
Komponenten
Subsystem 1
Subsystem 5
Subsystem 2
Subsystem 3
Subsystem 4
Subsystem
y
6
© 2000-2009 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
Seite 5-27
ROOTS
System-Dekomposition: DiensteRealisierung mit Facades
Subsystem 1
<<Facade>>
Subsystem 5
Subsystem 2
Subsystem 3
Subsystem 4
Subsystem
y
6
© 2000-2009 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
Seite 5-28
ROOTS
Namensräume versus Subsysteme
Die zwei vorherigen Folien illustrieren, dass Subsysteme viel mehr sind
als Packages
Packages sind nur Namensräume, keine Kapselungseinheiten
Sie verhindern zufällige Namensgleichheit, erlauben aber Zugriff (via
import-Mechanismus)
Sie haben keine eigene Kapselungsgrenze (keine Schnittstelle)
Sie reduzieren somit nicht die Abhängigkeiten (siehe vorvorherige Folien)
Subsysteme werden als Komponenten (s. nächster Abschnitt) realisiert
Sie haben klar definierte Kapselungsgrenzen (Schnittstellen)
Sie
Si begrenzen
b
somit
it die
di möglichen
ö li h Abhä
Abhängigkeiten
i k it (d
(da nur üb
über di
die
Schnittstellen zugegriffen werden kann)
© 2000-2009 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
Seite 5-29
ROOTS
Aufgabe (Diskussion mit Kollegen)
Überlegen, Sie ob das vorherige Beispiel eine gute oder schlechte
Dekomposition darstellt
darstellt.
Diskutieren Sie, was für eine Systemdekomposition „gut“
„gut oder
„schlecht“ ist.
Kategorisieren Sie die Dekomposition aus dem Beispiel als eine der
nachfolgend vorgestellten Software-Architekturen.
Passt es genau? Brauchen Sie Änderungen damit es passt?
© 2000-2009 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
Seite 5-30
ROOTS
Darstellung von Subsystemen in der UML
Lebenszeit von Komponenten
Manche
M
h existieren
i ti
nur zur E
Entwurfszeit
t
f
it
Manche existieren nur bis zur Kompilierung
Manche existieren zur Bindungsg oder Laufzeit
Der Systementwurf muss somit statische und dynamische Strukturen
modellieren.
d lli
E
Er verwendet
d t
Komponentendiagramme für statische Strukturen (zur Entwurfs- oder
Kompilierzeit)
p
)
Verteilungsdiagramme für dynamische Strukturen (zur Installations-,
Lade-, und Laufzeit)
© 2000-2009 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
Seite 5-31
ROOTS
Vorlesung „ Softwaretechnologie“
Kapitel
ap te 55: Syste
Systementwurf
e t u
Software-Komponenten
ROOTS
Intuitive Vorstellung
Anbieter
Entwickler
Anbieter
Anbieter
Anbieter
© 2000-2009 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
Seite 5-33
ROOTS
Ziele
Plattformunabhängige Wiederverwendung von Komponenten
günstigere,
ü ti
bessere und
schnellere Softwareentwicklung.
g
Unterstützung für flexibel anpassbare Geschäftsprozesse
Einfach existierende Dinge zu einem neuen Verbund zusammensetzen
Fokus auf intelligente Anwendung anstatt der wiederholten (Neu-)
(Neu )
Entwicklung des gleichen Basisfunktionalitäten
Märkte für Komponenten
Möglichkeit Komponenten von Drittanbietern zu kaufen
Möglichkeit Komponenten an andere zu verkaufen
© 2000-2009 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
Seite 5-34
ROOTS
Komponenten-Definition
Clemens Szyperski , WCOP 1996
„Eine
Ei S
Softwarekomponente
ft
k
t ist
i t eine
i Kompositionseinheit
K
iti
i h it mit
it vertraglich
t li h
spezifizierten Schnittstellen und nur expliziten Kontextabhängigkeiten."
„Eine Softwarekomponente kann unabhängig eingesetzt werden und wird
von Dritten zusammengesetzt."
Literatur
Workshop on Component-Based Programming (WCOP) 1996
Clemens Szyperski:
„Component
C
t Software
S ft
– Beyond
B
d Object-Oriented
Obj t O i t d Programming“,
P
i “
Addison Wesley Longman, 1998.
Clemens Szyperski, Dominik Gruntz, Stephan Murer:
„Component
C
S f
Software
– Beyond
B
d Object-Oriented
Obj
Oi
d Programming“,
P
i “
Second Edition, Pearson Education, 2002.
© 2000-2009 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
Seite 5-35
ROOTS
Komponenten
Kernidee Nur explizit spezifizierte Kontextabhängigkeiten
Daher
D h auch
h „benutzte
b
t t S
Schnittstellen“
h itt t ll “ b
beschreiben!.
h ib !
Beispiel
Die Komponente
p
„„Bestellung“
g braucht einen „„Person“-Dienst um die
eigenen Dienste anbieten zu können.
© 2000-2009 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
Seite 5-36
ROOTS
Komponenten: Beispiel
Komposition
Die „Order
Order“-Komponente
-Komponente nutzt den „Person
Person“-Dienst
-Dienst von „Customer
Customer“
Hierarchische Komponenten
Die „Store-Komponente besteht ihrerseits aus drei Unterkomponenten
© 2000-2009 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
Seite 5-37
ROOTS
Interaktionsspezifikation durch
„Behaviour
Behaviour Protocoll
Protocoll“
Gegeben
Lösung
Folgende
F l
d S
Schnittstelle
h itt t ll
Z
Zu jedem
j d
T
Typ wird
i d sein
i
„Verhaltensprotokoll“ mit angegeben
DB_Interface
open(DB_descr)
open(DB
descr) : Connection
close(Connection)
query(Connection,SQL) : ResultSet
getNext(ResultSet)
g
(
) : Result
Es ist ein regulärer Ausdruck der
legale Aufrufsequenzen und
Wiederholungen spezifiziert
Beispiel
Problem
Wir wissen trotzdem nicht, wie das
beabsichtigte Zusammenspiel der
einzelnen Methoden ist.
Kann man die Methoden in jeder
beliebigen Reihenfolge aufrufen?
„Erst
E Verbindung
V bi d
zuer Datenbank
D
b k
erstellen, dann beliebig oft anfragen
und in jedem Anfrageergebnis
beliebig oft Teilergebnisse abfragen,
dann Verbindung wieder schließen.“
protocoll DB_Interface_Use =
open(DB descr) ,
open(DB_descr)
( query(Connection,SQL) : ResultSet ,
( getNext(ResultSet) : Result )* ,
)* ,
close(Connection)
© 2000-2009 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
Seite 5-38
ROOTS
SOFA (Software Appliances) Component
Model
SOFA Component (http://dsrg.mff.cuni.cz/sofa)
1.
1 provided and required interfaces
2. frame (black-box view)
3. architecture (gray-box view)
4. connectors (abstract
(
interaction))
5. behavior protocols associated with 1., 2. ,3.
Behaviour Protocol
incomming event (!)
outgoing event (?)
regular expression describing legal event sequences
E
Example
l
!open, [!query, [!getNext]* ]*, !close
Behaviour protocols enable verification of composition
© 2000-2009 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
Seite 5-39
ROOTS
Weiterführende Literatur zu „Behaviour
Protocolls
Protocolls“
„SOFA / DCUP“ Projekt an der Karls-Universität Prag, Prof. Plasil und
Mitarbeiter
http://dsrg.mff.cuni.cz/projects.phtml?p=sofa&q=0
Hierachische Komponenten mit „angebotenen“
„angebotenen und „benutzten
„benutzten“
Schnittstellen
Spezifikation von Behaviour Protocols für beide Arten von
Schnittstellen
Automatische Verifikation der Protokolleinhaltung bei der Komposition
von Komponenten
p
Horizontale Verbindung von „frames“ untereinander
Vertikale Verbindung von „frame“ mit seiner „architecture“
Das
D ganze sogar b
beii d
dynamischen
i h U
Updates
d t d
der K
Komposition
iti (d
(d.h.
h
Ersetzung von Komponenten zur Laufzeit)
© 2000-2009 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
Seite 5-40
ROOTS
OM
MG
Java
M
Microsoft
Übersicht über existierende Komponentenmodelle
Modell
IDL
Schnittstellen
Ereignisse
Konfiguration
Komposition
COM/DCOM
ja
nur provided
durch
Schnittstellen
nein
nein
COM+
ja
nur provided
Ereignisdienst
Kataloge
nein
.NET
Gemeinsames
Typsystem
nur provided
Nachrichtenserver
Einsatzbeschreibung
nein
JavaRMI
nein
nur provided
durch
Schnittstellen
nein
nein
JavaBeans
nein
nur provided
durch
Schnittstellen
Binärdatei
nein
EJB
nein
nur provided
durch
Schnittstellen
Einsatzbeschreibung
nein
CORBA
ja
nur provided
Ereignisdienst
nein
nein
CCM
ja
provided und
required
Quellen und
Verbraucher
Komponentenbeschreibung
Kompositions
beschreibung
ja
provided und
required und
behaviour
protocols
Quellen und
Verbraucher
KomponentenKomponenten
und Einsatzbeschreibung
Kompositions
beschreibung
SOFA
© 2000-2009 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
Seite 5-41
ROOTS
Charakteristika Komponentenbasierter
Softwareentwicklung
Strikte Trennung zwischen Schnittstellen und Implementierung
Die
Di S
Schnittstellenspezifikation
h itt t ll
ifik ti enthält
thält alle
ll Informationen
I f
ti
die
di ein
i potentieller
t ti ll
Benutzer kennen muss. Es gibt keine anderen Kontextabhängigkeiten.
Verfügbarkeit
V fü b k it als
l Bi
Binärcode
ä d
Komponenten werden in ausführbarer, binärer Form für viele Plattformen
geliefert. Quellcode ist nicht erforderlich.
Plattformunabhängigkeit
Komponenten können auf einer Vielzahl von Rechnerumgebungen /
Betriebssystemen eingesetzt werden.
Ortstransparenz
Komponenten verwenden oft in Verbindung mit Middleware-Systemen
eingesetzt, so dass man nicht wissen braucht, wo sich einzelne
Komponenten zurr Laufzeit
La f eit befinden
befinden.
© 2000-2009 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
Seite 5-42
ROOTS
Charakteristika Komponentenbasierter
Softwareentwicklung
Wohldefinierter Zweck, der mehr als ein einzelnes Objekt umfasst
Eine
Ei Komponente
K
t ist
i t auff ein
i spezifisches
ifi h Problem
P bl
spezialisiert
i li i t
Wiederverwendbarkeit
Als domänenspezifische Abstraktionen erlauben Komponenten
Wiederverwendung auf Ebene von (Teil-)Anwendungen
Kontextfreiheit
Die Integration von Komponenten sollte unabhängig von einschränkenden
Randbedingungen sein.
Portabilität und Sprachunabhängigkeit
p
gg
Es sollte möglich sein, Komponenten in (fast) jeder Programmiersprache
zu entwickeln.
© 2000-2009 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
Seite 5-43
ROOTS
Charakteristika Komponentenbasierter
Softwareentwicklung
Reflektive Fähigkeiten
Komponenten
K
t sollten
llt Reflektion
R fl kti unterstützen,
t tüt
so dass
d
di
die von Ih
Ihnen
angebotenen und benötigten Dienste durch Introspektion bestimmt werden
können.
Plug & Play
Komponenten sollten leicht einzusetzen sein.
Konfiguration
Komponenten sollten parametrisierbar sein, damit sie leicht neuen
Situationen angepasst werden können.
Zuverlässigkeit
Komponenten sollten ausgiebig getestet werden.
© 2000-2009 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
Seite 5-44
ROOTS
Charakteristika Komponentenbasierter
Softwareentwicklung
Eignung für Integration / Komposition
Es
E sollte
llt möglich
ö li h sein,
i K
Komponenten
t zu kkomplexeren
l
K
Komponenten
t
zusammenzusetzen. Komponenten müssen miteinander interagieren
können.
Unterstützung für visuelle Kompositionswerkzeuge
© 2000-2009 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
Seite 5-45
ROOTS
Vorlesung „ Softwaretechnologie“
Kapitel
ap te 55: Syste
Systementwurf
e t u
Komponentendiagramme
ROOTS
Komponentendiagramm: UML 2.0
Komponentendiagramm zeigt Komponenten und deren Abhängigkeiten
Komponenten sind gekapselte Teile eines Systems mit nach außen
wohldefinierten Schnittstellen
Angebotene
A
b t
Schnittstellen
S h itt t ll ((‚provided
id d interfaces‘)
i t f
‘)
Benötigte/benutzte Schnittstellen (‚required interfaces‘)
Komponenten kapseln beliebig komplexe Teilstrukturen
Klassen, Objekte, Beziehungen oder ganze Verbünde von
Teilkomponenten ( hierarchische Komposition)
Quellcode, Laufzeitbibliotheken, ausführbare Dateien, …
Komponenten bieten ‚Ports‘
Ein Port ist Name für eine Menge zusammengehöriger Schnittstellen
Verschiedene Ports (Namen) für mehrfach vorhandene gleiche
Schnittstelle ((z.B. mehrere USB-Schnittstellen am g
gleichen Gerät))
© 2000-2009 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
Seite 5-47
ROOTS
Komponentendiagramm: Elemente
Komponente ((„component“))
Interface mit Stereotype
<<component>>
Name
<<stereotype>>
Name
angebotenes Interface
benötigtes Interface
Port
Beziehung
© 2000-2009 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
Seite 5-48
ROOTS
Komponentendiagramm: Beispiel
C
Camcorder
d
pal_Signal
tv_in
mic_Signal
mic_in
audio_out
audio_in
Computer
Komponenten-Verknüpfung
firewire_in_out
öffentlicher Port
angebotenes Interface
© 2000-2009 Dr. G. Kniesel
…
nicht-öffentlicher Port
benötigtes Interface
Vorlesung „Softwaretechnologie“
Seite 5-49
ROOTS
Komponenten und Rollen (‚Parts‘)
Komponenten können in Klassendiagrammen verwendet werden und
umgekehrt
Rollen (‚Parts
(‚Parts‘))
Der gleiche Typ (Interfaces oder Klasse) kann in verschiedenen
Komponenten verschiedene Rollen spielen.
„Das
Das engl
engl. Wort „Part
Part“ heißt in diesem Kontext „Rolle
Rolle“, nicht „Teil
Teil“!!
Notation
Rollen mit Multiplizität
Rolleninstanzen
© 2000-2009 Dr. G. Kniesel
Mutiplizität
Rolle:Typ [Multiplizität]
Rolle:Typ
instanz/Rolle:Typ
b1/Benutzer:Typ
Vorlesung „Softwaretechnologie“
Seite 5-50
ROOTS
Vorlesung „Softwaretechnologie“
Wintersemester
te se este 2009
009
ROOTS
Subsystem-Anordnung
Software-Architekturen
Subsystem Entwurf
Erster Schritt: Subsystem-Dekomposition
Welche
W l h Di
Dienste
t werden
d von d
dem S
Subsystemen
b
t
zur V
Verfügung
fü
gestellt
t llt
(Subsystem-Interface)?
1. Gruppiere Operationen zu Diensten.
2. Identifiziere Subsysteme als stark kohärente Menge von Klassen,
Assoziationen, Operationen, Events und Nebenbedingungen die einen
Dienst realisieren
Zweiter Schritt: Subsystem-Anordnung
Wie kann die Menge von Subsystemen strukturiert werden?
Nutzt ein Subsystem einseitig den Dienst eines anderen?
Welche der Subsysteme nutzen gegenseitig die Dienste der anderen?
1. Schichten und Partitionen
2. Software Architekturen
© 2000-2009 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
Seite 5-52
ROOTS
Softwarearchitekturen
Architektur = Subsysteme + Beziehungen der Subsysteme
Architekturen
Schichten-Architektur
Schichten Architektur
Client/Server Architektur
N-tier
Peer-To-Peer Architektur
Repository Architektur
Model/View/Controller
M d l/Vi /C
ll A
Architektur
hi k
Pips and Filter Architektur
© 2000-2009 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
Seite 5-53
ROOTS
Schichten und Partitionen
Schicht (=Virtuelle Maschine)
Subsysteme,
S b
t
di
die Di
Dienste
t fü
für eine
i höh
höhere Ab
Abstraktionsebene
t kti
b
zur V
Verfügung
fü
stellt
Eine Schicht darf nur von tieferen Schichten abhängig sein
Eine Schicht weiß nichts von den darüber liegenden Schichten
Partition
Subsysteme, die Dienste auf der selben Abstraktionsebene zur Verfügung
stellen.
Subsysteme, die sich gegenseitig aufeinander neziehen
Architekturanalysewerkzeuge
Identifikation von Schichten und Partitionen
Warnung vor Abhängigkeiten die der Schichtung entgegenlaufen
© 2000-2009 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
Seite 5-54
ROOTS
Schichten-Architekturen
Geschichtete Systeme sind hierarchisch. Das ist wünschenswert, weil
Hierarchie die Komplexität reduziert
reduziert.
Geschlossene Schichten-Architektur
Schichten Architektur (Opaque Layering)
Jede Schicht kennt nur die nächsttiefere Schicht.
Geschlossene Schichten sind leichter zu pflegen.
Offene Schichten-Architekturen (Transparent Layering)
Jede Schicht darf alle tiefer liegenden Schichten kennen / benutzen
benutzen.
Offene Schichten sind effizienter.
© 2000-2009 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
Seite 5-55
ROOTS
Geschlossene Schichten-Architektur
Beispiel „Verteilte
Verteilte Kommunikation
Kommunikation“
Application
Object
Presentation
Format
Session
Connection
Transport
Message
Network
Packet
DataLink
Frame
Physical
Bit
ISO = International
Organization
g
for
Standardization
OSI = Open System
Interconnection
Das Referenzmodell definiert
Netzwerkprotokolle in 7
übereinander liegenden Schichten
sowie strikte Regeln zu
Kommunikation zwischen diesen
Schichten.
© 2000-2009 Dr. G. Kniesel
Absstraktionse
ebenen
ISO’s
ISO’ OSI Referenzmodell
R f
d ll
Vorlesung „Softwaretechnologie“
Seite 5-56
ROOTS
Geschlossene Schichten-Architektur
Beispiel „Verteilte
Verteilte Kommunikation
Kommunikation“
Verteilte Programmierung
Application
Object
Presentation
Format
Session
Connection
Transport
Message
Network
Packet
DataLink
Frame
Physical
Bit
i mühsam
ist
üh
und
d ffehleranfällig:
hl
fälli
Verbindungsherstellung
zwischen Prozessen
Kommunikation zwischen
Packen/Entpacken von
Informationen in Nachrichten
statt Parameterübergabe
g
Umcodierung der Informationen
wegen heterogener Platformen
Berücksichtigung
B
k i hi
technischer
h i h
Spezifika des Transportsystems
© 2000-2009 Dr. G. Kniesel
Compu
uter- und
Netzwerkhardware
e Betriebssystem
Prozessen statt Objekten
Vorlesung „Softwaretechnologie“
Seite 5-57
ROOTS
Geschlossene Schichten-Architektur
Middleware erlaubt Konzentration auf Anwendungsschicht
Garantiert Transparenz der
Verteilung
Platform
Plattform
Unterste Hardware- und
Softwareschichten
Betriebssystem
Computer- und
Netzwerkhardware
© 2000-2009 Dr. G. Kniesel
Compu
uter- und
Netzwerkhardware
e Betriebssystem
Middleware
Middlew
ware
• Middlewareabhängig
• Plattformunabhängig
Vorlesung „Softwaretechnologie“
Application
Object
Presentation
Format
Session
Connection
Transport
Message
Network
Packet
DataLink
Frame
Physical
Bit
Seite 5-58
ROOTS
Middleware
Definition: Middleware
Softwaresystem
S ft
t
auff Basis
B i standardisierter
t d di i t Schnittstellen
S h itt t ll und
d Protokolle,
P t k ll
die Dienste bietet, die zwischen der Plattform (Betriebssystem + Hardware)
und den Anwendungen angesiedelt sind und deren Verteilung unterstützen
Bekannte Ansätze
Remote Procedure Calls
Java RMI (Remote Method Invocation)
CORBA (Common Object Request Broker Architecture)
Wünschenswerte Eigenschaften
Gemeinsame Ressourcennutzung
Nebenläufigkeit
Skalierbarkeit
Fehlertoleranz
Sicherheit
Offenheit
Vertiefung: Vorlesung „Verteilte Systeme“ (Dr. Serge Schumilov)
Applikationsserver
Definition: Applicationsserver
Softwaresystem
S ft
t
das
d als
l Laufzeitumgebung
L f it
b
für
fü A
Anwendungen
d
di
dientt und
d
dabei über Middleware-Funktionen hinausgehende Fähigkeiten bietet
Transparenz der Datenquellen
Objekt-Relationales Mapping
Transaktionsverwaltung
Lebenszyklusmanagement („Deployment“, Updates, Start)
Verwaltung zur Laufzeit (Monitoring, Kalibrierung, Logging, ...)
Beispiel-Systeme
p
y
((kommerziell))
IBM WebSphere
Oracle WebLogic
Beispiel-Systeme
B i i lS t
(open
(
source))
JBoss
Sun Glassfish
Apache Tomcat
© 2000-2009 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
Seite 5-60
ROOTS
Schichten-ArchitekturClient/Server
Abbildung von Schichten auf Rechner im Netzwerk
Server
S
bi
bieten
t Di
Dienste
t fü
für Cli
Clients
t
Clients ruft Operation eines Dienstes auf; die wird ausgeführt und gibt
ein Ergebnis zurück
Client kennt das Interface des Servers (seinen Dienst)
Server braucht das Interface des Client nicht zu kennen
Nutzer interagieren nur mit dem Client
Server
Client
*
*
requester
© 2000-2009 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
provider
service1()
…
service2()
...
serviceN()
i N()
Seite 5-62
ROOTS
Schichten-ArchitekturClient/Server
Oft bei Datenbanksystemen genutzt
Front-End:
F tE d N
Nutzeranwendung
t
d
(Cli
(Client)
t)
Back-End: Datenbankzugriff und Datenmanipulation (Server)
Vom
V
Cli
Clientt ausgeführte
füh t F
Funktionen
kti
Maßgeschneiderte Benutzerschnittstelle
Front-end-Verarbeitung
g der Daten
Aufruf serverseitiger RPCs (Remote Procedure Call)
Zugang zum Datenbankserver über das Netzwerk
Vom Datenbankserver ausgeführte Funktionen
Zentrales Datenmanagement
Datenintegrität
D t i t ität und
dD
Datenbankkonsistenz
t b kk
i t
Datenbanksicherheit
Nebenläufige
g Operationen
p
((multiple
p user access))
Zentrale Verarbeitung (zum Beispiel Archivierung)
© 2000-2009 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
Seite 5-63
ROOTS
Entwurfsziele für Client/Server Systeme
Portabilität
Server
S
k
kann
auff vielen
i l unterschiedlichen
t
hi dli h M
Maschinen
hi
und
dB
Betriebssystemen
ti b
t
installiert werden und funktioniert in vielen Netzwerkumgebungen
Transparenz
Der Server könnte selbst verteilt sein (warum?), sollte dem Nutzer aber
einen einzigen “logischen” Dienst bieten
Performance
Client sollte für interaktive, UI-lastig Aufgaben maßgefertigt sein
Server sollte CPU-intensive Operationen bieten
Skalierbarkeit
Server hat genug Kapazität, um eine größere Anzahl Clients zu bedienen
Flexibilität
Server sollte für viele Front-Ends nutzbar sein
g
Zuverlässigkeit
System sollte individuelle Knoten-/Verbindungsprobleme überleben
© 2000-2009 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
Seite 5-64
ROOTS
Probleme mit Client/Server Architekturen
Geschichtete Systeme unterstützen keine gleichberechtigte
gegenseitige ((„Peer-to-peer
Peer to peer“)) Kommunikation
„Peer
„Peer-to-peer“
to peer Kommunikation wird oft benötigt
Beispiel: Eine Datenbank empfängt Abfragen von einer Anwendung,
schickt aber auch Benachrichtigungen an die Anwendung wenn der
Datenbestand sich geändert hat
hat.
© 2000-2009 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
Seite 5-65
ROOTS
Schichten-ArchitekturVon der einfachen
Client/Server- zur N
Client/Server
N-Tier-Architektur
Tier Architektur
Entwurfsentscheidungen verteilter Client-Server-Anwendung
Wie
Wi werden
d di
die A
Aufgaben
f b d
der A
Anwendung
d
auff Komponenten
K
t verteilt?
t ilt?
Typische Aufgabenteilung
Präsentation – Schnittstelle zum Anwender
Anwendungslogik – Bearbeitung der Anfragen
Datenhaltung – Speicherung der Daten in einer Datenbank
Wie viele Prozessräume gibt es?
Tier N
Eine Stufe / Schicht (engl. ‚tier‘) kennzeichnet einen
Prozessraum innerhalb einer verteilten Anwendung
Das N legt fest, wie viele Prozessräume es gibt
Ein Prozessraum kann, muss jedoch nicht(!),
physikalischen
y
Rechner entsprechen
p
einem p
…
Tier 2
Wie werden die Komponenten auf Prozessräume verteilt?
Die Art der Zuordnung der Aufgaben zu den
Tier 1
tiers macht den Unterschied der verschiedenen
n-tier Architekturen aus
© 2000-2009 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
Seite 5-66
ROOTS
2-Tier Architektur
Ältestes Verteilungsmodell: Client- und Server-Tier
Zuordnung von Aufgaben zu Tiers
Präsentation Client
Anwendungslogik Beliebig
Datenhaltung Server
Vorteile
Einfach und schnell umzusetzen
Performant
Probleme
Schwer wartbar
Schwer skalierbar
Software-Update Problem
© 2000-2009 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
Seite 5-67
ROOTS
2-Tier ArchitekturVarianten
Ultra-Thin-Client Architekturen (a):
Die Client
Client-Tier
Tier beschränkt sich auf Anzeige von Dialogen in einem Browser
Browser.
Thin-Client Architekturen (a,b):
Die Client-Tier beschränkt sich auf Anzeige von Dialogen und die Aufbereitung
d D
der
Daten
t zur A
Anzeige.
i
Fat-Client Architekturen (c,d,e):
Teile der Anwendungslogik liegen zusammen mit der Präsentation auf der
Cli
Client-Tier.
Ti
Client machine
User interface
User interface
User interface
User interface
User interface
Application
Application
Application
Database
User interface
Application
Application
Application
Database
Database
Database
Database
Database
(b)
S
Server
machine
hi
(c)
(d)
(e)
(a)
© 2000-2009 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
Seite 5-68
ROOTS
3–Tier Architekturen
Zuordnung von Aufgaben zu 3 Tiers
Präsentation
Pä
t ti Client-Tier
Cli t Ti
3-Tier-Architektur
Client-Tier
Pä
Präsentation
t ti
Middle-Tier
Middle
Tier
Anwendungslogik
Server-Tier
Datenhaltung
Anwendungslogik Middle-Tier
Datenhaltung
g Server-Tier
Standardverteilungsmodell
St d d t il
d ll fü
für einfache
i f h W
Webanwendungen
b
d
Client-Tier = Browser zur Anzeige
Middle-Tier = Webserver mit Servlets / ASP / Anwendung
g
Server-Tier = Datenbankserver
© 2000-2009 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
Seite 5-69
ROOTS
3–Tier ArchitekturenBeispiel
Webanwendungen
Standardverteilungsmodell für einfache Webanwendungen:
User-interface
level
User interface
HTML page
containing list
Keyword expression
HTML
generator
Query
generator
Database queries
Ranked list
of page titles
Ranking
component
Web page titles
with meta-information
© 2000-2009 Dr. G. Kniesel
Processing
level
Vorlesung „Softwaretechnologie“
Seite 5-70
Data level
ROOTS
3–Tier ArchitekturenApplicationsServer (EJB)
© 2000-2009 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
Seite 5-71
ROOTS
4- und Mehr-Tier Architekturen
Unterschied zu 3-Schichten-Architekturen
Die
Di A
Anwendungslogik
d
l ik wird
i d auff mehrere
h
S
Schichten
hi ht verteilt
t ilt (W
(Webserver,
b
Application Server)
Motivation
Minimierung
Minimier ng der Komple
Komplexität
ität ((„Divide
Di ide and Conquer“)
Conq er“)
Besserer Schutz einzelner Anwendungsteile
g für die meisten Applikationen
pp
im E-Bereich
Grundlage
E-Business, E-Commerce, E-Government
© 2000-2009 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
Seite 5-72
ROOTS
4-Tier-Architektur eines
Informationssystems
Client
Tier
Web
Tier
Enterprise IS
Tier
Application
Tier
Legacy
Anwendungen
Application Server
Personalization
Process
Engine
Security
W b
Web
Web
Server
Transactions
Web Service
Interfaces
(WSDL, SOAP)
Enterprise
D t
Data
E-Business
Komponenten
p
Directory
Encryption
Backend
Interface
© 2000-2009 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
Seite 5-73
ROOTS
N-Tier-ArchitekturAbwägungen
Box = Komponente des Systems
Client-Tier
Pfeil = Komm
Kommunikationsverbindung
nikations erbind ng
Mehr Boxen
mehr Verteilung + Parallelität
mehr Kapselung + Wiederverwendung
Mehr Boxen
mehr Pfeile
Verbindungen zu verwalten
mehr Koordination + Komplexität
Mehr Boxen
mehr Vermittlung
mehr Datentransformationen
schlechte Performanz
Entwickler einer Architektur versuchen
deswegen immer ein Kompromiss zu finden
© 2000-2009 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
Server-Tier
Es gibt kein Designproblem, das man
durch Einführung einer zusätzlichen
g
Vermittlungsschicht
nicht lösen kann.
Es gibt kein Performanzproblem, das
man durch Entfernung einer zusätzlichen
Vermittlungsschicht nicht lösen kann
kann.
Seite 5-74
ROOTS
Peer-to-Peer Architektur
Generalisierung der Client/Server Architektur
Clients
Cli t können
kö
Server
S
sein
i und
d umgekehrt
k ht
Schwieriger wegen möglicher Deadlocks
Peer
requester
*
service1()
service2()
…
serviceN()
i N()
application1:DBUser
*
provider
1. updateData
database:DBMS
application2:DBUser
2 changeNotification
2.
h
ifi
i
© 2000-2009 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
Seite 5-75
ROOTS
Pipe-and-Filter-Architecture
ausgabe
1
*
eingabe
L it
Leitung
(Pipe)
(Pi )
Filt
Filter
*
ausgabe
eingabe
1
Filter-Subsysteme
Filt S b
t
b b it D
bearbeiten
Daten
t
Es sind reine Funktionen
Sie sind konzeptionell
p
und implementierungstechnisch
p
g
unabhängig
g g von
den Pipes die die Daten zu ihnen bzw. von ihnen Weg leiten
den Erzeugern und Verbrauchern der Daten
Leitungs-Subsysteme leiten Daten weiter
Sie sammeln Daten von einem oder mehreren Filtern
Sie leiten Daten an einen oder mehrere Filter weiter
Sie dienen der Synchronisation paralleler Filteraktivitäten
Sie sind von allen anderen Subsystemen völlig unabhängig (genau wie die
Filter)
© 2000-2009 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
Seite 5-76
ROOTS
Pipe-and-Filter-Architektur: Ausschnitt
aus möglicher Systemkonfiguration
Das Gesamtsystem entsteht einfach durch die Verknüpfung von Pipe-
und Filter-Subsystemen
Filter Subsystemen
…
:Filter
…
:Filter
:Filter
:Pipe
:Filter
:Pipe
:Filter
:Pipe
:Filter
…
:Filter
…
:Filter
…
Vorteile
Flexibilität: leichter Austausch von Filtern, Leichte Rekonfiguration der
Verbindungen über Pipes
Effizienz: Hoher Grad an Parallelität (alle Filter können Parallel arbeiten!)
Gut geeignet für automatisierte Transformationen auf Datenströmen
Beispiel: Sattelitendatenbearbeitung
Pipe-and-Filter-Architektur: Ausschnitt
aus möglicher Systemkonfiguration
Das Gesamtsystem entsteht einfach durch die Verknüpfung von Pipe-
und Filter-Subsystemen
Filter Subsystemen
…
:Filter
…
:Filter
:Filter
:Pipe
:Filter
:Pipe
:Filter
:Pipe
:Filter
…
:Filter
…
:Filter
…
Weniger geeignet für
Hochinteraktive Aufgaben
Benutzerinteraktion macht die potentielle Parallelität zunichte
Aufgaben, wo die Daten sich nicht bzw. nur wenig ändern, da sich dann
der Aufwand die Daten ständig zu kopieren nicht lohnt
In diesem Fall ist eine Repository-Architektur
p
y
vorteilhafter
Repository Architektur
Subsysteme lesen und schreiben Daten einer einzigen, gemeinsamen
Datenstruktur
Subsysteme sind lose gekoppelt (Interaktion nur über das Repository)
Kontrollfluss wird entweder zentral vom Repository diktiert (Trigger)
oder von den Subsystemen bestimmt (locks, synchronization
primitives)
Repository
Subsystem
createData()
setData()
getData()
searchData()
© 2000-2009 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
Seite 5-79
ROOTS
Repository Architektur: Beispiel „Eclipse“
Compiler
SemanticAnalyzer
SyntacticAnalyzer
LexicalAnalyzer
Optimizer
CodeGenerator
Repository
ParseTree
SymbolTable
SourceLevelDebugger
© 2000-2009 Dr. G. Kniesel
Type Info
Editor
Vorlesung „Softwaretechnologie“
Seite 5-80
ROOTS
Model/View/Controller
Subsysteme werden in drei verschiedene Typen unterteilt
Model
M d l Subsystem:
S b
t
Z tä di fü
Zuständig
für d
das Wi
Wissen d
der A
Anwendungsdomäne
d
d ä und
d
Benachrichtigung der Views bei Änderungen im Model.
View Subsystem: Stellt die Objekte der Anwendungsdomäne für den
Nutzer dar
Controller Subsystem: Verantwortlich für die Abfolge der Interaktionen mit
dem Nutzer.
MVC ist eine Verallgemeinerung der Repository Architektur:
Das Model Subsystem implementiert die zentrale Datenstruktur
Das
D C
Controller
t ll S
Subsystem
b
t
schreibt
h ibt explizit
li it d
den K
Kontrollfluss
t llfl
vor
initiator
Controller
*
1
p
y
repository
Model
View
© 2000-2009 Dr. G. Kniesel
subscriber
1
notifier
*
Vorlesung „Softwaretechnologie“
Seite 5-81
ROOTS
Beispiel einer auf der MVC Architektur
basierenden Dateiverwaltung
© 2000-2009 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
Seite 5-82
ROOTS
Abfolge von Events
2. User types new filename
:Controller
:Model
:InfoView
5. Updated views
:FolderView
© 2000-2009 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
Seite 5-83
ROOTS
Zusammenfassung
Systementwurf
Verkleinert
V kl i t di
die Lü
Lücke
k zwischen
i h A
Anforderungen
f d
und
dd
der IImplementierung
l
ti
Zerteilt das Gesamtsystem in handhabbare Stücke
Definition der Entwurfsziele
Beschreibt und priorisiert die für das System wichtigen Qualitäten
Definiert das Wertesystem anhand dessen Optionen überprüft werden
Subsystemdekomposition
Führt zu einer Menge lose gekoppelter Teile, die zusammen das System
bilden
Softwarearchitektur
Beschreibt die Beziehungen / Interaktionen der Subsysteme
© 2000-2009 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
Seite 5-84
ROOTS
Vorlesung „Softwaretechnologie“
Wintersemester
te se este 2009
009
Zielgerichteter Entwurf
( Brügge & Dutoit, Kap. 7)
ROOTS
Überblick
Dekomposition (vorhergehender Abschnitt)
0.
0 Überblick
Üb bli k üb
über d
das S
Systementwurf
t
t
f
1. Entwurfsziele
2. Dekomposition
p
in Subsysteme
y
Zielgerichteter Entwurf
3. Nebenläufigkeit
4. Hardware/Software Zuordnung
5.
5 Management persistenter Daten
6. Globale Ressourcenverwaltung und Zugangskontrolle
7. Programmsteuerung
8. Grenzfälle
© 2000-2009 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
Seite 5-86
ROOTS
3. Nebenläufigkeit
Identifizieren nebenläufiger Ausführungsstränge und Behandeln von
Fragen zur Nebenläufigkeit.
Nebenläufigkeit
Entwurfsziel: Reaktionszeit, Performance.
Threads („Fäden“, „Stränge“)
Ein Thread ist ein Pfad durch eine Menge von Zustanddiagramme, wobei
stets genau ein Objekt zur selben Zeit aktiv ist.
Ein Thread bleibt in einem Zustandsdiagramm bis ein Objekt einen Event
an ein anderes Objekt sendet und auf einen anderen Event wartet
Thread (ab-)spaltung: Ein Objekt sendet ein asynchrones Event
© 2000-2009 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
Seite 5-87
ROOTS
Nebenläufigkeit (Fortsetzung)
Zwei Objekte heißen inhärent nebenläufig, wenn sie zur gleichen Zeit
Events empfangen können ohne zu interagieren
Inhärent nebenläufige Objekte sollten verschiedenen Threads
zugeordnet werden
Objekte
Obj kt mit
it sich
i h wechselseitig
h l iti ausschließenden
hli ß d Akti
Aktivitäten
ität sollten
llt
demselben Thread zugeordnet werden (Warum?)
© 2000-2009 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
Seite 5-88
ROOTS
Fragen zur Nebenläufigkeit
Welche Objekte des Objektmodells sind unabhängig?
Welche Arten von Threads sind identifizierbar?
Bietet das System vielen Nutzern Zugriff?
Kann eine einzelne Anfrage an das System in mehrere Teilanfragen
zerlegt werden?
Können diese Teilanfragen parallel abgearbeitet werden?
© 2000-2009 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
Seite 5-89
ROOTS
4. Hardware/Software Zuordnung
Diese Aktivität befasst sich mit zwei Fragen:
Wie sollen wir jjedes einzelne Subsystem
y
realisieren
In Hardware oder in Software?
Welche Hard- / Software ist schon verfügbar?
Komponenten von Drittanbietern die man nutzen kann
Altlasten die man integrieren muss
Wie wird das Objektmodell auf die gewählte Hard- und Software
abgebildet?
b bild t?
Objekte in die Realität abbilden auf Prozessor, Speicher, Input/Output
Assoziationen in die Realität abbilden auf Bus-/Netzwerktopologie
Ein Großteil der Schwierigkeiten beim Entwurf eines Systems ist die
Folge von außen auferlegter Einschränkungen bzgl
bzgl. Hard
Hard- und
Software.
„Aufgabe X muss von Hard- /Software Y gelöst werden.“
„Wir haben gerade erst X Millionen für System Y ausgegeben…“
© 2000-2009 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
Seite 5-90
ROOTS
Zuordnung von Objekten
Prozessor
Ist
I t die
di geforderte
f d t Berechnungsgeschwindigkeit
B
h
h i di k it zu h
hoch
h fü
für einen
i
einzelnen
i
l
Prozessor?
Bringt die Verteilung der Aufgaben auf verschiedene Prozessoren einen
Geschwindigkeitsgewinn?
Wie viele Prozessoren sind für den dauerhaft stabilen Betrieb unter
Dauerlast notwendig?
Speicher
Ist genug Speicher vorhanden, um Belastungsspitzen abzufangen?
I/O:
I/O
Ist zusätzliche Hardware erforderlich, um die anfallenden Datenmengen zu
bewältigen?
Reicht die Kommunikationsbandbreite zwischen den Subsystemen oder
angeschlossener Hardware, um die gewünschte Reaktionszeit zu
garantieren?
g
© 2000-2009 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
Seite 5-91
ROOTS
Zuordnung der Assoziationen:
Kommunikationstopologie
Beschreibe die physikalische Topologie der Hardware
Entspricht
E t i ht oft
ft der
d physikalischen
h ik li h S
Schicht
hi ht iin ISO’
ISO’s OSI Referenzmodell
R f
d ll
Welche Assoziationen werden auf physikalische Verbindungen abgebildet?
Welche <<benutzt>>-Beziehungen aus dem Analyse-/Entwurfsmodell
korrespondieren mit physikalischen Verbindungen?
Beschreibe die logische Topologie (Assoziationen zwischen den
Subsystemen)
Identifiziere Assoziationen, die nicht direkt auf physikalische Verbindungen
abzubilden sind:
Wie sollen diese Assoziationen implementiert werden?
© 2000-2009 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
Seite 5-92
ROOTS
Netzwerktopologie bei verteilten
Systemen
Wenn die Architektur verteilt ist, müssen wir auch die
Netzwerkarchitektur beschreiben (Kommunikationssubsystem)
(Kommunikationssubsystem).
Zu stellende Fragen
Was ist das Übertragungsmedium?
g g
((Ethernet,, Wireless))
Welche “Quality of Service” (QOS) ist vorhanden/erforderlich? Welche Art
von Kommunikationsprotokollen können genutzt werden?
Sollen Interaktion asynchron
asynchron, synchron oder sperrend sein?
Welche Anforderungen gibt es an die Bandbreite zwischen den
Subsystemen?
Stock
St k Price
P i Change
Ch
-> Broker
B k
Icy Road Detector -> ABS System
© 2000-2009 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
Seite 5-93
ROOTS
Typisches Beispiel für physikalische
Topologie
Application
Client
Application
Client
Application
Client
TCP/IP
Ethernet
LAN
Communication
Agent for
Application Clients
Communication
Agent for
Application
pp
Clients
Backbone Network
TCP/IP
Global
Data
Server
Communication
Agent for Data
Server
LAN
OODBMS
Global
Data
Server
Communication
Agent for Data
Server
RDBMS
LAN
Local Data
Server
Global Data
Server
Fragen zu Hardware/Software Zuordnung
Ist bestimmte Funktionalität schon in Hardware verfügbar?
Müssen
Mü
Aufgaben
A f b auff bestimmter
b ti
t Hardware
H d
ausgeführt
füh t werden,
d
um
andere Hardware zu steuern oder nebenläufige Operationen zu
erlauben?
Das ist für Embedded Systems oft der Fall.
Welche Hard-/ Softwaresysteme existieren
... und
d kö
können oder
d müssen
ü
genutzt
t t werden
d
Welche Vernetzungstopologie besteht zwischen den physikalischen
Einheiten?
Baum, Stern, Matrix, Ring
Was ist das passende Kommunikationsprotokoll zwischen den
Subsystemen?
Abhängig von Bandbreite, Latenz und gewünschter Sicherheit
Generelle Frage
g zur Systemperformance:
y
p
Was ist die gewünschte Reaktionszeit?
© 2000-2009 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
Seite 5-95
ROOTS
Vorlesung „ Softwaretechnologie“
Kapitel
ap te 55: Syste
Systementwurf
e t u
ROOTS
Timing-Diagramme für
Realzeitanforderungen
3a. Realzeitanforderungen
Realzeitanforderungen bezeichnen Anforderungen an Software in
einer bestimmten Zeitspanne zu reagieren oder etwas zu einem
bestimmten Zeitpunkt zu tun
Meistens geht es um sehr kurze Zeitspannen (Sekunden und alles
darunter)
Typischerweise bei "Eingebetteten Systemen" (Mischung aus Hard-
und Software)
Im Fahrzeug- und Maschinenbau, Telekommunikation, Anlagen, …
Dilemma
Software ist flexibler (leichter austauschbar und wartbar) und
kostengünstiger
Aussagen über die absolute Zeit
Zeit, die ein bestimmter Aufruf dauert sind
aber sehr schwer zu treffen
Problem "Dynamisches Binden": Was wird denn nun aufgerufen?
Problem "Garbage
Garbage Collection
Collection":: Wann unterbricht sie evtl
evtl. einen Aufruf?
…
© 2000-2009 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
Seite 5-97
ROOTS
Zeitverlaufsdiagramm (Timing Diagram)
Modelliert zeitabhängige Zustandsübergänge der Interaktionspartner
Auslöser
A lö
iistt ffester
t Zeitpunkt
Z it
kt oder
d Nachrichtenaustausch
N h i ht
t
h
Nützlich bei Interkationen mit zeitkritischem Verhalten
(
(Realzeitanforderungen)
g )
Stellt exemplarischen Ablauf da (keine Kontrollstrukturen o.ä.)
ti i name
timing
Rolle:Typ
at(t=14.00)
Z1
Z2
Z3
Zustandswechsel
zu festem Zeitpunkt
m2
m4
Zustände
Rolle:Typ
m1
Zustandswechsel durch
Nachrichtenempfang
p g
m3
Z1
Z2
Z3
Zeitachse
Objekt-Typ
Obj
kt T und
d
-Rolle
01234
17 s
Zeiteinheit
Zeitdiagramm„Telefongespräch“
timing Telefongesprächsaufbau
talking
lifting
receiver
ringing
idle
t=now
exchange
{t..t+10}
active
idle
t lki
talking
ringing
caller
g
connecting
dialing
lifting
idle
{0 .. 2}
01234
21 s
Sequenz- versus Zeitverlaufsdiagramm
Sequenzdiaramm
q
mit Zeit
Timing
g Diagramm
g
Keine Darstellung des
Keine Kontrollstrukturen
Zusammenhangs von
N h i ht und
Nachrichten
d
Zustandsübergängen
Gleiche Zeitinformationen
darstellbar (Zeitpunkt, relativer
und absoluter Zeitraum)
sd P
timing
gP
:A
:B
m1
{0..3s}
t=now
:A
X
Y
Z
:B
U
V
W
m2 {0..1 s}
m3
{t..t+5s}
0 1 2 3 4 5 6 7 8 9
© 2000-2009 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
Seite 5-100
s
ROOTS
Vorlesung „ Softwaretechnologie“
Kapitel
ap te 55: Syste
Systementwurf
e t u
Verteilungsdiagramme
(Deployment Diagrams)
ROOTS
Verteilungsdiagramm (Einsatzdiagramm
/ Deployment Diagram)
Zeigt
Ausführungsknoten
A füh
k t (Rechner
(R h
und
dL
Laufzeitumgebungen),
f it
b
)
Kommunikationsbeziehungen zwischen Ausführungsknoten,
Manifestation ((=Realisierung)
g) von Komponenten
p
durch Artefakte,
Einsatz von Artefakten auf Ausführungsknoten,
Konfiguration des Einsatzes,
sonstige
ti Beziehungen
B i h
(Abhängigkeits-Pfeile
(Abhä i k it Pf il zeigen
i
von d
der abhängigen
bhä i
Komponente weg)
Nutzen: Spezifikation der
Hardware/Software Zuordnung
Subsystemdekomposition
S bs stemdekomposition
Verteilung im Netzwerk
Einsatz zur Laufzeit
© 2000-2009 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
Seite 5-102
ROOTS
Verteilungsdiagramm Knoten
Komponente
Logische Einheit mit expliziten Abhängigkeiten
Wie im Komponentendiagramm definiert
Artefakt
Physische Einheit, z.B. Modell, Beschreibung,
Quellcode, ausführbarer Code
Realisierung einer Komponente
Laufzeitumgebung („execution environment“)
Softwaresystem in dem Artefakte zum Einsatz
kommen
Z.B. Java Virtual Machine, Applikationsserver, …
Gerät („device“)
Physikalisches Gerät auf dem Artefakte zum
Einsatz kommen (Rechner)
© 2000-2009 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
<<component>>
CALENDAR
<<artifact>>
Calendar.java
<<execution environment>>
:Browser
<<device>>
calendarClient:PC
Seite 5-103
ROOTS
Verteilungsdiagramm Kanten
<<component>>
CALENDAR
Manifestation (<<manifest>>)
Komponente ist durch Artefakt realisiert
<<manifest>>
<<artifact>>
Einsatzbeziehung (<<deploy>>)
Artefakt wird auf Ausführungsumgebung
oder Gerät eingesetzt
Calendar.java
<<deploy>>
<<execution environment>>
:Browser
Kommunikationsbeziehung
Physische Verbindung über die
Ausführungsumgebungen kommunizieren
Art kann als Stereotyp angegeben werden,
z.B. <<internet>>, <<ethernet>>, …
© 2000-2009 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
<<internet>>
<<device>>
<<device>>
calClient:
calServer:
Seite 5-104
ROOTS
Verteilungsdiagramm Beispiel
<<device>>
<<internet>>
<<ethernet>>
<<device>>
calServer:Host
calClient:PC
<<execution
Environment>>
<<device>>
dbServer
<<execution
Environment>>
:Browser
:J2EE Server
<<artifact>>
jdbc.jar
<<deploy>>
<<deploy>>
<<artifact>>
<<artifact>>
<<deployment spec>>
CALENDAR.class
calServerProgram.jar
calServerProgram.xml
maxUsers : 50
transactionMode : nested
<<manifest>>
<<component>>
CALENDAR
C
© 2000-2009 Dr. G. Kniesel
CS 1
CS 2
Vorlesung „Softwaretechnologie“
CS 3
Seite 5-105
ROOTS
Verteilungsdiagramm Beispiel
Textuelle Erläuterung
<<device>>
<<internet>>
<<ethernet>>
<<device>>
calServer:Host
calClient:PC
<<execution
Environment>>
<<device>>
dbServer
<<execution
Environment>>
:Browser
:J2EE Server
<<artifact>>
jdbc.jar
<<deploy>>
<<deploy>>
<<artifact>>
<<artifact>>
<<deployment spec>>
CALENDAR.class
calServerProgram.jar
calServerProgram.xml
maxUsers : 50
transactionMode : nested
<<manifest>>
<<component>>
CALENDAR
C
© 2000-2009 Dr. G. Kniesel
CS 1
CS 2
Vorlesung „Softwaretechnologie“
CS 3
Seite 5-106
ROOTS
Visual Paradigm Tips I
Dies sind die für „Deployment Diagrams“ spezifischen Elemente,
die auf den vorherigen Folien erklärt wurden.
© 2000-2009 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
Seite 5-107
ROOTS
Visual Paradigm Tips II
Generell ist es wichtig zwischen Namen und Stereotyp einer Beziehung
zu unterscheiden
unterscheiden. Der Stereotyp gibt die Art einer Beziehung an
an. Der
Name ist lediglich ein Bezeichner.
Das gilt auch für Kommunikationsbeziehungen! Also schreiben Sie bitte
nicht z.B. „ethernet“ in den Namen, sondern machen Sie es wie hier:
So sollte es richtig sein
© 2000-2009 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
Seite 5-108
ROOTS
Vorlesung „Softwaretechnologie“
Wintersemester
te se este 2009
009
ROOTS
Datenmanagement
Datenmanagement
Einige Objekte in den Modellen müssen persistent sein
Trenne
T
sauber
b zwischen
i h den
d Subsystemen,
S b
t
die
di Persistenz-Dienste
P i t
Di
t
anbieten und denen, die sie nutzen.
Definiere klare Schnittstellen.
Ein nicht persistentes Objekt kann durch Datenstrukturen realisiert
werden
Ein persistentes Objekt kann folgendermaßen realisiert werden
Dateien
Billig, einfach, permanente Speicherung
Low level (Lese-/Schreiboperationen)
Der Anwendung muss gegebenenfalls Code hinzugefügt werden, um eine
angemessene Abstraktion zu realisieren
Datenbank
Mächtig, leicht zu portieren
Unterstützt mehrere Schreiber und Leser
© 2000-2009 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
Seite 5-110
ROOTS
Datei oder Datenbank?
Wann sollte man eine Datei benutzen?
Sind
Si d die
di Daten
D t groß
ß (bitmaps)?
(bit
)?
Hat man viele “raw” Daten (core dump, event trace)?
Muß man die Daten nur kurzzeitig
g speichern?
p
Ist die Informationsdichte niedrig (Archivdateien, Logdateien)?
Wann sollte man eine Datenbank wählen?
Müssen die Daten in verschiedenen Detailstufen
f von vielen Nutzern
benutzbar sein?
Müssen die Daten auf verschiedenen Plattformen zur Verfügung stehen
(Heterogene Systeme)?
Benutzen viele verschiedene Anwendungen die Daten?
Benötigt das Datenmanagement eine komplexe Infrastruktur?
© 2000-2009 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
Seite 5-111
ROOTS
Was muss bei Benutzung einer
Datenbank beachtet werden?
Speicherplatz
Die
Di Datenbank
D t b k benötigt
b öti t in
i etwa
t
di dreifache
die
d if h Größe
G öß der
d Daten
D t
Antwortzeit
Datenbanken sind I/O oder kommunikationsabhängig (verteilte
Datenbanken). Die Antwortzeit wird auch von der CPU Zeit, Locks und
Verzögerungen durch häufige Bildschirmausgaben beeinflußt.
Lock Arten
Pessimistisches locking: Lock wird vor dem Zugriff auf ein Objekt gesetzt
und erst wieder aufgehoben wenn der Zugriff beendet wurde.
Optimistisches locking: Häufiger Lese- / Schreibzugriff (hohe Parallelität!)
Wenn die Aktivität beendet wurde, prüft die Datenbank ob Konflikte
bestehen; wenn ja werden alle Änderungen verworfen.
Administration
Große Datenbanken benötigen ausgebildete Support Mitarbeiter, um
Sicherheits Policies, Datenträgerplatz und Backups zu verwalten, die
Sicherheits-Policies,
Leistung zu überachen und Einstellungen anzupassen.
© 2000-2009 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
Seite 5-112
ROOTS
Fragen zum Datenmanagement
Sollte die Datenbank verteilt sein?
Sollte
S llt di
die D
Datenbank
t b k erweiterbar
it b sein?
i ?
Wie oft wird auf die Datenbank zugegriffen?
Was ist die erwartete Anfragefrequenz? Im schlimmsten Fall (worst
case)?
Was ist die Größe einer typischen Anfrage und einer im worst case?
Müssen die Daten archiviert werden?
Zielt der Systementwurf darauf ab, den Ort der Datenbanken zu
verstecken (Ortstransparenz)?
Wird ein explizites Interface zum Zugriff auf die Daten benötigt?
Was ist das Anfrageformat?
Sollte die Datenbank relational oder objektorientiert sein?
© 2000-2009 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
Seite 5-113
ROOTS
Abbildung eines Objektmodells auf eine
relationale Datenbank
UML Objektmodelle können auf relationale Datenbanken abgebildet
werden:
Etwas Verlust entsteht, weil alle UML-Konstrukte auf ein einziges
relationales Datenbankkonstrukt abgebildet werden – die Tabelle.
UML Zuordnungen
Jede Klasse wird auf eine Tabelle abgebildet
Jedes Attribut einer Klasse wird auf eine Spalte abgebildet
Eine Instanz einer Klasse repräsentiert eine Zeile in der Tabelle
Eine n-zu-m Beziehung wird in eine eigene Tabelle abgebildet
Eine 1-zu-n Beziehung wird als verborgener Fremdschlüssel implementiert
Methoden werden nicht abgebildet
© 2000-2009 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
Seite 5-114
ROOTS
Von Objektmodellen zu Tabellen I
N-zu-M Assoziation: Eigene Tabelle für die Assoziation
serves
City
cityName
City Table
*
Airport
*
Separate
Tabelle
airportCode
p
airportName
Serves Table
Airport Table
cityName
cityName
airportCode
airportCode
airportName
Houston
Houston
IAH
IAH
Intercontinental
Albany
Houston
HOU
HOU
Hobby
Munich
Albany
ALB
ALB
Albany County
Hamburg
Munich
MUC
MUC
Munich Airport
Hamburg
HAM
HAM
Hamburg Airport
Fremdschlüssel
Fremdschlüssel
Primärschlüssel
Vorlesung „Softwaretechnologie“
Seite 5-115
Primärschlüssel
© 2000-2009 Dr. G. Kniesel
ROOTS
Von Objektmodellen zu Tabellen II
1-zu-n oder n-zu-1 Assoziationen: Verdeckte Fremdschlüssel
Transaction
*
Portfolio
transactionID
Foreign Key
Portfolio Table
Transaction Table
t
transactionID
ti ID
© 2000-2009 Dr. G. Kniesel
portfolioID
...
portfolioID
tf li ID
Vorlesung „Softwaretechnologie“
portfolioID
Seite 5-116
....
ROOTS
Von Objektmodellen zu Tabellen
Werkzeuge
Applikationsserver und ähnliche Werkzeuge erledigen die Abbildung
eines Objektmodells auf ein relationales Schema ((„object
object relational
mapping“) automatisch
Gängige Systeme / Frameworks
Java Data Objects (JDO) – Teil der Java Enterprise APis
Hybernate
H b
t – Teil
T il d
des A
Applikationsservers
lik ti
JB
JBoss
... Google „object relational mapping“ ...
© 2000-2009 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
Seite 5-117
ROOTS
Vorlesung „Softwaretechnologie“
Wintersemester
te se este 2009
009
Globale Ressourcenverwaltung
ROOTS
Globale Ressourcenverwaltung
Resourcenverwaltung befasst sich mit Zugriffskontrolle
Sie
Si beschreibt
b
h ibt di
die Z
Zugriffsrechte
iff
ht fü
für verschiedene
hi d
Akt
Akteure
Sie beschreibt, wie Objekte sich vor unberechtigtem Zugriff schützen
Zugriffskontrollmatrix
Zeilen = Akteure
Spalten = Objekte
Inhalt der Felder = zulässige Operationen
Objekttyp1
Actor A Op1.1, Op1.2
Op1 2
Op1.2
Actor B
--Actor C
Objekttyp 2 Objekttyp 3
---
Op3.1
Op2 2 Op2
Op2.2,
Op2.3
3
Op3 2
Op3.2
Op2.1
Op3.3
sp Actor
cto C da
darf Ope
Operation
at o Op
Op2.1 au
auf Objekten
Obje te des Typs
yps Obje
Objekttyp2
ttyp aus
ausführen.
ü e
Bsp:
© 2000-2009 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
Seite 5-119
ROOTS
Globale Ressourcenverwaltung:
Realisierung der Zugriffskontrollmatrix
Spaltenweise Aufteilung = Jedes Objekt weiss wer, was damit tun darf
Access
A
C t l Lists
Control
Li t (Beispiel:
(B i i l „Unix“)
U i “)
Zeilenweise Aufteilung
g = Jeder Actor besitzt ein „„Ticket“ das besagt,
g,
welche Operationen er ausführen darf
Capabilities (Beispiel: „Amoeba“)
Synonyme: „Capability
Capability “ / „Ticket
Ticket“ / „Ausweis
Ausweis“// „Schlüssel
Schlüssel“
Objekttyp1
Actor A Op1.1, Op1.2
Op1 2
Op1.2
Actor B
--Actor C
Objekttyp 2 Objekttyp 3
---
Op3.1
Op2 2 Op2
Op2.2,
Op2.3
3
Op3 2
Op3.2
Op2.1
Op3.3
sp Actor
cto C da
darf Ope
Operation
at o Op
Op2.1 au
auf Objekten
Obje te des Typs
yps Obje
Objekttyp2
ttyp aus
ausführen.
ü e
Bsp:
© 2000-2009 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
Seite 5-120
ROOTS
Fragen zu globalen Ressourcen
Benötigt das System eine Authentifizierung?
Wenn ja, welches Authentifizierungsschema?
Nutzername und Passwort? Zugriffskontrollliste (ACL)
Tickets?
Ti k ? Capability-based
C
bili b
d
Welche Benutzerschnittstelle für die Authentifizierung?
Wann und wie wird ein Dienst dem Rest des Systems bekannt
gemacht?
Zur
Z Laufzeit?
L f it?
Beim Kompilieren?
Über einen TCP-IP-Port?
Durch einen Namen?
Benötigt
g das System
y
einen netzweiten „„Name Server“?
© 2000-2009 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
Seite 5-121
ROOTS
Vorlesung „Softwaretechnologie“
Wintersemester
te se este 2009
009
ROOTS
Bestimmung des Kontrollparadigmas
(Programmsteuerung)
Bestimmung des Kontrollparadigmas
(Programmsteuerung)
A. Wähle implizite Kontrolle (deklarative Sprachen)
Regelbasierte Systeme
Logische Programmierung
B. Oder explizite Kontrolle (prozedurale Sprachen)
Zentrale Kontrolle
1. Prozedurgesteuerte Kontrolle
– Kontrolle befindet sich im Programmcode.
g
Beispiel:
p
Hauptprogramm
pp g
ruft
Prozeduren in Subsystemen auf.
– Einfach, leicht zu bauen
2. Eventgesteuerte Kontrolle
– Kontrolle sitzt in einem Dispatcher, der Funktionen von Subsystemen
durch Rückfragen aufruft.
– Flexibel, gut für Benutzerschnittstellen
Dezentrale Kontrolle
Kontrolle befindet sich in verschiedenen unabhängigen Objekten (von manchen
Sprachen unterstützt).
Geschwindigkeitsgewinn durch Parallelität versus mehr Kommunikation
Kommunikation.
Beispiel: Nachrichten-basiertes System
© 2000-2009 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
Seite 5-123
ROOTS
Prozedurgesteuerte vs. eventgesteuerte
Kontrolle
Procedure-Driven Control
Event-Based Control, centralized
op1()
module1
Model has changed
module2
:Model
:Coordinator
op3()
Update
op2()
Update
:View
module3
E
Event
t based,
b
d decentralized
d
t li d
It‘s time to change
:Control
:Model
Model has changed
:View
:View
:View
:View
Update
:View
Zentrale vs. dezentrale Kontrolle
Welches von beiden soll man benutzen?
Zentrale
Z t l Kontrolle
K t ll
Ein Kontrollobjekt oder Subsystem kontrolliert alles (“Spinne im Netz”)
Änderungen in der Kontrollstruktur sehr einfach durchzuführen
Möglicher Flaschenhals für die Performance
Mögliche Vermischung verschiedener Kontrollaufgaben („tangling“)
Dezentrale Kontrolle
Kontrolle ist verteilt
Streut die Verantwortung
Passt gut in die objektorientierte Entwicklung
Übersicht geht eventuell verloren
Koordination schwierig
© 2000-2009 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
Seite 5-125
ROOTS
Vorlesung „Softwaretechnologie“
Wintersemester
te se este 2009
009
ROOTS
Grenzfälle
Grenzfälle
Die meiste Zeit beschäftigt man sich beim Systementwurf mit dem
Verhalten im Betriebszustand.
Betriebszustand
Abschliessend muss man sich aber auch mit Grenzfällen befassen.
Initialisierung
Beschreibt, wie das System aus einem nicht initialisierten Zustand in einen
Betriebszustand gebracht wird ("startup
( startup use cases
cases”)).
Terminierung
Beschreibt, welche Ressourcen vor der Beendigung aufgeräumt werden und
welche Systeme benachrichtigt werden (“Terminierungs
( Terminierungs-Use
Use Cases")
Cases ).
Fehler
Viele mögliche Gründe: Programmierfehler, externe Probleme
(St
(Stromversorgung).
)
Guter Systementwurf sieht fatale Fehler voraus (“Fehler-Use Cases”).
© 2000-2009 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
Seite 5-127
ROOTS
Fragen zu den Grenzfällen
Initialisierung
Wie
Wi startet
t t t das
d System?
S t ?
Auf welche Daten muss beim Hochfahren zugegriffen werden?
Welche Dienste müssen registriert werden?
Was tut die Benutzerschnittstelle beim Startvorgang?
Wie präsentiert sie sich dem Nutzer?
Terminierung
Dürfen einzelne Subsystemen terminieren?
Werden andere Subsysteme benachrichtigt, wenn ein einzelnes terminiert?
Wie werden lokale Updates der Datenbank mitgeteilt?
Fehler
Wie verhält sich das System
System, wenn ein Knoten oder eine
Kommunikationsverbindung ausfällt? Gibt es dafür Backupverbindungen?
Wie stellt sich das System nach einem Fehler wieder her? Unterscheidet
dieser Vorgang sich von
on der Initialisier
Initialisierung?
ng?
© 2000-2009 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
Seite 5-128
ROOTS
RückblickZielgerichteter Systementwurf
Aktivitäten
Identifikation
Id tifik ti von N
Nebenläufigkeit
b lä fi k it
Hardware/Software Zuordnung
Management persistenter Daten
Globale Ressourcenverwaltung
Wahl des Programmsteuerung
g
g
Grenzfälle
Nutzen
Jede Aktivität überprüft die gewählte Architektur in Hinsicht auf eine
bestimmte Frage
Frage.
Nach Beendigung dieser Aktivitäten können die Schnittstellen der
Subsysteme abschließend definiert werden.
Start frei für den Objektentwurf der Subsysteme!
© 2000-2009 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
Seite 5-129
ROOTS
RückblickSystementwurf (Gesamt)
Systementwurf
1 Entwurfsziele
1.
8. Grenz8
fälle
Definition
Abwägungen
Initialisierung
Fehler
Ende
2. System
Dekomposition
7. Programmsteuerung
Ebenen / Partitionen
Kohärenz / Kopplung
Monolithisch
Ereignisbasiert
Threads
Parallele Prozesse
3. Hardware / Software
Zuordnung
Kaufen vs. Selbermachen
Netzwerktopologie
Allokation
6. Globale
Ressourcenverwaltung
Zugriffskontrolle
g
Sicherheit
4. Pesistente
5. Nebenläufigkeit
Identifizierung von
Datenverwaltung
Dateien
Datenbanken
Datenstrukturen
© 2000-2009 Dr. G. Kniesel
Vorlesung „Softwaretechnologie“
Thread
Seite 5-130
ROOTS