Architektur und Entwurfsmuster Definition, Abgrenzung und ausgewählte Beispiele



Ähnliche Dokumente
Behavioral Patterns. Seminar Software-Entwurf WS 04/05. Przemyslaw Dul

Daniel Warneke Ein Vortrag im Rahmen des Proseminars Software Pioneers

XMLBeam. Einfach XML-Handling. W3L AG

Inhaltsverzeichnis. Vorwort Geleitwort von Grady Booch Einleitung... 23

Werkzeuge für ein innovatives Wissensmanagement. W3L AG

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015

Überblick FBC SNW Zusammenfassung. Entwurfsmuster. Eine Einführung. Botond Draskoczy. Marcus Vitruvius Pollio

Contexts and Dependency Injection. W3L AG

SE Besprechung. Übung 4 Architektur, Modulentwurf

Objektorientiertes Software-Engineering

Tutorium Softwaretechnik I

Einflussfaktoren auf eine Softwarearchitektur und ihre Wechselwirkungen Entwurfsentscheidungen systematisieren

Vaadin TouchKit. W3L AG

Übungen zur Softwaretechnik

Übungen zu Softwaretechnik

Analyse und Modellierung von Informationssystemen

Analyse und Modellierung von Informationssystemen

Model-View-ViewModel (MVVM)

Factory Method (Virtual Constructor)

Objektorientierte Programmierung

Komponentenbasierter Taschenrechner mit CORBA

Vermittler (Mediator) Sabine Müller - Sven Richter - Jens Wagenbreth 03IN2-P-D

Design Patterns 2. Model-View-Controller in der Praxis

Software-Architektur Design Patterns

Fassade. Objektbasiertes Strukturmuster. C. Restorff & M. Rohlfing

Musterlösung zur Vorlesung Modellbasierte Softwareentwicklung Wintersemester 2014/2015 Übungsblatt 9

Structural Patterns. B. Sc. Andreas Meißner

Objektorientierte Programmierung

Übung 6: Feinentwurf. Prof. Dr. Dr. h.c. Manfred Broy Dr. Herbert Ehler, Martin Feilkas 6. Juli 2006 Bernd Spanfelner, Sebastian Winter

Gebundene Typparameter

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI

Einführung in die Programmierung

Tutorium Softwaretechnik I

Design Patterns II. Der Design Muster Katalog. Prof. Dr. Nikolaus Wulff

Prinzipien Objektorientierter Programmierung

Application Frameworks

Entwurfsprinzip. Entwurfsprinzip

WebService in Java SE und EE

8 Design Patterns. Events

Softwaretechnologie - Wintersemester 2012/ Dr. Günter Kniesel

Lehrplan: Architektur und Design. paluno

Programmieren in Java

U08 Entwurfsmuster (II)

Java: Vererbung. Teil 3: super()

Client-Server-Beziehungen

Prof. Dr. Uwe Schmidt. 21. August Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (IA 252)

Übung 1 mit C# 6.0 MATTHIAS RONCORONI

Themen. Web Service - Clients. Kommunikation zw. Web Services

am Beispiel von JUnit

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

7. Objektorientierte Softwareentwicklung/3. Informatik II für Verkehrsingenieure

Große Übung Praktische Informatik 1

Vererbung & Schnittstellen in C#

Software-Entwurfsmuster

12.4 Sicherheitsarchitektur

ObjectBridge Java Edition

Java Einführung Umsetzung von Beziehungen zwischen Klassen. Kapitel 7

Objektorientierte Programmierung. Kapitel 12: Interfaces

Bekannte Lösungen für bekannte Probleme benutzen. Entwurf auf höherer Abstraktionsebene als bei Programmiersprachen

Design Patterns. (Software-Architektur) Prof. Dr. Oliver Braun. Letzte Änderung: :12. Design Patterns 1/26

INDIVIDUELLE SOFTWARELÖSUNGEN CUSTOMSOFT CS GMBH

Wiederholung: Beginn

Objektorientiertes JavaScript

Inhaltsverzeichnis. a. Standorte Design Patterns...6. b. Impressum i. C#.NET...6. ii. Enterprise Integration Patterns...

Softwareentwicklungspraktikum Sommersemester Grobentwurf

Integrierte und automatisierte GUI-Tests in Java

Skalierbare Webanwendungen mit Apache und Apache Tomcat. W3L AG

Java Kurs für Anfänger Einheit 4 Klassen und Objekte

Software-Architektur. Design Patterns. Prof. Dr. Oliver Braun. Fakultät für Informatik und Mathematik Hochschule München

14 Design Patterns Einführung 14.2 Composite Pattern

Software Engineering II (IB) Design Patterns

Typumwandlungen bei Referenztypen

Software Entwicklung II (SS12)

Testen mit JUnit. Motivation

Klausur GUI-Entwicklung WS10/11 1.Termin

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 17: 3-Schichten-Architektur 2

Übungen zu Softwaretechnik

MSXFORUM - Exchange Server 2003 > SMTP Konfiguration von Exchange 2003

Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005

Melde- und Veröffentlichungsplattform Portal (MVP Portal) Hochladen einer XML-Datei

Mobiles SAP für Entscheider. Permanente Verfügbarkeit der aktuellen Unternehmenskennzahlen durch den mobilen Zugriff auf SAP ERP.

4. Übung zu Software Engineering

Ausschreiben mit Jobplattformen. Folie 1

Grundkonstrukte der Objektorientierung in Java, C# und C++

Javakurs zu Informatik I. Henning Heitkötter

Klassenentwurf. Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? Objektorientierte Programmierung mit Java

Vorkurs C++ Programmierung

CORBA. Systemprogrammierung WS

Lukas Klich. Projektgruppe SHUTTLE. Seminar: Entwurfsmuster Lukas Klich/Projektgruppe SHUTTLE Seite: 1. Entwurfsmuster

Modellarbeit I: Entwurfsgerechte Klassenmodellierung

Der SAP BW-BPS Web Interface Builder

Design Patterns. 5. Juni 2013

Java Einführung Abstrakte Klassen und Interfaces

Fragen Arthur Zaczek. Apr 2015

Einführung in die Java- Programmierung

Entwurfsmuster (Design Patterns)

Model View Controller Pattern

Vorlesung Programmieren

Kapitel 6. Vererbung

Applikationsentwicklung Architekturübungen

Transkript:

1 Architektur und Entwurfsmuster Definition, Abgrenzung und ausgewählte Beispiele W3L AG info@w3l.de 2012

2 Zur Historie Entwurf-durch-Routine Wiederverwendung bewährter Lösungen Entwurf-durch-Innovation Erarbeitung neuer Lösungen Erste Ansätze Gang of Four (GoF) 1995: Design Patterns: Elements of Reusable Object-Oriented Software Erfahrungen aus GUI-Bereich; Sprachen C++ und Smalltalk 23 Entwurfsmuster

3 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

4 Klassifikation nach Zweck und Geltungsbereich Zweck Geltungsbereich Erzeugendes Muster Strukturelles Muster Verhaltensmuster Klasse Fabrikmethoden-Muster (factory method pattern) Adapterklasse Interpreter (interpreter) Schablonenmethode (template) Objekt Abstrakte Fabrik (abstract factory) 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 (chain of 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)

5 Klassifikation nach Anwendungs- und Verteilungsarten Muster für verteilte Systeme Starke, Gernot: Pattern-Oriented Software Architecture Vol. 4: A Pattern Language for Distributed Computing; John Wiley & Sons über 250 Muster Buschmann, F., Henney, K., Schmidt, D.: Remoting Patterns - Patterns for Enterprise, Realtime and Internet Middleware; John Wiley & Sons Muster für sicherheitsrelevante Systeme Authentifizierung, Autorisierung und Vertraulichkeit Voelter, M., Kircher, M., Zdun, U.: Security Patterns: Integrating Security and Systems Engineering; John Wiley & Sons Schumacher, 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

6 Klassifikation nach Anwendungs- und Verteilungsarten Muster für fehlertolerante Systeme Steel, Christopher: Robust Communications Software: Extreme Availability, Reliability, and Scalability for Carrier-Grade Systems; John Wiley & Sons Muster für eingebettete Systeme Noble, J., Weir, C.: Design Patterns for Distributed Real-Time Embedded Systems; Springer Buschmann, F., Henney, K., Schmidt, D.: Small Memory Software: Patterns for Systems with Limited Memory; Addison-Wesley

7 Schichten-Muster (layers pattern) - Beispiele Beispiel: ISO/OSI-7-Schichtenmodell: Schichten-Architektur mit linearer Ordnung Schicht 7 Anwendung (Application) Schicht 6 Darstellung (Presentation) HTTP, FTP, HTTPS, SMTP... Schicht 5 Sitzung (Session) Schicht 4 Transport (Transport) Schicht 3 Vermittlung (Network) Schicht 2 Sicherung (Data Link) Schicht 1 Übertragung (Physical) TCP, UDP, IP, IPsec, Ethernet,Token Ring,...

8 Architekturmuster: Schichtenmuster

9 Architekturmuster: Schichtenmuster White box, Grey box, Black box

10 Zusammenhang: Architektur- und Entwurfsmuster Schichtenarchitektur: Entkoppeln der Schichten durch Entwurfsmuster Black-box-Ansatz Fassaden-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-Architektur GUI, Fachkonzept- und Datenhaltungsschicht MVC, Beobachter-Muster, Callback

11 Entwurfsmuster: Proxy-Muster Proxy-Muster (proxy pattern) Auch: Stellvertreter-Muster (placeholder pattern, surrogate pattern) Objekt soll bzw. darf nicht direkt angesprochen werden Sicherheit Interception, Schutz-Proxy Verteilung Remote-Proxy Performanz Lazy-Loading, virtueller Proxy Cache-Proxy Nebenläufigkeit Synchronisations-Proxy z.b. Umsetzung Copy-On-Write

12 Entwurfsmuster: Proxy-Muster

13 Entwurfsmuster: Proxy-Muster Beispiel: Sicherheit class Kunde private String name; public String getname() if (!Application.CurrentUser.HasAccess(this, name )) throw new SecurityException(); return name;

14 Entwurfsmuster: Proxy-Muster Beispiel: Sicherheit interface IKunde public String getname(); class Kunde implements IKunde private String name; public String getname() return name;

15 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();

16 Entwurfsmuster: Proxy-Muster Beispiel: Transparenter Remote-Zugriff, Java RMI

17 Entwurfsmuster: Proxy-Muster Beispiel: Transparenter Remote-Zugriff, Java RMI

18 Entwurfsmuster: Proxy-Muster Proxy wird häufig generiert z.b. auf Basis von Deklarationen Beispiele RMI: rmic -v1.2 HelloWorldImpl Annotations (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;

19 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

20 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

21 Kommando-Muster (command pattern) Beispiel //Receiver public 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;

Kommando-Muster (command pattern) Beispiel //Command public interface Operation void do(); void undo(); //ConcreteCommand: s1 wird um s2 erhoeht public class Plus implements Operation private MyInteger s1, s2; public Plus(MyInteger s1, MyInteger s2) this.s1 = s1; this.s2 = s2; 22 public void do() s1.plus(s2.getvalue()); public void undo() s1.minus(s2.getvalue());

23 Kommando-Muster (command pattern) Beispiel //Invoker public class Calculator Stack<Operation> ops = new Stack<Operation>(); public void invoke(operation op) ops.push(op); op.do(); public void undo() //letzte Operation rueckgaengig machen Operation op = ops.pop(); op.undo();

24 Kommando-Muster (command pattern) Beispiel //Client public 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 MyInteger calc.invoke(p); //s1 == 9 calc.invoke(p); //s1 == 13... //letzte Operation rueckgaengig machen calc.undo(); //s1 == 9

25 Kommando-Muster (command pattern) Weitere Beispiele Unit-Tests (z. B. JUnit) werden als Kommandos gekapselt Java: Paket javax.swing.undo: Unterstützung von Undo/Redo- Kommandos Kommando-Muster Command ConcreteCommand Unterklasse von Command execute() Swing-Bibliothek AbstractAction ConcreteAction Unterklasse von AbstractAction actionperformed()

26 Kommando-Muster (command pattern) Struktur

27 Kommando-Muster (command pattern) Dynamik

28 Kommando-Muster (command pattern) Hinweise zur Implementierung Keine 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

29 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üssen Das Composite-Muster kann verwendet werden, um existierende Kommandos zu einem neuen Kommando zu gruppieren Übung: Kommando- und Composite-Muster

30 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 Callbacks Förderung des Prinzips der Abstraktion Reduzierung der Sichtbarkeit

31 Neues Das Neue daran ist nicht gut, und das Gute daran ist nicht neu. (Johann Heinrich Voß (1751-1826), dt. Dichter) Vielen Dank!

32 Literatur Balzert, H.: Lehrbuch der Softwaretechnik: Entwurf, Implementierung, Installation und Betrieb; 3. Aufl., Spektrum Akademischer Verlag 2011

Inhouse-Schulungen W3L-Akademie Flexibel online lernen und studieren! Wir bieten Inhouse-Schulungen und Beratung durch unsere IT-Experten und Berater. Schulungsthemen Softwarearchitektur (OOD) Requirements Engineering (OOA) Nebenläufige & verteilte Programmierung Gerne konzipieren wir auch eine individuelle Schulung zu Ihren Fragestellungen. In Zusammenarbeit mit der Fachhochschule Dortmund bieten wir zwei Online-Studiengänge B.Sc. Web- und Medieninformatik B.Sc. Wirtschaftsinformatik und 7 Weiterbildungen im IT-Bereich an. Sprechen Sie uns an! Tel. 0231/61 804-0, info@w3l.de Besuchen Sie unsere Akademie! http://akademie.w3l.de