Design Patterns. 5. Juni 2013



Ähnliche Dokumente
Design Patterns. 3. Juni 2015

Design Pattern - Strukturmuster. CAS SWE - OOAD Marco Hunziker Klaus Imfeld Frédéric Bächler Marcel Lüthi

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

Daniel Warneke Ein Vortrag im Rahmen des Proseminars Software Pioneers

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

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

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

Objektorientierte Programmierung OOP

Factory Method (Virtual Constructor)

Probeklausur. Lenz Belzner. January 26, Lenz Belzner Probeklausur January 26, / 16

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

Objektorientiertes Software-Engineering

ICT-Cloud.com XenApp 6.5 Configuration Teil 2

Software-Entwurfsmuster

5.2 Neue Projekte erstellen

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

Übungsklausur vom 7. Dez. 2007

tentoinfinity Apps 1.0 EINFÜHRUNG

SDD System Design Document

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

Prinzipien Objektorientierter Programmierung

IAWWeb PDFManager. - Kurzanleitung -

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

Ordner Berechtigung vergeben Zugriffsrechte unter Windows einrichten

How-to: Webserver NAT. Securepoint Security System Version 2007nx

Übungen zur Softwaretechnik

Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken.

teischl.com Software Design & Services e.u. office@teischl.com

Formular»Fragenkatalog BIM-Server«

Erstellen eines Formulars

Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten

Version Deutsch In diesem HOWTO wird beschrieben wie Sie Ihr vorhandenes PMS-System mit der IAC-BOX verbinden und konfigurieren.

Technische Analyse der Zukunft

16 Architekturentwurf Einführung und Überblick

Handbuch zur Anlage von Turnieren auf der NÖEV-Homepage

Software zur Anbindung Ihrer Maschinen über Wireless- (GPRS/EDGE) und Breitbandanbindungen (DSL, LAN)

my.ohm Content Services Autorenansicht Rechte

Agile Vorgehensmodelle in der Softwareentwicklung: Scrum

Some Software Engineering Principles

Reporting Services und SharePoint 2010 Teil 1

8 Design Patterns. Events

Programmiersprache 2 (C++) Prof. Dr. Stefan Enderle NTA Isny

Modellgetriebene Softwareentwicklung. 31. Januar 2013

Datenbank-Verschlüsselung mit DbDefence und Webanwendungen.

Der Einsatz von Formatvorlagen ist sinnvoll bei...

Software-Lizenzierung und Aktivierung: Verteilen von Software mit Apple Remote Desktop

IEEE 802.1x Authentifizierung. IEEE 802.1x Authentifizierung IACBOX.COM. Version Deutsch

Zur Einrichtung der orgamax Cloud auf Ihrem ipad beschreiben wir hier die Vorgehensweise.

Grundbegriffe der Informatik

Urlaubsregel in David

Bauteilattribute als Sachdaten anzeigen

Web-Kürzel. Krishna Tateneni Yves Arrouye Deutsche Übersetzung: Stefan Winter

Kap. 35 Swing: Grundlagen Kap Swing: Hauptfenster

Ihre Interessentendatensätze bei inobroker. 1. Interessentendatensätze

Internet Explorer Version 6

Windows 7 Firewall Regeln über die Registry

3 Windows als Storage-Zentrale

Schluss mit langweiligen Papierexposees! Die Zukunft heißt immodisplay. Vision Displays GmbH Schnackenburgallee 41b Hamburg

Folgende Einstellungen sind notwendig, damit die Kommunikation zwischen Server und Client funktioniert:

OO Softwareentwicklung

SMART Newsletter Education Solutions April 2015

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

Einführung in die Informatik Tools

Seite Wo finde ich die Landingpage Auswahl? Seite Wie aktiviere ich eine Landingpage? Seite

Idimager ein Bildverwaltungsprogramm-DAM Software

Anwendungsbeispiele Buchhaltung

Professionelle Seminare im Bereich MS-Office

Fachdidaktik der Informatik Jörg Depner, Kathrin Gaißer

IBM Software Demos Tivoli Provisioning Manager for OS Deployment

Kurzeinführung Excel2App. Version 1.0.0

Was ist PDF? Portable Document Format, von Adobe Systems entwickelt Multiplattformfähigkeit,

AK Medientechnologien 05 Delegation

.htaccess HOWTO. zum Schutz von Dateien und Verzeichnissen mittels Passwortabfrage

Abamsoft Finos im Zusammenspiel mit shop to date von DATA BECKER

Die Beschreibung bezieht sich auf die Version Dreamweaver 4.0. In der Version MX ist die Sitedefinition leicht geändert worden.

TeamViewer App für Outlook Dokumentation

Präsentation: Google-Kalender. Walli Ruedi Knupp Urdorf

Drucken, GUI, Design Pattern,... PDF, Usability, Observer Pattern, MVC

Java Enterprise Architekturen Willkommen in der Realität

Vermeiden Sie es sich bei einer deutlich erfahreneren Person "dranzuhängen", Sie sind persönlich verantwortlich für Ihren Lernerfolg.

Code wiederverwenden: Objektorientierte Programmierung (OOP) sinnvoll nutzen Roland Wagner Automatisierungstreff IT & Automation 2015

Windows Server 2008 (R2): Anwendungsplattform

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

SF-RB. Modul Provisionsabrechnung & Planung Reiseagentenprovisionsabrechnung & Planung. SF-Software Touristiksoftware

Historical Viewer. zu ETC5000 Benutzerhandbuch 312/15

Neuanlage des Bankzugangs ohne das bestehende Konto zu löschen

Verwendung des IDS Backup Systems unter Windows 2000

Individuelle Erweiterung des generierten Codes. 16. Januar 2013

Software-Architektur Design Patterns

Registrierung am Elterninformationssysytem: ClaXss Infoline

Fragebogen: Abschlussbefragung

Umgang mit der Software ebuddy Ändern von IP Adresse, Firmware und erstellen von Backups von ewon Geräten.

Projektsteuerung Projekte effizient steuern. Welche Steuerungsinstrumente werden eingesetzt?

Support-Tipp Mai Release Management in Altium Designer

Transkript:

Design Patterns 5. Juni 2013

Überblick Was sind Design Patterns? Welche Design Patterns gibt es? Wann sollte man Design Patterns einsetzen? Refactoring und Design Patterns: Welchen Zusammenhang gibt es hier? Taentzer Softwarequalität 2013 128

Was sind Design Patterns? Muster, die sich im Softwareentwurf bewährt haben Gute Design Patterns entstammen direkt der Praxis. Antwort auf wiederkehrende Probleme im SW-Entwurf kein fertiges Stück Code, das direkt in eigenen Code gesetzt werden kann eher eine Art Schablone für die Lösung eines Problems Kritik: Design Patterns müssen immer wieder neu implementiert werden. Literatur: E.Gamma, R. Helm, R. Johnson, J. Vlissides: Design Patterns: Elements of Reusable Object-Oriented Software(ISBN 0-201- 63361-2), http://en.wikipedia.org/wiki/design_patterns_(book) Taentzer Softwarequalität 2013 129

Sinn und Zweck von Design Patterns Zwecke: Stärkere Modularisierung von Software Integration von unabhängig entwickelten Komponenten Variantenmanagement: Gemeinsamkeiten von Objekten herauskehren, sodass verschiedene Objekte gleich behandelt werden können Arten: Erzeugungsmuster: Factory, Singleton, etc. Strukturmuster: Adapter, Decorator, Fassade, Composite, Proxy, etc. Verhaltensmuster: Observer, Visitor, Iterator, Strategy, etc. Taentzer Softwarequalität 2013 130

Design Patterns zum Entkoppeln Ziel: Software stärker modularisieren Module: gruppiere Komponenten (z.b. Klassen) in ein Modul (z.b. Paket), entwirf Schnittstellen Abstract Data Type: verstecke Datenstrukturen hinter stabilen Schnittstellen Repository: erstelle eine zentrale Datenstruktur mit Schnittstellen zu verschiedenen Clients Layers: verstecke Basisfunktionalität in unteren Schichten, Benutztbeziehung muss azyklisch sein Facade: erstelle eine einfache (spezialisierte) Schnittstelle auf Basis einer umfangreichen (allgemeinen) Proxy: erstelle oder lösche ungeplante Funktionalitäten in transparenter Weise Visitor: füge neue Funktionalität einer stabilen Klassenhierarchie hinzu Iterator: durchlaufe eine Gruppe von Objekten, ohne in die Gruppenstruktur zu schauen Taentzer Softwarequalität 2013 131

Facade Pattern Szenario: Eine Softwarekomponente ist sehr komplex. Deshalb: Bau einer Fassade, hinter der die Komplexität versteckt wird. Beispiel: Implementierung des UML-Metamodells Paket 1 Paket 2 Fassade Client1 Client2 Paket 3 delegiert benutzt Taentzer Softwarequalität 2013 132

Proxy Pattern Proxy als Schnittstelle zu einem anderen Ding typisches Beispiel: ein Remote-Proxy Ein Objekt liegt auf einer anderen Maschine. Das Remote- Proxy ist die Schnittstelle zum entfernt liegenden Objekt. :Client :MyProxy :RemoteSubject Taentzer Softwarequalität 2013 133

Proxy Pattern Client kommuniziert nur über eine Schnittstelle mit dem Proxy bzw. realen Subjekt. Client <<interface>> Subject action() Proxy action() RealSubject action() Taentzer Softwarequalität 2013 134

Design Patterns zur Integration Ziel: Integration von unabhängig entwickelten Komponenten Adapter: konvertiere eine Schnittstelle in eine andere Pipes and Filters: schicke Daten durch eine Reihe von Transformationen Propagator: leite Informationen durch ein Netzwerk von abhängigen Objekten spezieller Propagator: Observer: Untere Objekte benachrichtigen obere über Änderungen. Taentzer Softwarequalität 2013 135

Observer Pattern Subject void attach() void detach() void notify() 0..* Observer void update() Wirkungsweise: attach(): Observer anmelden detach(): Observer abmelden notify(): Observer benachrichtigen for all o:observer { o.update() } Eigenschaften: Broadcast-Benachrichtigung Objekte niederer Schichten können mit Objekten höherer Schichten kommunizieren, ohne die Schichtung zu verletzen. Taentzer Softwarequalität 2013 136

Design Patterns zum Variantenmanagement Ziel: Gemeinsamkeiten von Objekten werden herausgekehrt, sodass verschiedene Objekte gleich behandelt werden können. Superclass: ziehe Gemeinsamkeiten von Objekten in eine gemeinsame Oberklasse Strategy: erstelle eine gemeinsame Schnittstelle für verschiedene Varianten von Algorithmen Delegation: leite Aufgaben von Klasse A an Klasse B weiter Composite: behandle Teil- Ganzes-Hierarchien, atomare und komponierte Objekte werden gleichartig behandelt (Abstract) Factory: bündele die Erzeugung von zusammengehörigen Objekten in einer Klasse Decorator Pattern: füge zusätzliche Funktionalität während der Laufzeit zu Taentzer Softwarequalität 2013 137

Delegation Pattern Client Stack push() pop() List add() remove() Ein Objekt zeigt Funktionalität nach außen, die es intern an andere delegiert. Kritik an der Einführung dieses Patterns? Taentzer Softwarequalität 2013 138

Problem: Strukturierung von graphischen Elementen Text und Graphiken sollen in derselben Weise behandelt werden. Komplexe und simple Strukturen sollen möglichst gleich implementiert werden. Verschiedene Varianten von Graphiken sollen integriert werden können. Taentzer Softwarequalität 2013 139

Composite Pattern Einzelne Instanzen und Gruppen von Instanzen können gleich behandelt werden. Component Beispiel: Graphics Atomic Composite Primitive Composite Circle Rectangle Polygon Taentzer Softwarequalität 2013 140

Problem: Verschiedene Formatierungen derselben Struktur Eine Formatierung erzeugt eine spezielle Instanz einer Struktur. Entkopple die Formatierung von der Struktur Taentzer Softwarequalität 2013 141

Strategy Pattern Kapselung einer Familie von Algorithmen durch eine Schnittstelle Beispiel: Structure FormatingStrategy TreeFormat XMLFormat GraphicalFormat Taentzer Softwarequalität 2013 142

Problem: Verschönerung der Benutzerschnittstelle Mögliche Verschönerungen für einen ListView: Trenner zwischen Einträgen Scroll Bar, um lange Listen anzuzeigen Ein Suchfeld Probleme: Das Benutzerschnittstellenobjekt soll über die Verschönerungen nichts wissen. Explosion von Klassen vermeiden: Eine Lösung durch Vererbung würde eine Unterklasse per Kombination von Verschönerungen erzeugen. Taentzer Softwarequalität 2013 143

Decorator Pattern Das Pattern kann einem Objekt weitere Funktionalität hinzufügen. Alternative zur Vererbung: Unterklassen fügen Funktionalität während der Übersetzung zu. Das Decorator-Pattern kann Objekt während der Laufzeit mit neuem Verhalten versehen. Mehrere Dekorierungen sind möglich. Taentzer Softwarequalität 2013 144

Weitere interessante Design Patterns Command: separate Komposition eines Kommandos vor Ausführung, Standardfunktionalität wie Undo/Redo Singleton: Instanziierung einer Klasse durch nur ein Objekt Memento: Speichere den Inhalt eines Objekts zeitweise so, dass die Speichermethode gewechselt werden kann. Taentzer Softwarequalität 2013 145

Wesentliches zusammengesetztes Design Pattern: Model-View-Controller Ziel: mehrere Sichten auf gemeinsamen Daten Schichtenbildung: Observer Pattern View-Objekte können andere View-Objekte enthalten: Composite Pattern Controller wählt View: Strategy Pattern Controller1 View1 Model Controller2 View2 Controller3 View3 Taentzer Softwarequalität 2013 146

Design Patterns und Refactoring Refactoring, um Design Patterns in die eigene Anwendung zu integrieren Joshua Kerievsky, Refactoring To Patterns, Addison Wesley, 2004 Refactoring To Patterns Catalog: http://industriallogic.com/xp/refactoring/catalog.html Auffinden von Anti-Patterns und Ersetzen durch Design Patterns Anti Patterns Catalog: http://c2.com/cgi/wiki?antipatternscatalog Wie weit geht dieses Verfahren? Taentzer Softwarequalität 2013 147

Zusammenfassung Design Patterns kondensieren das Wissen von erfahrenen Softwareentwicklern. Design Patterns tragen konstruktiv zur Qualitätssicherung bei. Refactoring to Patterns ist der Versuch, ein Design systematisch zu verbessern. Bad Smells Refactorings Design Patterns kaum Werkzeugunterstützung: frühzeitige Einführung von Design Patterns z.b. PatternBox Taentzer Softwarequalität 2013 148