Michael Saecker
Bekannte Lösungen für bekannte Probleme benutzen Entwurf auf höherer Abstraktionsebene als bei Programmiersprachen Gemeinsames Vokabular für Designer 2
http://www.clickpix.de/sommer/architektur.jpg 3
http://www.kaernten-netz.de/resources/userdata/images/image/kaernten-netz/architektur.jpg 4
http://www.monstropolis.org/cms/upload/2007/02/architektur.jpg 5
Definitionen Design Patterns Patterns in der Softwarearchitektur Design Patterns im RSA J2EE spezifische Patterns Zusammenfassung Diskussion 6
Definitionen Design Patterns Patterns in der Softwarearchitektur Design Patterns im RSA J2EE spezifische Patterns Zusammenfassung Diskussion 7
Design Pattern Beschreibt ein wiederkehrendes Problem Beschreibt den Kern der Lösung Ermöglicht Wiederverwendung der Lösung ohne 2x das Gleiche machen zu müssen 8
Softwarearchitektur Beschreibung der Subsysteme & Komponenten und deren Beziehungen Globale Eigenschaft des Systems Schwer im Nachhinein zu ändern Bestimmt durch nicht-funktionale Eigenschaften, wie Modifizierbarkeit, Wartbarkeit 9
Softwarearchitektur Pattern Pattern auf höherer Abstraktionsebene Kein lokaler, sondern globaler Entwurf hilft eine globale System-Eigenschaft herzustellen 10
Definitionen Design Patterns Patterns in der Softwarearchitektur Design Patterns im RSA J2EE spezifische Patterns Zusammenfassung Diskussion 11
Benachrichtigung von Beobachtern bei einer Änderung am Objekt Anwendbarkeit Eine Änderung zieht mehrere Änderungen an anderen Objekten nach sich Benachrichtigung von Objekten ohne zu wissen wen Abstraktion hat 2 Aspekte, die voneinander abhängig sind 12
Subject attach(observer) detach(observer) notify() observers Observer Update() ConcreteSubject subjectstate getstate() setstate() subject ConcreteObserver observerstate 13
Vorteile Abstrakte Kopplung zwischen Subjekt und Beobachter Broadcast Kommunikation an alle relevanten Objekte Nachteile Nicht bekannt was verändert wird Kann viele Updates zur Folge unerwarteten Änderungen 14
Familie von Algorithmen zusammenfassen Strategie lässt Algorithmus variieren Anwendbarkeit Viele zusammenhängende Klassen mit ähnlichem Verhalten Verschiedene Varianten eines Algorithmus werden benötigt Algorithmus benutzt Daten, die nicht entblößt werden sollen Klasse mit vielen Verhalten als mehrfache Conditionals in den Operationen => Auslagern nach Strategy 15
Context ContextInterface() strategy Strategy AlgorithmInterface() ConcreteStrategyA AlgorithmInterface() ConcreteStrategyB AlgorithmInterface() 16
Form Ausmalen(Muster abc) Fuellen() Muster Schraffiert Komplett Kariert Fuellen() Fuellen() Fuellen() 17
Vorteile Familien von Algorithmen Alternative zu Subklassen Eliminiert Abfragen und Verzweigungen Nachteile größere Anzahl von Objekten Strategien müssen bekannt sein Schnittstellen evtl. zu groß für simple Strategien 18
Definitionen Design Patterns Patterns in der Softwarearchitektur Design Patterns im RSA J2EE spezifische Patterns Zusammenfassung Diskussion 19
Definition Trennen der Anwendung in verschiedene Schichten nach Unteraufgaben Unteraufgaben in verschiedenen Abstraktionen Kommunikation nur zwischen benachbarten Schichten 20
FTP FTP TCP TCP IP Ethernet Übertragung IP Ethernet 21
Facade Application Service DAO Datenbank 22
Vorteile Kommunikation über Schnittstellen => Schichten austauschbar Schichten evtl. wiederverwendbar Nachteile Effizienz leidet ( Durchreichen der Anforderungen) Schwierig korrekte Anzahl an Schichten zu bestimmen 23
http://www.diplomatie.gouv.fr/de/img/jpg/13-1-4.jpg 24
Definition Trennen der Anwendung in 3 Komponenten Model Daten Kernfunktionalität Controller Behandeln Benutzereingaben View Informationen visualisieren View & Controller stellen User-Interface dar 25
Daten Ergebnisse Blue 8,2 Red 3,2 Green 1,4 Purple 1,2 Blue 8,2 Red 3,2 Green 1,4 Purple 1,2 26
call update Observer Model update coredata setofobservers attach(observer) detach(observer) notify getdata service attach call service Controller mymodel myview initialize(model,view) handleevent update manipulate display create View mymodel mycontroller attach getdata initialize(model) makecontroller activate display update 27
Vorteile Mehrere Sichten auf gleiches Modell Austauschbarkeit von View & Controller Look & Feel einfach zu realisieren durch verschiedene Views & Controller Nachteile Erhöhte Komplexität View & Controller sind eng gekoppelt View & Controller sind ans Modell gebunden => Modelländerungen ziehen sich durchs System 28
Definitionen Design Patterns Patterns in der Softwarearchitektur Design Patterns im RSA J2EE spezifische Patterns Zusammenfassung Diskussion 29
30
31
32
33
Definitionen Design Patterns Patterns in der Softwarearchitektur Design Patterns im RSA J2EE spezifische Patterns Zusammenfassung Diskussion 34
Clients von der Komplexität der Remote Aufrufe befreien. Ziel Kopplung minimieren und Details des Service verstecken Unnötige Remote-Aufrufe verhindern Übersetzen von Netzwerk-Exceptions in Benutzerexceptions Anfragen, Wiederholungen usw. vom Client verstecken 35
Client BusinessDelegate uses BusinessService LookupService lookup / create 36
Konsequenzen Reduziert Kopplung erhöhrt Wartbarkeit Übersetzt Business Exceptions Bietet dem Client ein simples Interface Erhöhrt Performance (caching) Führt eine zusätzliche Schicht ein Versteckt Remote-Aufrufe 37
Ziel Funktionen nach außen verfügbar machen ohne direkte Kopplung von Client und Server Keinen direkten Zugang zur BusinessLogic Remote Access Layer für Business Objekte Logische Gruppierung von Funktionen nach außen Einfache Schnittstelle nach außen verbirgt interne Komplexität 38
Client <<EJBSession>> SessionFacade accesses 1..* BusinessObject <<EntityEJB>> BusinessEntity DataAccessObject <<SessionEJB>> BusinessSession 39
Konsequenzen Layer für remote Services Reduziert Kopplung zwischen Client und Server Erhöht Wartbarkeit und Flexibilität Reduziert Komplexität Security Management kann zentralisiert werden Weniger Remote-Interfaces für den Client 40
Ihr wisst jetzt, was Design Patterns Architektur Patterns J2EE Patterns sind. Noch Fragen? 44
Haltet ihr Patterns für sinnvoll? Benutzt ihr Patterns? Vielleicht ohne es zu wissen? Gibt es ausreichend Toolunterstützung? 45
GoF, Design Patterns Elements of Reusable Object- Oriented Software, Addison-Wesley, 1997 F.Buschmann, R.Meunier, H.Rohnert, P.Sommerlad, M.Stal; Pattern-Oriented Software Architecture A System of Patterns, Wiley, 1996 http://de.wikipedia.org/wiki/softwarearchitektur http://www.corej2eepatterns.com/patterns2nded/ index.htm http://java.sun.com/blueprints/corej2eepatterns/patter ns/ index.html http://www.ibm.com/developerworks/ibm/library/iodoebp21/ http://www.ibm.com/developerworks/ibm/library/iodoebp8/ 46