Upload
caecilia-altenhofen
View
213
Download
0
Embed Size (px)
Citation preview
Design Pattern SS 15
Prof. Albert Zündorf
Fachgebiet für Software EngineeringWilhelmshöher Allee 73
34121 Kassel(Raum 1339)
Design Pattern SS2015 © 2015 Albert Zündorf, University of Kassel 2
Organisatorisches
Umfang: 4 SWS teils Vorlesungen teils Übungen Übungsbetreuung: Marcel Hahn, … Ort und Zeit:
Vorlesung: Dienstags 16:00 - 19:00 Raum 1332(Erste Vorlesung:
14.04.15)Übung:? In obigem Zeitraum
Prüfung: Pflichtübungsaufgaben (korrigiert, bepunktet)
Folienskript / Screen Videos: http://www.se.eecs.uni-kassel.de.
Design Pattern SS2015 © 2015 Albert Zündorf, University of Kassel 3
Literatur
Elementar: Norbisrath, Zündorf, Jubeh: Story Driven Modeling,
Amazon 2014, ISBN 9781483949253 (Das Buch überhaupt ) Grundlegend: E. Gamma, R. Helm, R. Johnson, J. Vlissides: Design Patterns
(Elements of Reusable Object-Oriented Software); Addison Wesley, Bonn, ISBN 0-201-63361-2 (1994)
Patterns Home Page: st-www.cs.uiuc.edu/users/patterns/patterns.html
Unified Modeling Language: Martin Hitz, Gerti Kappel: UML @ Work, dpunkt.verlag (ziemlich gut)
Hintergrund: Frederick P.\ Brooks: The Mythical Man Month, Addison Wesley 1975
(ist nur kurz aber ziemlich witzig, unbedingt mal lesen)
Design Pattern SS2015 © 2015 Albert Zündorf, University of Kassel 4
Gliederung
1. Einführung 2. Design Grundprinzipien
3. Grundlegende Pattern
4. Weitere Pattern
5. Zusammenfassung
Design Pattern SS2015 © 2015 Albert Zündorf, University of Kassel 5
1. Einführung
Ziele der Veranstaltung: Design Know How für große Programme > 100 000 LOC Grundprinzipien der Wartbarkeit und Erweiterbarkeit sicherer Umgang mit Vererbung und Delegation Grundkenntnis der wichtigsten Design Pattern
Design Pattern SS2015 © 2015 Albert Zündorf, University of Kassel 6
Beispiel Composite Pattern
Realisierung hierarchischer Datenstrukturen kommt in praktisch allen Software-Anwendungen vor naiver Ansatz verursacht dramatische Wartungsprobleme Gute Lösung ist Ausgangspunkt für viele weitere Pattern
Design Pattern SS2015 © 2015 Albert Zündorf, University of Kassel 7
Gliederung
1. Einführung
2. Design Grundprinzipien3. Grundlegende Pattern
4. Weitere Pattern
5. Zusammenfassung
Design Pattern SS2015 © 2015 Albert Zündorf, University of Kassel 8
2. Design Grundprinzipien
Wartbarkeit Erweiterbarkeit ein Ort eine Design Entscheidung / eine Funktionalität lokale Änderungen
nur lokale Auswirkungen lokaler Änderung (Module/Klassen, Interfaces, Sichtbarkeiten)
"wenig" Vererbung
Design Pattern SS2015 © 2015 Albert Zündorf, University of Kassel 9
Vererbung
Substitutionsprinzip:Kinder müssen halten was die Eltern versprechen
anstelle eines Elternklassenobjektes kann man auch immer ein Unterklassenobjekt verwenden
EnterpriseEmployee
work (t : Task) : Product
Manager
work (t : Task) : Productmanage ( proj : Project ) : Presentation
has
Project
Task
Presentation
Product
createddoes
Design Pattern SS2015 © 2015 Albert Zündorf, University of Kassel 10
BeispielsituationenEnterpriseEmployee
work (t : Task) : Product
Managerwork (t : Task) : Productmanage ( proj : Project ) : Presentation
has
Project
Task
Presentation
Product
createddoes
…prod = e.work (t);…
Struktur
Verhalten Daten :Employee
:Employee
:Manager
:Task
:Product
:Presentation :Project
:Task
Design Pattern SS2015 © 2015 Albert Zündorf, University of Kassel 11
BeispielsituationenEnterpriseEmployee
work (t : Task) : Product
Managerwork (t : Task) : Productmanage ( proj : Project ) : Presentation
has
Project
Task
Presentation
Product
createddoes
…prod = e.work (t);…
Struktur
Verhalten Daten :Employee
:Employee
:Manager
:Task
:Product
:Presentation :Project
:Task
Design Pattern SS2015 © 2015 Albert Zündorf, University of Kassel 12
BeispielsituationenEnterpriseEmployee
work (t : Task) : Product
Managerwork (t : Task) : Productmanage ( proj : Project ) : Presentation
has
Project
Task
Presentation
Product
createddoes
…prod = e.work (t);…
Struktur
Verhalten Daten :Employee
:Employee
:Manager
:Task
:Product
:Presentation :Project
:Task
Design Pattern SS2015 © 2015 Albert Zündorf, University of Kassel 13
BeispielsituationenEnterpriseEmployee
work (t : Task) : Product
Managerwork (t : Task) : Productmanage ( proj : Project ) : Presentation
has
Project
Task
Presentation
Product
createddoes
…prod = e.work (t);…
Struktur
Verhalten Daten :Employee
:Employee
:Manager
:Task
:Product
:Presentation :Project
:Task
Design Pattern SS2015 © 2015 Albert Zündorf, University of Kassel 14
Co- und Contravariante Redefinitionen:
wegen Substituierbarkeit: input Parameter (Lesen) in Unterklassen
nur verallgemeinern(Contravariante Redefinition)
output Parametern (Schreiben in Unterklassen) nur spezialisieren(Covariante Redefinition)
Design Pattern SS2015 © 2015 Albert Zündorf, University of Kassel 15
Delegation:
House
run ()alarm ()
FlashLightalarm()
Sirenealarm()
MailAlarmalarm()
alarmDevice
Struktur
Verhalten Daten
…this.alarm();… :House
:FlashLight
:Sirene
:MailAlarm
AlarmDevicealarm ()
Design Pattern SS2015 © 2015 Albert Zündorf, University of Kassel 16
Hausaufgabe 1:deliveryBoy
Struktur
Verhalten Daten…myCourier.deliver(p1, "WilliAllee73");… :CourierService
:CarBoy
:BikeBoy
:RollerBoy
DeliveryBoydeliver(pack, addr)
BikeBoy
deliver(pack, addr)
RollerBoy
deliver(pack, addr)deliver(pack, addr)
CarBoy
CourierService
deliver(package, address)
Design Pattern SS2015 © 2015 Albert Zündorf, University of Kassel 17
Hausaufgabe 1:
Implementiert obiges Klassendiagramm zur Delegation(z.B. mit SDMLib)
Implementiert die deliver(pack, addr) Methoden der DeliveryBoy–Unterklassen
macht jeweils unterschiedliche System.out Ausgaben Schreibt ein Testprogramm dass:
ein CourierService Objekt und ein Paket Kaffebohnen erzeugt,
nacheinander verschiedene DeliveryBoy Objekte einbaut
jeweils deliver(coffeeBeans, "WilliAlle73") aufruft
Design Pattern SS2015 © 2015 Albert Zündorf, University of Kassel 18
Abgabe:
Bis Eclipse Projekt "DPH01<matrnr>" Eclipse Projekte inklusive Quellcode JUnit Test start mit einem Click
Vererbungskonzepte
Design Pattern SS2015 © 2015 Albert Zündorf, University of Kassel 19
Design Pattern SS2015 © 2015 Albert Zündorf, University of Kassel 20
Design Pattern SS2015 © 2015 Albert Zündorf, University of Kassel 21
Design Pattern SS2015 © 2015 Albert Zündorf, University of Kassel 22
Gliederung
1. Einführung
2. Design Grundprinzipien
3. Grundlegende Pattern4. Weitere Pattern
5. Zusammenfassung
Design Pattern SS2015 © 2015 Albert Zündorf, University of Kassel 23
1. Referenzarchitektur interaktive System
Repository
Data Model
GUI(Commands)
Generators / Interpreters
QVT(Control)
Import/ Export
GUI(Unparsing)
Design Pattern SS2015 © 2015 Albert Zündorf, University of Kassel 24
Datenmodell mit Composite Pattern: naiv
Struktur
Verhalten Daten
Design Pattern SS2015 © 2015 Albert Zündorf, University of Kassel
Datenmodell mit Composite Pattern: besser
Struktur
Verhalten Daten
Design Pattern SS2015 © 2015 Albert Zündorf, University of Kassel 26
Datenmodell mit Composite Pattern: gut
Struktur
Verhalten Daten
Design Pattern SS2015 © 2015 Albert Zündorf, University of Kassel 27
Hausaufgabe 2:
Ein Book besteht aus: Parts Chapters Sections Paragraphs Sentences
Implementiert ein Datenmodell für Books mit dem Composite Pattern
Lest die Kapitelstruktur des Buches ein. zählt die Anzahl der Objekte in euerer Composite Struktur macht euch für weitere Anforderungen bereit
Design Pattern SS2015 © 2015 Albert Zündorf, University of Kassel 28
Composite Pattern Problem:
Struktur
Verhalten Daten
Design Pattern SS2015 © 2015 Albert Zündorf, University of Kassel 29
Naiver Ansatz:
Struktur
Verhalten Daten
Design Pattern SS2015 © 2015 Albert Zündorf, University of Kassel 30
Visitor Pattern
rekursiver Durchlauf durch Composite Struktur durchreichen eines Visitor Objekts uniformerer Umgang mit Rekursionsparametern Trennung von Durchlauf und Aktion
Design Pattern SS2015 © 2015 Albert Zündorf, University of Kassel 31
Visitor Pattern
Struktur
Verhalten Daten
Design Pattern SS2015 © 2015 Albert Zündorf, University of Kassel 32
Visitor Pattern mit Reflection
Struktur
Verhalten Daten
Design Pattern SS2015 © 2015 Albert Zündorf, University of Kassel 33
Visitor Pattern Zusammenfassung
Ziemlich viele accept und visit Methoden
Double Dispatch möglich
Seperation of concern
Zustandsobjekt in der Rekursion
Design Pattern SS2015 © 2015 Albert Zündorf, University of Kassel 34
Hausaufgabe 3:
Design Pattern SS2015 © 2015 Albert Zündorf, University of Kassel 35
Strategy Pattern
ersetze if-then-else-if Ketten
Design Pattern SS2015 © 2015 Albert Zündorf, University of Kassel 36
If-then-else-if Kette:
Struktur
Verhalten Datenpublic void doMove () {
if (mode == AGGRESSIVE){ …}else if (mode == DEFEND){ …}else if (mode == PLAN){ …}…
Player
main ()doMove()
mode : int
Design Pattern SS2015 © 2015 Albert Zündorf, University of Kassel 37
AStarStratdoMove()
Strategy Pattern:
Playermain()doMove ()
MoveStrategydoMove()
DefensiveStratdoMove()
strategy 0..1
Struktur
Verhalten Daten
class Player{
public void doMove (){
strategy.doMove ();}
…
:Player :AttackStrat
:DefensiveStrat
:AStarStrat
AttackStratdoMove()
Design Pattern SS2015 © 2015 Albert Zündorf, University of Kassel 38
Strategy Pattern
Struktur
Verhalten Daten
Design Pattern SS2015 © 2015 Albert Zündorf, University of Kassel 39
Hook Pattern (nicht im Gof-Buch)
zusätzliches Verhalten nachträglich einbauen
Design Pattern SS2015 © 2015 Albert Zündorf, University of Kassel 40
Hook Pattern:
Struktur
Verhalten Daten
public void doMove(){
produceFood();
for (strat in strategies){
strat.doMove();}
}
n
ResearchStratdoMove()
Playermain()doMove ()
StrategyPartdoMove()
DefensiveStratdoMove()
strategies
:Player :AttackStrat
:DefensiveStrat
: ResearchStrat
AttackStratdoMove()
Design Pattern SS2015 © 2015 Albert Zündorf, University of Kassel 41
Chain of Responsibility
im wesentlichen Hook aber Abbruch wenn erfolgreich bearbeitet
Design Pattern SS2015 © 2015 Albert Zündorf, University of Kassel 42
< next
Chain of Responsibility, original
Struktur
Verhalten Daten
class Player{public boolean doMove () {
if (next != null){
return next.doMove();}return false;
}}
1
ResearchStratdoMove()
Playermain()doMove ()
StrategyPartdoMove()
DefensiveStratdoMove()
next
:Player :AttackStrat
:DefensiveStrat
: ResearchStrat
AttackStratdoMove()
Design Pattern SS2015 © 2015 Albert Zündorf, University of Kassel 43
Chain of Responsibility, original :
Struktur
Verhalten Datenclass AttackStrat{
public boolean doMove () {// try itif (canAttack ()) {
doAttack ();return true;
}else {
super.ring ();} } }
1
ResearchStratdoMove()
Playermain()doMove ()
StrategyPartdoMove()
DefensiveStratdoMove()
next
:Player :AttackStrat
:DefensiveStrat
: ResearchStrat
AttackStratdoMove()
next
Design Pattern SS2015 © 2015 Albert Zündorf, University of Kassel 44
Chain of Responsibility, besser debugbar:
Struktur
Verhalten Datenclass Player{
public boolean doMove () {boolean success = false;for (h in handlers) {
success = h.doMove();if (success)
return true;}return false;
} }
{ordered}
handlers[1]
handlers[2]
handlers[3]
n
ResearchStratdoMove()
Playermain()doMove ()
StrategyPartdoMove()
DefensiveStratdoMove()
handlers
:Player :AttackStrat
:DefensiveStrat
: ResearchStrat
AttackStratdoMove()
Design Pattern SS2015 © 2015 Albert Zündorf, University of Kassel 45
Chain of Responsibility, besser debugbar:
Struktur
Verhalten Datenclass AttackStrat {
public boolean doMove() {// try itif (canAttack ()) {
doAttack ();return true;
}else {
return false;} } }
{ordered}
handlers[1]
handlers[2]
handlers[3]
n
ResearchStratdoMove()
Playermain()doMove ()
StrategyPartdoMove()
DefensiveStratdoMove()
handlers
:Player :AttackStrat
:DefensiveStrat
: ResearchStrat
AttackStratdoMove()
Design Pattern SS2015 © 2015 Albert Zündorf, University of Kassel 46
Design Pattern SS2015 © 2015 Albert Zündorf, University of Kassel 47
Beobachtungen
typische Kombinationen von Assoc und Vererbung Unterklassen haben KEINE neue Methoden Unterklassen redefinieren geerbte Methoden
Design Pattern SS2015 © 2015 Albert Zündorf, University of Kassel 48
Beobachtungen
Design Pattern SS2015 © 2015 Albert Zündorf, University of Kassel 49
Hausaufgabe 4:
Design Pattern SS2015 © 2015 Albert Zündorf, University of Kassel 50
State
im wesentlichen Strategy aber systematische Strategy-Änderung nach Benutzung meist Implementierung von Statecharts
Design Pattern SS2015 © 2015 Albert Zündorf, University of Kassel 51
State:
Struktur
Verhalten Daten
TraficLightstate :Integer
timerTick()
Car
class TrafficLigth {void timerTick() {
if (state == RED) {car.setPos (…);state = GREEN;
}else if (state == GREEN) {
car.stop();state == YELLOW; }
else if (state == YELLOW)car.stop()state = RED;
} } }
green
yellow
redtimerTick() / car.setPos(…)
timerTick() / car.stop()
timerTick() / car.stop() car
Design Pattern SS2015 © 2015 Albert Zündorf, University of Kassel 52
State:
Struktur
Verhalten Daten
TLState
Green
Yellow
Red
currentTraficLight
timerTick()
Car
:TrafficLight
:Car
:Red
:Yellow
:Green
namestates
states["red"]
states["yellow"]
states["green"]
class Red {void timerTick() {
owner.current = owner.states["green"];car.setPos(…);
} }
class Green {void timerTick() {
owner.current = owner.states["yellow"];car.stop();
} }
car
car
Design Pattern SS2015 © 2015 Albert Zündorf, University of Kassel 53
Listener/Observer/Model-View-Controler/Mediator
im wesentlichen Hook aber Einsatz zur Überwachung von Änderungen
Design Pattern SS2015 © 2015 Albert Zündorf, University of Kassel 54
Listener/Observer/Model-View-Controler
Struktur
Verhalten Daten
Drive
usedSpace :Integer
propertyChange (obj, attrName, oldVal, newVal)
Filesize :Integer
write(bytes[])
:DriveusedSpace = 38
write ("aaaa")
class File {void write (bytes[]) {
…this.setSize (size+bytes.length());
}
void setSize (newVal) {if (this.size != newVal) {
int oldVal = size;size = newVal;firePropertyChange ("size", oldVal, newVal);
} }…
:Filesize = 23
:Filesize = 15
listenersnListener
propertyChange (obj, attrName, oldVal, newVal)
Design Pattern SS2015 © 2015 Albert Zündorf, University of Kassel 55
Listener/Observer/Model-View-Controler
Struktur
Verhalten Daten
Drive
usedSpace :Integer
propertyChange (obj, attrName, oldVal, newVal)
Filesize :Integer
write(bytes[])
:DriveusedSpace = 38
write ("aaaa")
class File {…void firePropertyChange (attrName, oldVal, newVal){
for (l in listeners){
l.propertyChange (this,attrName,oldVal,newVal); } }…
:Filesize = 23
:Filesize = 15
listenersnListener
propertyChange (obj, attrName, oldVal, newVal)
Design Pattern SS2015 © 2015 Albert Zündorf, University of Kassel 56
Listener/Observer/Model-View-Controler
Struktur
Verhalten Daten
Drive
usedSpace :Integer
propertyChange (obj, attrName, oldVal, newVal)
Filesize :Integer
write(bytes[])
:DriveusedSpace = 38
write ("aaaa"):Filesize = 23
:Filesize = 15
listenersnListener
propertyChange (obj, attrName, oldVal, newVal)
class Drive {…void propertyChange (obj,attrName,oldVal,newVal){
usedSpace += newVal – oldVal;}
…
}
Design Pattern SS2015 © 2015 Albert Zündorf, University of Kassel 57
MVC
Struktur
Verhalten Daten
DriveusedSpace :Integer
:DriveusedSpace = 38
write ("aaaa")
class SpaceUpdater {…void propertyChange (obj,attrName,oldVal,newVal){
for (t : targets) {t.usedSpace += newVal – oldVal;
}
}
…
}
:Filesize = 23
:Filesize = 15
targetsn
:SpaceUpdater
SpaceUpdater
propertyChange (obj, attrName, oldVal, newVal)
Filesize :Integer
write(bytes[])
listenersnListener
propertyChange (obj, attrName, oldVal, newVal)
Computer
Design Pattern SS2015 © 2015 Albert Zündorf, University of Kassel 58
Struktur
Verhalten Daten:Drive
usedSpace = 38
write ("aaaa")
class SpaceUpdater {…void propertyChange (obj,attrName,oldVal,newVal) {
Dir parent = obj.getParent();
while (parent != null) {
parent.usedSpace += newVal – oldVal;
parent = parent.getParent();}
}
…
}
:Filesize = 23
:Filesize = 15
:SpaceUpdater
SpaceUpdater
propertyChange (obj, attrName, oldVal, newVal)
Filesize :Integer
write(bytes[])
listenersnListener
propertyChange (obj, attrName, oldVal, newVal)
Computer
DirusedSpace :Integer
filesparentn
1
Drive
:DirusedSpace = 38
:DirusedSpace = 38
:ComputerusedSpace = 38
Design Pattern SS2015 © 2015 Albert Zündorf, University of Kassel 59
Struktur
Verhalten Daten
Design Pattern SS2015 © 2015 Albert Zündorf, University of Kassel 60
Hausaufgabe 5?:
Design Pattern SS2015 © 2015 Albert Zündorf, University of Kassel 61
Design Pattern SS2015 © 2015 Albert Zündorf, University of Kassel 62
Template Method
Motivation ähnlich wie Hook aber feste Vorgabe von abstrakten Template-Methoden alle Template-Methoden müssen überschrieben werden
Design Pattern SS2015 © 2015 Albert Zündorf, University of Kassel 63
Template Method: Alarm
+ ring ()~ start ()~ stop ()
Struktur
Verhalten Daten
class Alarm {void ring () {
start ();…stop ();…
} }
:FlashLight
:Sirene
:MailAlarm
MailAlarmring ()
Sirenering ()
FlashLight~ start ()~ stop ()
~ start ()~ stop ()
~ start ()~ stop ()
Design Pattern SS2015 © 2015 Albert Zündorf, University of Kassel 64
Template Method: Alarm
+ ring ()~ start ()~ stop ()
Struktur
Verhalten Daten
class FlashLigth {void start () {
powerOn ();}
void stop () {powerOff ()
} }
:FlashLight
:Sirene
:MailAlarm
MailAlarmring ()
Sirenering ()
FlashLight~ start ()~ stop ()
~ start ()~ stop ()
~ start ()~ stop ()
Design Pattern SS2015 © 2015 Albert Zündorf, University of Kassel 65
Decorator
ähnlich wie Composite mit nur einem Kind ähnlich wie Chain-of-Responsibility erweitere eine Strategy um zusätzliche Aktionen
Design Pattern SS2015 © 2015 Albert Zündorf, University of Kassel 66
Decorator:
Struktur
Verhalten Daten
class MailAlarm {ring () {
sendMail();orig.ring();
} }
:House
:Sirene
:MailAlarm
MailAlarmring ()
Houserun ()ring ()
Alarmring ()
Sirenering ()
alarm 0..1
FlashLightring ()
0..1 orig
Design Pattern SS2015 © 2015 Albert Zündorf, University of Kassel 67
Proxy
ähnlich wie Decorator aber kein Zusatzeffekt sondern remote, lazy oder cache Effekte
Design Pattern SS2015 © 2015 Albert Zündorf, University of Kassel 68
Proxy:
Struktur
Verhalten Daten :House
:Sirene
:MailAlarm
Design Pattern SS2015 © 2015 Albert Zündorf, University of Kassel 69
Adapter
ähnlich wie Decorator aber Schnittstellenanpassung
Design Pattern SS2015 © 2015 Albert Zündorf, University of Kassel 70
Adapter:
Struktur
Verhalten Daten
:House
:Sirene
:MailAlarm
Design Pattern SS2015 © 2015 Albert Zündorf, University of Kassel 71
Hausaufgabe:
Design Pattern SS2015 © 2015 Albert Zündorf, University of Kassel 72
Design Pattern SS2015 © 2015 Albert Zündorf, University of Kassel
Flyweight
Struktur
Verhalten Daten
Design Pattern SS2015 © 2015 Albert Zündorf, University of Kassel 74
Flyweight
Struktur
Verhalten Daten
Design Pattern SS2015 © 2015 Albert Zündorf, University of Kassel 75
Struktur
Verhalten Daten
Interpreter / Macro / Command
Design Pattern SS2015 © 2015 Albert Zündorf, University of Kassel 76
Command
Struktur
Verhalten Daten
Design Pattern SS2015 © 2015 Albert Zündorf, University of Kassel 77
Struktur
Verhalten Daten
Design Pattern SS2015 © 2015 Albert Zündorf, University of Kassel 78
Hausaufgabe: Command
Design Pattern SS2015 © 2015 Albert Zündorf, University of Kassel 79
Design Pattern SS2015 © 2015 Albert Zündorf, University of Kassel 80
Design Pattern SS2015 © 2015 Albert Zündorf, University of Kassel 81
Factory Method:
Struktur
Verhalten Daten
Design Pattern SS2015 © 2015 Albert Zündorf, University of Kassel 82
Prototype:
Struktur
Verhalten Daten
Design Pattern SS2015 © 2015 Albert Zündorf, University of Kassel 83
Komplexer Prototyp
Design Pattern SS2015 © 2015 Albert Zündorf, University of Kassel 84
Abstract Factory:
Struktur
Verhalten Daten
Design Pattern SS2015 © 2015 Albert Zündorf, University of Kassel 85
Hausaufgabe:
Design Pattern SS2015 © 2015 Albert Zündorf, University of Kassel 86
Design Pattern SS2015 © 2015 Albert Zündorf, University of Kassel 87
Facade:
Struktur
Verhalten Daten
Design Pattern SS2015 © 2015 Albert Zündorf, University of Kassel 88
Facade:
Struktur
Verhalten Daten
Design Pattern SS2015 © 2015 Albert Zündorf, University of Kassel 89
Design Pattern SS2015 © 2015 Albert Zündorf, University of Kassel 90
Plugins:
Struktur
Verhalten Daten
Design Pattern SS2015 © 2015 Albert Zündorf, University of Kassel 91
Import Umkehrung:
Struktur
Verhalten Daten
Design Pattern SS2015 © 2015 Albert Zündorf, University of Kassel 92
Import Umkehrung:
Struktur
Verhalten Daten
Design Pattern SS2015 © 2015 Albert Zündorf, University of Kassel 93
Daten Plugin:
Struktur
Verhalten Daten
Design Pattern SS2015 © 2015 Albert Zündorf, University of Kassel 94
Design Pattern SS2015 © 2015 Albert Zündorf, University of Kassel 95
Design Pattern SS2015 © 2015 Albert Zündorf, University of Kassel 96
Reuse Architekturen:
Bibliotheken Frameworks Plugin Architekturen Software Bus / ECMA Toaster Corba / RMI / REST Component & Connector Android Intents Product Line Architecture
Design Pattern SS2015 © 2015 Albert Zündorf, University of Kassel 97
Design Pattern SS2015 © 2015 Albert Zündorf, University of Kassel 98
Components & Connectors Architekturen
Design Pattern SS2015 © 2015 Albert Zündorf, University of Kassel 99
Design Pattern SS2015 © 2015 Albert Zündorf, University of Kassel 100
Design Pattern SS2015 © 2015 Albert Zündorf, University of Kassel 101
Components & Connectors Architekturen
Design Pattern SS2015 © 2015 Albert Zündorf, University of Kassel 102
Components & Connectors Architekturen
Design Pattern SS2015 © 2015 Albert Zündorf, University of Kassel 103
Components & Connectors Architekturen
Design Pattern SS2015 © 2015 Albert Zündorf, University of Kassel 104
Wie erreicht man:
Wartbarkeit Erweiterbarkeit Qualität Produktivität Sicherheit Robustheit Usability Skalierbarkeit Verfügbarkeit
Design Pattern SS2015 © 2015 Albert Zündorf, University of Kassel 105