architektur und entwurfsmuster - w3l · pdf filesie legen die struktur von ... (factory method...
TRANSCRIPT
![Page 1: Architektur und Entwurfsmuster - W3L · PDF fileSie legen die Struktur von ... (factory method pattern) •Adapterklasse •Interpreter ... (Cross Cutting Concerns) Proxy-Muster](https://reader034.vdocuments.mx/reader034/viewer/2022050902/5a78e66e7f8b9a68148c26e1/html5/thumbnails/1.jpg)
1
Architektur und Entwurfsmuster
Definition, Abgrenzung und ausgewählte Beispiele
W3L AG [email protected]
2012
![Page 2: Architektur und Entwurfsmuster - W3L · PDF fileSie legen die Struktur von ... (factory method pattern) •Adapterklasse •Interpreter ... (Cross Cutting Concerns) Proxy-Muster](https://reader034.vdocuments.mx/reader034/viewer/2022050902/5a78e66e7f8b9a68148c26e1/html5/thumbnails/2.jpg)
2
Copyright W3L GmbH
Zur Historie
Entwurf-durch-RoutineWiederverwendung bewährter Lösungen
Entwurf-durch-InnovationErarbeitung neuer Lösungen
Erste AnsätzeGang of Four (GoF) 1995: Design Patterns: Elements of Reusable Object-Oriented SoftwareErfahrungen aus GUI-Bereich; Sprachen C++ und Smalltalk
23 Entwurfsmuster
![Page 3: Architektur und Entwurfsmuster - W3L · PDF fileSie legen die Struktur von ... (factory method pattern) •Adapterklasse •Interpreter ... (Cross Cutting Concerns) Proxy-Muster](https://reader034.vdocuments.mx/reader034/viewer/2022050902/5a78e66e7f8b9a68148c26e1/html5/thumbnails/3.jpg)
3
Copyright W3L GmbH
Architektur- vs. Entwurfsmuster
Heute Unterscheidung zwischen Architektur- und Entwurfsmustern
Architekturmuster„Architekturmuster (architecture pattern) beschreiben Systemstrukturen, die die Gesamtarchitektur eines Systems festlegen. Sie spezifizieren, wie Subsysteme zusammenarbeiten“Auch: Basisarchitekturen, Architekturstil
Entwurfsmuster„Entwurfsmuster (design patterns) geben bewährte generische Lösungen für häufig wiederkehrende Entwurfsprobleme an, die in bestimmten Situationen auftreten. Sie legen die Struktur von Subsystemen fest.“Auch: Mikroarchitektur
![Page 4: Architektur und Entwurfsmuster - W3L · PDF fileSie legen die Struktur von ... (factory method pattern) •Adapterklasse •Interpreter ... (Cross Cutting Concerns) Proxy-Muster](https://reader034.vdocuments.mx/reader034/viewer/2022050902/5a78e66e7f8b9a68148c26e1/html5/thumbnails/4.jpg)
4
Copyright W3L GmbH
Klassifikation nach Zweck und GeltungsbereichZweck→↓Geltungsbereich
Erzeugendes Muster Strukturelles Muster Verhaltensmuster
Klasse •Fabrikmethoden-Muster (factory method pattern)
•Adapterklasse •Interpreter (interpreter) •Schablonenmethode (template)
Objekt •Abstrakte Fabrik (abstractfactory) •Erbauer (builder) •Prototyp (prototype) •Singleton (singleton)
•Adapter (adapter) •Das Brücken-Muster (bridge pattern)•Kompositum (composite) •Dekorierer (decorator) •Das Fassaden-Muster (facade pattern)•Fliegengewicht (flyweight) •Das Proxy-Muster (proxy pattern)
•Zuständigkeitskette (chainof responsibility) •Das Kommando-Muster (command pattern)•Iterator (iterator) •Vermittler (mediator) •Memento (memento) •Das Beobachter-Muster (observer pattern)•Zustand (state) •Das Strategie-Muster (strategy pattern)•Besucher (visitor)
![Page 5: Architektur und Entwurfsmuster - W3L · PDF fileSie legen die Struktur von ... (factory method pattern) •Adapterklasse •Interpreter ... (Cross Cutting Concerns) Proxy-Muster](https://reader034.vdocuments.mx/reader034/viewer/2022050902/5a78e66e7f8b9a68148c26e1/html5/thumbnails/5.jpg)
5
Copyright W3L GmbH
Klassifikation nach Anwendungs- und Verteilungsarten
Muster für verteilte SystemeStarke, Gernot: Pattern-Oriented Software Architecture Vol. 4: A Pattern Language for Distributed Computing; John Wiley & Sons
über 250 MusterBuschmann, F., Henney, K., Schmidt, D.: Remoting Patterns -Patterns for Enterprise, Realtime and Internet Middleware; John Wiley & Sons
Muster für sicherheitsrelevante SystemeAuthentifizierung, Autorisierung und VertraulichkeitVoelter, M., Kircher, M., Zdun, U.: Security Patterns: Integrating Security and Systems Engineering; John Wiley & SonsSchumacher, Markus, Fernandez-Buglioni, Eduardo, Hybertson, Duane, Buschmann , Frank, Sommerlad, Peter: Core Security Patterns: Best Practices and Strategies for J2EE, Web Services, and Identity Management; Prentice Hall
![Page 6: Architektur und Entwurfsmuster - W3L · PDF fileSie legen die Struktur von ... (factory method pattern) •Adapterklasse •Interpreter ... (Cross Cutting Concerns) Proxy-Muster](https://reader034.vdocuments.mx/reader034/viewer/2022050902/5a78e66e7f8b9a68148c26e1/html5/thumbnails/6.jpg)
6
Copyright W3L GmbH
Klassifikation nach Anwendungs- und Verteilungsarten
Muster für fehlertolerante SystemeSteel, Christopher: Robust Communications Software: Extreme Availability, Reliability, and Scalability for Carrier-Grade Systems; John Wiley & Sons
Muster für eingebettete SystemeNoble, J., Weir , C.: Design Patterns for Distributed Real-Time Embedded Systems; SpringerBuschmann, F., Henney, K., Schmidt, D.: Small Memory Software: Patterns for Systems with Limited Memory; Addison-Wesley
![Page 7: Architektur und Entwurfsmuster - W3L · PDF fileSie legen die Struktur von ... (factory method pattern) •Adapterklasse •Interpreter ... (Cross Cutting Concerns) Proxy-Muster](https://reader034.vdocuments.mx/reader034/viewer/2022050902/5a78e66e7f8b9a68148c26e1/html5/thumbnails/7.jpg)
7
Copyright W3L GmbH
Schichten-Muster (layers pattern) - Beispiele
Beispiel: ISO/OSI-7-Schichtenmodell: Schichten-Architektur mit linearer Ordnung
Schicht 7 Anwendung (Application)
Schicht 6 Darstellung (Presentation)
Schicht 5 Sitzung (Session)
Schicht 4 Transport (Transport)
Schicht 3 Vermittlung (Network)
Schicht 2 Sicherung (Data Link)
Schicht 1 Übertragung (Physical)Ethernet,Token Ring, ...
HTTP, FTP, HTTPS, SMTP ...
IP, IPsec, …
TCP, UDP, …
![Page 9: Architektur und Entwurfsmuster - W3L · PDF fileSie legen die Struktur von ... (factory method pattern) •Adapterklasse •Interpreter ... (Cross Cutting Concerns) Proxy-Muster](https://reader034.vdocuments.mx/reader034/viewer/2022050902/5a78e66e7f8b9a68148c26e1/html5/thumbnails/9.jpg)
9
Copyright W3L GmbH
Architekturmuster: Schichtenmuster
White box, Grey box, Black box
![Page 10: Architektur und Entwurfsmuster - W3L · PDF fileSie legen die Struktur von ... (factory method pattern) •Adapterklasse •Interpreter ... (Cross Cutting Concerns) Proxy-Muster](https://reader034.vdocuments.mx/reader034/viewer/2022050902/5a78e66e7f8b9a68148c26e1/html5/thumbnails/10.jpg)
10
Copyright W3L GmbH
Zusammenhang: Architektur- und Entwurfsmuster
Schichtenarchitektur: Entkoppeln der Schichten durch Entwurfsmuster
Black-box-AnsatzFassaden-Muster
Abhängigkeiten nur „von oben nach unten“Callback, Beobachter-Muster
Entkoppeln von konkreten Funktionen Kommandomuster
Eliminierung von „Tangling“ und „Scattering“ aufgrund von querschneidenden Belangen (Cross Cutting Concerns)
Proxy-Muster
Drei-Schichten-ArchitekturGUI, Fachkonzept- und Datenhaltungsschicht
MVC, Beobachter-Muster, Callback
![Page 11: Architektur und Entwurfsmuster - W3L · PDF fileSie legen die Struktur von ... (factory method pattern) •Adapterklasse •Interpreter ... (Cross Cutting Concerns) Proxy-Muster](https://reader034.vdocuments.mx/reader034/viewer/2022050902/5a78e66e7f8b9a68148c26e1/html5/thumbnails/11.jpg)
11
Copyright W3L GmbH
Entwurfsmuster: Proxy-Muster
Proxy-Muster (proxy pattern)Auch: Stellvertreter-Muster (placeholder pattern, surrogate pattern)
Objekt soll bzw. darf nicht direkt angesprochen werdenSicherheit
Interception, Schutz-ProxyVerteilung
Remote-ProxyPerformanz
Lazy-Loading, virtueller ProxyCache-Proxy
NebenläufigkeitSynchronisations-Proxyz.B. Umsetzung Copy-On-Write
![Page 13: Architektur und Entwurfsmuster - W3L · PDF fileSie legen die Struktur von ... (factory method pattern) •Adapterklasse •Interpreter ... (Cross Cutting Concerns) Proxy-Muster](https://reader034.vdocuments.mx/reader034/viewer/2022050902/5a78e66e7f8b9a68148c26e1/html5/thumbnails/13.jpg)
13
Copyright W3L GmbH
Entwurfsmuster: Proxy-Muster
Beispiel: Sicherheit
class Kunde{
private String name;
public String getName(){
if (!Application.CurrentUser.HasAccess(this,“name“))throw new SecurityException();
return name;}…
}
![Page 14: Architektur und Entwurfsmuster - W3L · PDF fileSie legen die Struktur von ... (factory method pattern) •Adapterklasse •Interpreter ... (Cross Cutting Concerns) Proxy-Muster](https://reader034.vdocuments.mx/reader034/viewer/2022050902/5a78e66e7f8b9a68148c26e1/html5/thumbnails/14.jpg)
14
Copyright W3L GmbH
Entwurfsmuster: Proxy-Muster
Beispiel: Sicherheit
interface IKunde{
public String getName();}
class Kunde implements IKunde{
private String name;
public String getName(){
return name;}…
}
![Page 15: Architektur und Entwurfsmuster - W3L · PDF fileSie legen die Struktur von ... (factory method pattern) •Adapterklasse •Interpreter ... (Cross Cutting Concerns) Proxy-Muster](https://reader034.vdocuments.mx/reader034/viewer/2022050902/5a78e66e7f8b9a68148c26e1/html5/thumbnails/15.jpg)
15
Copyright W3L GmbH
Entwurfsmuster: Proxy-Muster
Beispiel: Sicherheit
class KundeProxy implements IKunde{
private Kunde kunde;
public String getName(){
if (!Application.CurrentUser.HasAccess(this,“name“))throw new SecurityException();
return kunde.getName();}…
}
![Page 16: Architektur und Entwurfsmuster - W3L · PDF fileSie legen die Struktur von ... (factory method pattern) •Adapterklasse •Interpreter ... (Cross Cutting Concerns) Proxy-Muster](https://reader034.vdocuments.mx/reader034/viewer/2022050902/5a78e66e7f8b9a68148c26e1/html5/thumbnails/16.jpg)
16
Copyright W3L GmbH
Entwurfsmuster: Proxy-Muster
Beispiel: Transparenter Remote-Zugriff, Java RMI
![Page 17: Architektur und Entwurfsmuster - W3L · PDF fileSie legen die Struktur von ... (factory method pattern) •Adapterklasse •Interpreter ... (Cross Cutting Concerns) Proxy-Muster](https://reader034.vdocuments.mx/reader034/viewer/2022050902/5a78e66e7f8b9a68148c26e1/html5/thumbnails/17.jpg)
17
Copyright W3L GmbH
Entwurfsmuster: Proxy-Muster
Beispiel: Transparenter Remote-Zugriff, Java RMI
![Page 18: Architektur und Entwurfsmuster - W3L · PDF fileSie legen die Struktur von ... (factory method pattern) •Adapterklasse •Interpreter ... (Cross Cutting Concerns) Proxy-Muster](https://reader034.vdocuments.mx/reader034/viewer/2022050902/5a78e66e7f8b9a68148c26e1/html5/thumbnails/18.jpg)
18
Copyright W3L GmbH
Entwurfsmuster: Proxy-Muster
Proxy wird häufig generiert z.B. auf Basis von DeklarationenBeispiele
RMI: rmic -v1.2 HelloWorldImplAnnotations (Java); Attribute (.Net)Externe Konfigurationsdateien (z.B. Hibernate XML-Datei(en))
class Kunde implements IKunde{
private String name;
@Security(UserAccessLevel = true)public getName(){
return name;}…
}
![Page 19: Architektur und Entwurfsmuster - W3L · PDF fileSie legen die Struktur von ... (factory method pattern) •Adapterklasse •Interpreter ... (Cross Cutting Concerns) Proxy-Muster](https://reader034.vdocuments.mx/reader034/viewer/2022050902/5a78e66e7f8b9a68148c26e1/html5/thumbnails/19.jpg)
19
Copyright W3L GmbH
Kommando-Muster (command pattern)
Kommando-Muster (command pattern) Ojektbasiertes Verhaltensmuster (behavioral pattern) Auch: Befehls-, Aktions- oder Transaktions-Muster
Grundidee Entkopplung Sender (Auslöser, invoker) vom Empfänger (receiver)Sender ruft Methode auf Empfänger reagiert auf Kommando/Methodenaufruf Ein Kommando ist ein Objekt
z.B. Implementierung von (undo) und (redo) möglich
![Page 20: Architektur und Entwurfsmuster - W3L · PDF fileSie legen die Struktur von ... (factory method pattern) •Adapterklasse •Interpreter ... (Cross Cutting Concerns) Proxy-Muster](https://reader034.vdocuments.mx/reader034/viewer/2022050902/5a78e66e7f8b9a68148c26e1/html5/thumbnails/20.jpg)
20
Copyright W3L GmbH
Kommando-Muster (command pattern)
Weitere Anwendungsbeispiele Aufrufe sollen asynchron ausgeführt werden (z.B. Speicherung von Kommandos in Warteschlange) Ausgeführte Kommandos sollen protokolliert werden (Logbuch) Registrierung eines Kommandos bei unterschiedlichen Stellen (z.B. Menü, Button) Ermöglichung einer Makro-Aufzeichnung
![Page 21: Architektur und Entwurfsmuster - W3L · PDF fileSie legen die Struktur von ... (factory method pattern) •Adapterklasse •Interpreter ... (Cross Cutting Concerns) Proxy-Muster](https://reader034.vdocuments.mx/reader034/viewer/2022050902/5a78e66e7f8b9a68148c26e1/html5/thumbnails/21.jpg)
21
Copyright W3L GmbH
Kommando-Muster (command pattern)
Beispiel
//Receiverpublic class MyInteger{
private int value;
public MyInteger(int v){ value = v; }
public void plus(int s){ value = value + s; }public void minus(int s){ value = value - s; }public int getValue(){ return value; }public int setValue(int v){ value = v; }
}
![Page 22: Architektur und Entwurfsmuster - W3L · PDF fileSie legen die Struktur von ... (factory method pattern) •Adapterklasse •Interpreter ... (Cross Cutting Concerns) Proxy-Muster](https://reader034.vdocuments.mx/reader034/viewer/2022050902/5a78e66e7f8b9a68148c26e1/html5/thumbnails/22.jpg)
22
Copyright W3L GmbH
Kommando-Muster (command pattern)
Beispiel
//Commandpublic interface Operation{
void do();void undo();
}
//ConcreteCommand: s1 wird um s2 erhoehtpublic class Plus implements Operation{
private MyInteger s1, s2;
public Plus(MyInteger s1, MyInteger s2){
this.s1 = s1;this.s2 = s2;
}
public void do(){
s1.plus(s2.getValue());}
public void undo(){
s1.minus(s2.getValue());}
}
![Page 23: Architektur und Entwurfsmuster - W3L · PDF fileSie legen die Struktur von ... (factory method pattern) •Adapterklasse •Interpreter ... (Cross Cutting Concerns) Proxy-Muster](https://reader034.vdocuments.mx/reader034/viewer/2022050902/5a78e66e7f8b9a68148c26e1/html5/thumbnails/23.jpg)
23
Copyright W3L GmbH
Kommando-Muster (command pattern)
Beispiel//Invokerpublic class Calculator{
Stack<Operation> ops = new Stack<Operation>();
public void invoke(Operation op){
ops.push(op);op.do();
}
public void undo(){
//letzte Operation rueckgaengig machenOperation op = ops.pop();op.undo();
}}
![Page 24: Architektur und Entwurfsmuster - W3L · PDF fileSie legen die Struktur von ... (factory method pattern) •Adapterklasse •Interpreter ... (Cross Cutting Concerns) Proxy-Muster](https://reader034.vdocuments.mx/reader034/viewer/2022050902/5a78e66e7f8b9a68148c26e1/html5/thumbnails/24.jpg)
24
Copyright W3L GmbH
Kommando-Muster (command pattern)
Beispiel//Clientpublic static void main(String args[]){
Calculator calc = new Calculator();
MyInteger s1 = new MyInteger(5);MyInteger s2 = new MyInteger(4);Plus p = new Plus(s1, s2);
//ab hier keine Abhaengigkeiten mehr zu MyIntegercalc.invoke(p); //s1 == 9
calc.invoke(p); //s1 == 13
...
//letzte Operation rueckgaengig machencalc.undo(); //s1 == 9
}
![Page 25: Architektur und Entwurfsmuster - W3L · PDF fileSie legen die Struktur von ... (factory method pattern) •Adapterklasse •Interpreter ... (Cross Cutting Concerns) Proxy-Muster](https://reader034.vdocuments.mx/reader034/viewer/2022050902/5a78e66e7f8b9a68148c26e1/html5/thumbnails/25.jpg)
25
Copyright W3L GmbH
Kommando-Muster (command pattern)
Weitere BeispieleUnit-Tests (z. B. JUnit) werden als Kommandos gekapselt Java: Paket javax.swing.undo: Unterstützung von Undo/Redo-Kommandos
Kommando-Muster Swing-BibliothekCommand AbstractActionConcreteCommand ConcreteActionUnterklasse von Command Unterklasse von AbstractActionexecute() actionPerformed()
![Page 28: Architektur und Entwurfsmuster - W3L · PDF fileSie legen die Struktur von ... (factory method pattern) •Adapterklasse •Interpreter ... (Cross Cutting Concerns) Proxy-Muster](https://reader034.vdocuments.mx/reader034/viewer/2022050902/5a78e66e7f8b9a68148c26e1/html5/thumbnails/28.jpg)
28
Copyright W3L GmbH
Kommando-Muster (command pattern)
Hinweise zur ImplementierungKeine Intelligenz
Kommando delegiert Ausführung an Empfänger Keine Delegation
Kommando implementiert alle Funktionalitäten selbst Keine Delegation wenn
Kommandos unabhängig von existierenden Klassen sein sollen kein passender Empfänger existiert
![Page 29: Architektur und Entwurfsmuster - W3L · PDF fileSie legen die Struktur von ... (factory method pattern) •Adapterklasse •Interpreter ... (Cross Cutting Concerns) Proxy-Muster](https://reader034.vdocuments.mx/reader034/viewer/2022050902/5a78e66e7f8b9a68148c26e1/html5/thumbnails/29.jpg)
29
Copyright W3L GmbH
Kommando-Muster (command pattern)
Vorteile Aufrufer müssen nicht „wissen“, welche Objekte die Kommandos letztendlich ausführen
Aufrufer sind nur von der Schnittstelle Command abhängig Kommandoobjekte können manipuliert und erweitert werden, wie jedes andere Objekt auch Kommandoobjekte können leicht hinzugefügt werden, da keine existierenden Klassen geändert werden müssenDas Composite-Muster kann verwendet werden, um existierende Kommandos zu einem neuen Kommando zu gruppieren
Übung: Kommando- und Composite-Muster
![Page 30: Architektur und Entwurfsmuster - W3L · PDF fileSie legen die Struktur von ... (factory method pattern) •Adapterklasse •Interpreter ... (Cross Cutting Concerns) Proxy-Muster](https://reader034.vdocuments.mx/reader034/viewer/2022050902/5a78e66e7f8b9a68148c26e1/html5/thumbnails/30.jpg)
30
Copyright W3L GmbH
Kommando-Muster (command pattern)
Nachteile Die Systemstruktur ist schwieriger zu verstehen. Es werden viele zusätzliche kleine Klassen benötigt.
Zusammenhänge Unterstützung der Weiterentwickelbarkeit und Erweiterbarkeit Bessere Benutzbarkeit durch Undo- und Redo-Funktionalität Kommandoobjekte sind ein objektorientierter Ersatz für CallbacksFörderung des Prinzips der Abstraktion Reduzierung der Sichtbarkeit
![Page 31: Architektur und Entwurfsmuster - W3L · PDF fileSie legen die Struktur von ... (factory method pattern) •Adapterklasse •Interpreter ... (Cross Cutting Concerns) Proxy-Muster](https://reader034.vdocuments.mx/reader034/viewer/2022050902/5a78e66e7f8b9a68148c26e1/html5/thumbnails/31.jpg)
31
Copyright W3L GmbH
Vielen Dank!
Neues
„Das Neue daran ist nicht gut, und das Gute daran ist nicht neu.“(Johann Heinrich Voß (1751-1826), dt. Dichter)
![Page 32: Architektur und Entwurfsmuster - W3L · PDF fileSie legen die Struktur von ... (factory method pattern) •Adapterklasse •Interpreter ... (Cross Cutting Concerns) Proxy-Muster](https://reader034.vdocuments.mx/reader034/viewer/2022050902/5a78e66e7f8b9a68148c26e1/html5/thumbnails/32.jpg)
32
Copyright W3L GmbH
Literatur
Balzert, H.: Lehrbuch der Softwaretechnik: Entwurf, Implementierung, Installation und Betrieb; 3. Aufl., Spektrum Akademischer Verlag 2011
![Page 33: Architektur und Entwurfsmuster - W3L · PDF fileSie legen die Struktur von ... (factory method pattern) •Adapterklasse •Interpreter ... (Cross Cutting Concerns) Proxy-Muster](https://reader034.vdocuments.mx/reader034/viewer/2022050902/5a78e66e7f8b9a68148c26e1/html5/thumbnails/33.jpg)
In Zusammenarbeit mit der Fachhochschule Dortmund bieten wir
zwei Online-Studiengänge B.Sc. Web- und MedieninformatikB.Sc. Wirtschaftsinformatik
und 7 Weiterbildungen im IT-Bereich an.
W3L-AkademieInhouse-Schulungen
Wir bieten Inhouse-Schulungen und Beratung durch unsere IT-Experten und –Berater.
SchulungsthemenSoftwarearchitektur (OOD)
Requirements Engineering (OOA)
Nebenläufige & verteilte
Programmierung
Gerne konzipieren wir auch eine individuelle Schulung zu Ihren Fragestellungen.
Flexibel online lernen und studieren!
Sprechen Sie uns an!Tel. 0231/61 804-0, [email protected]
Besuchen Sie unsere Akademie!http://Akademie.W3L.de