Patterns Entwurfsmuster - Wie spart man sich Arbeit ?

Slides:



Advertisements
Ähnliche Präsentationen
Objektrelationales Mapping mit JPA
Advertisements

Persistente Domänenmodelle mit JPA 2.0 und Bean Validation
Strategie (Strategy / Policy) Ein objektbasiertes Verhaltensmuster Stephan Munkelt, Stefan Salzmann - 03IN.
Dokumentation von Software Architekturen unter Berücksichtigung von IEEE 1471 Vortrag an der FH Regensburg © Dr. Ulrich Margull, 2004 Dr. Ulrich.
Design-Pattern.
Harald Köbler Software Design Patterns Prototype.
Rollenbasierter Entwurf am Beispiel eines benutzeradaptierbaren Hyperbooks Institut für Informatik Rechnergestützte Wissensverarbeitung Universität Hannover.
Kapselung , toString , equals , Java API
Fakultät für informatik informatik 12 technische universität dortmund Specifications Peter Marwedel TU Dortmund, Informatik 12 Graphics: © Alexandra Nolte,
Design Patterns- Entwurfsmuster
Bastian Cramer, Universität Paderborn Entwurfsmuster für Webanwendungen Projektgruppe: Generierung von Webanwendungen aus visuellen Spezifikationen.
Verbs Used Impersonally With Dative Deutsch I/II Fr. Spampinato.
Architektur, Design oder Implementation? Ulrich Schulz, Sebastian Ordyniak.
On a Buzzword: Hierachical Structure David Parnas.
Content-Entwicklung mit Design Patterns
Java: Objektorientierte Programmierung
Java: Grundlagen der Objektorientierung
Komponentenbasierter Taschenrechner mit CORBA
Cassey - Common Answer Set Evaluation sYstem Jean Gressmann Benjamin Kaufmann Robert Lenk.
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 6 Model-View-Controler als Grundlage für Nutzerschnittstellen Sommersemester 2003 Lars Bernard.
MVC – ein Architekturmuster
Christian Kästner Modellgetriebene Softwareentwicklung Eclipse Modelling Framework.
PRJ 2007/1 Stefan Dissmann Motivation Problem: gleiche Datenstrukturen werden für verschiedene Objekte gebraucht: z.B. Listen von Studierenden, Kunden,
PKJ 2005/1 Stefan Dissmann Klassenhierarchie Person Kunde Goldkunde Lieferant Object.
Transaction Script Software Component Technology for Distributed Applications.
Explizite und editierbare Metainformationen für Software Muster.
A. Zündorf, SE Group Reverse Engineering K2 1 Übersicht 1.Quelltextanalyse mit regulären Ausdrücken 2.Compilertechniken 3.Prozessanalyse 4.Dynamische Analyse.
Remote Methode Invocation (RMI)
-LABORPRAKTIKUM- SOMMERSEMESTER 2005
Software Design Patterns Creational Patterns Structural Patterns Behavioral Patterns –Behavioral Class Patterns Interpreter Template Method Pattern –Behavioral.
Dependents, Publish-Subscribe, Listener
DVG Klassen und Objekte
Hänchen & Partner GmbH 1 Web-Anwendungen mit dem Jakarta Struts Framework 3.Juli 2003 Martin Burkhardt.
UML Begleitdokumentation des Projekts
FH-Hof Singleton Pattern Richard Göbel. FH-Hof Motivation Bestimmte Klassen sollen nur ein Objekt haben Nur ein Fabrikobjekt für eine Fabrikklasse Zentraler.
Sommersemester 2004 Jan Drewnak Entwicklung und Einsatz von Geosoftware I Praktikum Sitzung 6 Sitzung 6: Model-View-Controller als Grundlage.
Seminar Softwaretechnik Dipl.-Inform. Susanne Jucknath-John
Entwicklung verteilter eingebetteter Systeme - Einführung
Einführung / Geschichte Einführung / Geschichte Motivation Motivation Beispiel Beispiel Architektur / Komponenten Architektur / Komponenten Konfiguration.
Universität zu Köln Institut für Historisch-Kulturwissenschaftliche Informationsverarbeitung Prof. Dr. M. Thaller AM1: Re-usable Content in 3D und Simulationssystemen.
Testtechniken-Praktikum WS 2005/06 1 Testen mit Mock- Objekten Andreas Höfer Dr. Matthias Müller.
Aufgaben Version 1: Es soll eine Wetterstation mit folgenden zwei Anzeigen implementiert werden: Aktuelle Wetterbedingungen mit Temperatur und.
Clean Code Software-Entwicklung als Handwerkskunst Thomas Nagel, November 2011.
© ARC Solutions GmbH All rights reserved 10. Informatik-Tag, HTWM Dipl.-Inf. Chris Hübsch, ARC Solutions GmbH EINSATZ VON DESIGN PATTERNS BEI DER.
Software Design Patterns
Seite 1 © 2007 Dr. Schwaiger Roland VP SW-Technologien WS 2007/2008 VP Softwaretechnologien WS2007/2008 SAP GUI Pattern und Componentry Dr.
OOSE nach Jacobson Sebastian Pohl/ST7 Betreuer: Prof. Dr. Kahlbrandt.
-LABORPRAKTIKUM- SOMMERSEMESTER 2005
Laborpraktikum Umsetzung von Pattern SS 05 Prof. Paul, Dipl.-Inf. Fröhlich, Dipl.-Inf. Linke {paul | iti.cs.uni-magdeburg.de
Case Tools Unterstützung für Design Pattern von Vladislav Krasnyanskiy.
Folie 1 Jan-Peter Schmidt Matthias Teske -Fernstudium Informatik- -Matrikel LABORPRAKTIKUM- SOMMERSEMESTER 2005 „Umsetzung von Pattern“ Muster:
Design Pattern1 Motivation Entwurfsmuster Entwurf wiederverwendbarer objektorientierter Software schwer gute Entwürfe entstehen durch Wiederverwen- dung.
Dieser Vortrag wird gesponsort von:
GAME PROGRAMMING PATTERNS – FLYWEIGHT & OBSERVER Robert Nystrom Softwaretechnologie II Teil 2 Anike Schulz.
Neukonzeptionierung des SVNCheckers > Malte Legenhausen > DLR > Folie 1 Observer - Pattern Malte Legenhausen, Robert Werschnitzke Asea Brown.
Technische Universität München Praktikum Mobile Web Teil Kollaboratives Bewerten und Filtern am Touchscreen Robert Eigner
By Thorsten Zisler 1 SQL Datenbank Anbindung an den Supervisor.
Funktionsweise eines Funambolservers Natascha Graf Aachen, 01. Februar 2010.
S INGLETON P ATTERN IN M ATLAB By Giuseppe
© 2012 TravelTainment Einführung in Enterprise JavaBeans Seminarvortrag von Ralf Penners Folie 1 von 34.
Operator Overloading, Mehrfachvererbung, Safe Pointer, Observer.
Tutorium Software-Engineering SS14 Florian Manghofer.
SE: Systementwurf, © Till Hänisch 2003 Systemarchitektur nach Sommerville, Software Engineering, Addison Wesley.
Systementwurf.
Systemanalyse BA Heidenheim 2002.
Grundkurs Informatik 11-13
1. Die rekursive Datenstruktur Liste 1
Informatik Softwareentwicklung – 4.3 Entwurfsmuster
<Fügen Sie Ihren Namen ein>
 Präsentation transkript:

Patterns Entwurfsmuster - Wie spart man sich Arbeit ?

Überblick Was sind Patterns Historie Klassifikation, Dokumentation Beispiele Singleton Flyweight Observer Patterns vs. Libraries Anwendung beim Design Probleme

Aufbau Name soll direkt das Problem (und die Lösung) darstellen --> schwierig zu finden Problem das gelöst werden soll Lösung Allgemeine Anordnung von Elementen (Klassen,...), mit denen das Problem lösbar ist kein "konkretes" Design Konsequenzen Einschränkungen time/space tradeoff

Historie Ursprung Architektur Christopher Alexander: A pattern language 1977 „Each pattern describes a problem witch occurs over and over again in our environment, and then describes the core of the solution to that problem in such a way, that you can use the solution a million times over, without ever doing it the same way twice“ Seit ca. 1990: Patterns in Software 1994 GOF: Design Patterns Seither weit akzeptiert XP

Patterntypen Idioms Auf Ebene einer Klasse (z.B. Singleton) Spezifisch für die verwendete Sprache Design patterns Mehrere Klassen, Interaktion (z.B. Observer) Architectural patterns Systemarchitektur (z.B. Client Server) Andere Analysis patterns Datamodel patterns Organizational patterns Antipattern (häufig verwendete falsche Lösung)

Beschreibung von Patterns NameName des Patterns Intentdas zu lösende Problem Also known asandere verbreitete Namen Example Beispiel (-Anwendung) Context Wo kommt dieses Problem vor Problem formale Beschreibung d. Problems Solution Die Lösung (abstrakt) Structure Klassen-, Sequenzdiagramm,... Example code Beispiel-Implementierung Implementation guidelines Variants Known uses

Beispiel: Singleton Intent Eine Klasse soll genau eine Instanz haben Motivation Für manche Klassen ist es wichtig, nur eine Instanz zu haben. Beispielsweise können in einem System viele Drucker sein, aber nur ein Drucker-Spooler (ein Dateisystem, ein Fenstermanager, eine Verbindung zur Datenbank,...). Ein digitales Filter hat einen A/D Wandler. Eine globale Variable erlaubt den Zugriff auf ein gemeinsames Objekt, stellt aber nicht sicher, daß genau eine Instanz existiert. Besser ist es deshalb, wenn die Klasse selbst dafür Sorge trägt, daß nur eine Instanz existiert. Structure public class Singleton { private static Singleton Instance = new Singleton(); private Singleton() {}; public Singleton getInstance(){ return Instance; }

Beispiel: Flyweight Intent Erlaubt die effiziente Verwendung großer Zahlen von Objekten durch gemeinsame Nutzung z.B. Strings, Knoten in Algorithmen, State-Pattern, Buchstabe in Editor,...

Anwendungsbeispiel Daten (z.B. Temperatur) werden vom Sensor erfaßt und vom Prozessor gespeichert. Die Daten sollen zeitsynchron dargestellt werden (mehrfach!) Trennung der Darstellung von der Erfassung (Cohesion) zwei Objekte: Processor und View Wie wird sichergestellt, daß alle Darstellungen immer die gleichen, aktuellen Daten zeigen ? Processor benachrichtigt die Views bei Änderungen Processor muß die Views kennen, z.B. müssen sich diese beim Processor registrieren

Lösung: Sensor gibt neuen Wert an Processor, dieser benachrichtigt Views Gute Lösung ?

Probleme Lösung funktioniert zwar, aber Nur für diesen Fall: Update Mimik ist „hart“ kodiert Integration anderer „Verbraucher“ ? Z.B. Drucker-Objekt: Klasse Processor muß geändert werden Hohe Kopplung Kein Update ohne den Rest des Systems Wenig Cohesion Processor ist für Update-Mechanismus und für Verwaltung des Temperatur-Sensors zuständig

Pattern-Lösung: Observer Define a one-to many dependency between objects so that when one object changes state, all its dependents are notified and updated automatically. GOFGOF

Observer cont‘d.

Observer Zusammenfassung Durch Abstraktion wird enge Kopplung zwischen Observer und Subject vermieden Cohesion verbessert Möglicherweise Performanceverlust durch unnötige update() Eventuell müssen bei der konkreten Applikation nur bestimmte (eins) Observer benachrichtigt werden, die (allgemeine) Basisklasse weiß dies nicht

Offene Fragen Wie werden Observer gehalten ? Update (-Prozeß) synchron oder asynchron ? Für alle gleich ? Ungültige Observer (Absturz,...) Registrieren sich die Observer für alle Events oder nur für bestimmte ? Genügend Freiraum für die Implementierung Diese wichtigen Aspekte werden vom Pattern nicht festgelegt (Unterschied zu Code-Bibliotheken)

Wichtige Patterns (subjektiv) Singleton Flyweight Iterator Observer Abstract Factory Facade Decorator Proxy

Design (mit) Patterns Low Level Design Aufgabe des Moduls ist bekannt, konkrete Implementierung noch offen Identifikation von Patterns anhand (technischer) Problemstellung durch Abstraktion Analogien zu anderen Systemen (known uses) Patternkataloge Refactoring Anhand des Codes wird Problem identifiziert Dazu passendes Patterns ausgewählt und implementiert Antipatterns High Level Design, Analyse Architectural patterns Data model patterns

Probleme „unpassende“ Patterns Problem wird dem gefundenen Pattern angepasst Tritt auf, wenn zunächst nach „vielversprechenden“ Patterns gesucht wird, ohne das Problem gründlich analysiert zu haben Falsches Vorgehen, richtig: Identifikation des Problems Abstraktion Identifikation des Patterns Eindeutige Beschreibung von Patterns Performance Kann durch allgemeine Lösungen schlechter sein Gegenbeispiel: Flyweight, besseres Design führt trotz Abstraktion zu schnellerer Lösung („Algorithmen“ entscheiden stärker über Performance als Implementierung)

Literatur Alexander et al, A pattern language, Oxford University Press, 1977 Gamma, Helm, Johnson, Vlissides, Design Patterns, Addison Wesley, 1995 Grand, Patterns in Java, Wiley, 1998 Hay, Data model patterns, Dorset House, 1996 Fowler, Analysis Patterns, Addison Wesley, 1997 Buschmann et al, A System of patterns, Wiley, 1996 Waite, Lafore, Object oriented design in java, Waite Group, 1998