Programmiermethodik Entwurfsmuster SS 2002

Ähnliche Dokumente
Objektorientierte und Funktionale Programmierung SS 2014

Security Patterns. Benny Clauss. Sicherheit in der Softwareentwicklung WS 07/08

EINSATZ VON DESIGN PATTERNS BEI DER ENTWICKLUNG DES CSM-FRAMEWORKS REMARC

Daniel Warneke Ein Vortrag im Rahmen des Proseminars Software Pioneers

Der Musteransatz von Christopher Alexander: Von Architektur über Design zur Gesellschaftspolitik

OM Entwurfsmuster. OM Entwurfsmuster. 7.1 Entwurfsmuster, Frameworks, Klassenbibl. Definition Entwurfsmuster (design pattern)

Software-Architektur Design Patterns

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

Übersicht. Softwarearchitektur. Softwarearchitektur, UML, Design Patterns und Unit Tests. Softwarearchitektur

Level 2 German, 2013

Datenintegrationsmuster MKWI 2004, Essen, 10. März 2004

Software Engineering. 10. Entwurfsmuster. Franz-Josef Elmer, Universität Basel, WS 2006/07

Software Reuse Sommer Schritt 1: Rechtschreibung, Grammatik, Wortschatz, Semantik Schritt 2: Vertiefung

Software-Projekt. Prof. Dr. Rainer Koschke. Fachbereich Mathematik und Informatik Arbeitsgruppe Softwaretechnik Universität Bremen

Software Engineering. 10. Entwurfsmuster II. Franz-Josef Elmer, Universität Basel, HS 2015

Design Patterns. 5. Juni 2013

Klausur Verteilte Systeme

Level 1 German, 2012

14 Design Patterns Einführung 14.2 Composite Pattern

Der Wetterbericht für Deutschland. Read the weather reports and draw the correct weather symbols for each town.

Softwaretechnologie - Wintersemester 2012/ Dr. Günter Kniesel

Software-Entwurfsmuster

Entwurfsmuster (Design Pattern) ETIS SS05

Erzeugungsmuster (nach Gang of Four )

Specifying Patterns for Dynamic Pattern Instance Recognition with UML 2.0 Sequence Diagrams. Lothar Wendehals. Universität Paderborn

Business Activity Monitoring Overall, Real Time Monitoring Daniel Jobst, TietoEnator Michael Herr, Deutsche Post SOPSOLUTIONS

NEWSLETTER. FileDirector Version 2.5 Novelties. Filing system designer. Filing system in WinClient

Level 2 German, 2011

UI Design Patterns. Kapitel: 8. Konzeption Style Guides UI Design Patterns Genres

arlanis Software AG SOA Architektonische und technische Grundlagen Andreas Holubek

Technische Aspekte von Privatsphäre in der digitalen Lebenswelt

job and career at CeBIT 2015

Session 1: Classes and Applets

ETHISCHES ARGUMENTIEREN IN DER SCHULE: GESELLSCHAFTLICHE, PSYCHOLOGISCHE UND PHILOSOPHISCHE GRUNDLAGEN UND DIDAKTISCHE ANSTZE (GERMAN

NVR Mobile Viewer for iphone/ipad/ipod Touch

Exercise (Part XI) Anastasia Mochalova, Lehrstuhl für ABWL und Wirtschaftsinformatik, Kath. Universität Eichstätt-Ingolstadt 1

VGM. VGM information. HAMBURG SÜD VGM WEB PORTAL - USER GUIDE June 2016

ITIL & TOGAF die Doppelspitze für IT Governance

Objektorientierte Analyse (OOA) OOA-Pattern

Preisliste für The Unscrambler X

Prozesse als strategischer Treiber einer SOA - Ein Bericht aus der Praxis

Thema: Sonnenuhren (7.Jahrgangsstufe)

Entwurfsprinzip. Entwurfsprinzip

Was haben Viehweiden mit Software zu tun?

job and career at HANNOVER MESSE 2015

Experts in agile software engineering. Software Architektur andrena objects ag

Patentrelevante Aspekte der GPLv2/LGPLv2

Name: Klasse: Standardisierte kompetenzorientierte schriftliche Reifeprüfung AHS. 18. September Englisch. Schreiben

Software Echtzeitverhalten in den Griff Bekommen

The English Tenses Die englischen Zeitformen

Efficient Design Space Exploration for Embedded Systems

DOWNLOAD. Englisch in Bewegung. Spiele für den Englischunterricht. Britta Buschmann. Downloadauszug aus dem Originaltitel:

Algorithms & Datastructures Midterm Test 1

Listening Comprehension: Talking about language learning

job and career at IAA Pkw 2015

DOWNLOAD. Me and my body. Erste Schritte in Englisch. Anne Scheller. Downloadauszug aus dem Originaltitel: Klasse 3 4

Englisch. Schreiben. 18. September 2015 BAKIP / BASOP. Standardisierte kompetenzorientierte schriftliche Reife- und Diplomprüfung.

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

HUMANGENETIK IN DER WELT VON HEUTE: 12 SALZBURGER VORLESUNGEN (GERMAN EDITION) BY FRIEDRICH VOGEL

1. General information Login Home Current applications... 3

Service Oriented Architecture & Enterprise Service Bus

Network premium POP UP Display

Objekterkennung Visuelle Verarbeitung von Gesichtern Orientierungseffekte. Objekterkennung Visuelle Verarbeitung von Gesichtern Orientierungseffekte

8 Design Patterns. Events

12.4 Sicherheitsarchitektur

Monday 19 May 2014 Morning Time: 40 minutes (plus 5 minutes reading)

Einkommensaufbau mit FFI:

Cameraserver mini. commissioning. Ihre Vision ist unsere Aufgabe

Einführung in die Robotik Einführung. Mohamed Oubbati Institut für Neuroinformatik. Tel.: (+49) 731 / mohamed.oubbati@uni-ulm.de

Vorlesung Software-Reengineering

Mitglied der Leibniz-Gemeinschaft

DAS ZUFRIEDENE GEHIRN: FREI VON DEPRESSIONEN, TRAUMATA, ADHS, SUCHT UND ANGST. MIT DER BRAIN-STATE-TECHNOLOGIE DAS LEBEN AUSBALANCIEREN (GE

SELF-STUDY DIARY (or Lerntagebuch) GER102

ROOT Tutorial für D. Liko

CNC ZUR STEUERUNG VON WERKZEUGMASCHINEN (GERMAN EDITION) BY TIM ROHR

Selbstlernmodul bearbeitet von: begonnen: Inhaltsverzeichnis:

SE Besprechung. Übung 4 Architektur, Modulentwurf

Prediction Market, 28th July 2012 Information and Instructions. Prognosemärkte Lehrstuhl für Betriebswirtschaftslehre insbes.

Lösungsansätze zur Nutzung von Social Media in KMUs

p^db=`oj===pìééçêíáåñçêã~íáçå=

Die Kunst des Programmierens...

Tuesday 10 May 2011 Afternoon Time: 30 minutes plus 5 minutes reading time

NETWORK PREMIUM POP UP DISPLAY

Group and Session Management for Collaborative Applications

MobiDM-App Handbuch für Windows Mobile

There are 10 weeks this summer vacation the weeks beginning: June 23, June 30, July 7, July 14, July 21, Jul 28, Aug 4, Aug 11, Aug 18, Aug 25

ReadMe zur Installation der BRICKware for Windows, Version ReadMe on Installing BRICKware for Windows, Version 6.1.2

Teil 4,9 Ich habe mein Handy, aber wo sind meine Schlüssel?

Theorie zu Übung 8 Implementierung in Java

Analyse und Modellierung von Informationssystemen

Snom 3xx/7xx Serie. Manuelle Neukonfiguration. Dokumentenversion 1.0

Offenes Lernen 1: Pflichtaufgaben You have to do all of these tasks. Du musst alle diese Aufgaben machen.

How-To-Do. Hardware Configuration of the CC03 via SIMATIC Manager from Siemens

KURZANLEITUNG. Firmware-Upgrade: Wie geht das eigentlich?

Analyse und Modellierung von Informationssystemen

COMPUTER: Mission Berlin. November 9, Eight thirty pm. You've got 30 minutes to save Germany. You've got to get a move on.

English grammar BLOCK F:

Dynamische Plug-ins mit Eclipse 3. Martin Lippert Tammo Freese

EU nimmt neues Programm Mehr Sicherheit im Internet in Höhe von 55 Millionen für mehr Sicherheit für Kinder im Internet an

Transkript:

Programmiermethodik Entwurfsmuster SS 2002 Thomas Kühne kuehne@informatik.tu-darmstadt.de http://www.informatik.uni-mannheim.de/informatik/softwaretechnik Warum Entwurfsmuster? Systematischer Softwareentwurf» Dokumentation von Expertenwissen» Verwendung von generischen Lösungen» Erhöhung des Abstraktionsniveaus (QJLQHHULQJ+DQGERRN IRU6RIWZDUH(QJLQHHULQJ Class method Class method Class method &RPSRQHQWV3DWWHUQV DQG3URFHVVHV 1

Was ist ein Entwurfsmuster? Muster erfassen Expertise Angeln Schach Literatur Agrawirtschaft Architektur Software Anekdoten von den Regeln zum Meister älteste Muster Referenz Weisheit vs. Wissenschaft Vorbild für Softwaremuster Architekturmuster Licht von zwei Seiten Fensterplatz Tiefer Balkon 2

Eine Musterdefinition Each pattern describes a problem which 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 this solution a million times over, without ever doing it the same way twice. Christopher Alexander Eine Musterdefinition Kurze Definition Ein Entwurfsmuster beschreibt eine wiederkehrende Lösung zu einem Problem in einem Kontext. 3

Warum Softwaremuster? Der Entwurf von Qualitätssoftware ist schwer Anfänger sind von der Vielzahl der Möglichkeiten überwältigt Experten nutzen ihre Erfahrung» Viele Entwurfslösungen kehren immer wieder Das Verstehen von wiederkehrenden Entwurfslösungen bietet mehrere Vorteile Warum Softwaremuster? Vorteile Qualität Design Reuse Dokumentation Kommunikation Lehre Muster fördern Qualitätsaspekte Entwurfsbausteine Erhöhtes Abstraktionsniveau Entwurfsvokabular Weiterreichen von Kulturgut 4

Warum Softwaremuster? Wisdom is often ascribed to those who can tell just the right story at the right moment and who often have a large number of stories to tell. Robert C. Shank Was ist ein Softwaremuster? erprobte Softwarepraxis Literatur (Erfahrungsbeschreibung) Baustein (für den Entwurf) mögliche Abstraktionsebenen:» Sprachkonstrukt» Idiom» Entwurfsmuster» Architekturmuster (bzgl. Softwarearchitektur) 5

Was ist ein Entwurfsmuster? A methodology tells you how to write down the decisions you have made. A pattern tells you which decisions to make, when and how to make them, and why they are the right Beck & Johnson Beispiel: Template Method oft benutzt in Frameworks abstrakte Klassen» definieren Schnittstellen» enthalten Code Application AddDocument() OpenDocument() DoCreateDocument() CanOpenDocument() MyApplication DoCreateDocument() CanOpenDocument() if (!CanOpenDocument()) { // can not handle }... 6

Beispiel: Template Method Vorteile vermeidet Code- Duplikation separiert invariante (Policy) und variante Teile (Mechanisms) Kontrolle über Unterklassenerweiterungen AbstractClass TemplateMethod() PrimitiveOperation1() PrimitiveOperation2() ConcreteClass PrimitiveOperation1() PrimitiveOperation2()... PrimitiveOperation1() PrimitiveOperation2()... Entwurfsmusterschablone Identifikation» Name» Intent» Also Know As Problembeschreibung (Context)» Motivation (Forces)» Applicability 7

Entwurfsmusterschablone Lösung» Structure» Participants» Collaboration» Consequences (Trade offs)» Implementation» Sample Code Entwurfsmusterschablone Referenzen» Known Uses» Related Patterns 8

Beispiel: Composite Absicht Organisiere Objekte in Baumstrukturen, um Ganzes-Teil (whole-part) Hierarchien zu verwirklichen. "Composite" ermöglicht es Klienten einzelne und zusammengesetzte (Behälter-)Objekte gleich zu behandeln. Composite: Motivation Zeicheneditor: Bilder enthalten Elemente Elemente können gruppiert werden Gruppen können andere Gruppen enthalten.riihu 99 9

Composite: Motivation :Picture :Picture :Rectangle :Text :Text :Line : Rectangle Composite: Motivation Graphic draw() * add g to list of graphics Group forall g in graphics draw() g.draw() add(graphic) remove(graphic) getchild(int) Line draw() Text draw() 10

Composite: Motivation Graphic * draw() add(graphic) remove(graphic) getchild(int) Line Text Picture draw() draw() add g to list of graphics draw() add(graphic) remove(graphic) getchild(int) forall g in graphics g.draw() Composite: Anwendbarkeit Benutze "Composite" falls: Ganzes-Teil Hierarchien repräsentiert werden sollen Klienten in der Lage sein sollen, den Unterschied zwischen Elementen und Behältern zu ignorieren 11

Composite: Struktur Client Component {abstract} + operation() + add (Component c) + remove(component c) + getchild(int I) * Leaf + operation() forall g in children g.operation() Rollennamen Composite + operation() + add (Component c) + remove(component c) + getchild(int I) Dokumentation von Mustern Element printed by abstract Printer {abstract} component Composite Template Method concrete PostScript Printer leaf leaf composite Mustername Picture Text Group Rollenname 12

Composite: Teilnehmer Component» deklariert Schnittstelle / Default-Verhalten Leaf» atomare Elemente / primitives Verhalten Composite» speichert Kinder / Komponentenverhalten Client» benutzt die "Component" Schnittstelle Composite: Kollaborationen Kunden interagieren mit Objekten durch die "Component"-Schittstelle Blätter reagieren direkt Behälter leiten Anfragen and ihre Kinder weiter und fügen möglicherweise "Vorher/Nacher-Operationen" hinzu 13

Composite: Konsequenzen primitive Objekte können rekursiv zusammengesetzt werden Klienten können Behälter und Elemente gleich behandeln es ist leicht neue Komponenten hinzuzufügen Entwurf kann zu allgemein werden (Verschwimmen von Unterschieden) Composite: Implementierung explizite Elt-Verweise Teilen von Komponenten Component-Schnittstelle mit Behälterfunktionalität?» ja, ansonsten wird doch wieder ein Unterschied zwischen Elementen und Behältern deutlich» nein, Elemente können diese Versprechen nicht sinnvoll halten 14

Composite: Beispiel-Code abstract class Equipment { String name() { return name; } abstract int price(); abstract void add(equipment eq); abstract void remove(equipment eq); } private String name; Composite: Beispiel-Code class FloppyDisk extends Equipment { int price() { return 50; } }... 15

Composite: Beispiel-Code class CompositeEquipment extends Equipment { int price() {... for (i=0; i<equipment.length; i++) total += equipment[i].price(); } void add(equipment eq) {...}; void remove(equipment eq) {...}; } private Equipment[] equipment; Composite: Beispiel-Code Chassis.add(new FloppyDisk("3.5in Floppy")); Bus bus = new Bus("PCI Bus"); bus.add(new Card("ATM Network card")); chassis.add(bus); cabinet.add(chassis); System.out.println("Total price: " + cabinet.price() ); 16

Composite: Benutzungen "View"-Klasse von Model/View/Controller Anwendungs-Frameworks & Toolkits» ET++, 1988» Graphics, 1988» Glyphs, 1990» InterViews, 1992 Finanzportfolios Composite: "Related Patterns" Iterator» Enummerieren der Kinder Visitor» besuchen von heterogenen Strukturen Chain of Responsibility Flyweight Decorator 17

Musterexpertise Bewußtseinsstufen: Unschuld Kenntniss einiger Tricks kompetente Trickanwendung Anwendbarkeit & Konsequenzen bekannt weites Wissen über Muster & ihre Interaktion fähig eigenes Wissen literarisch zu fassen ( Musterbeschreibung) Muster mal wörtlich... Aspekte von Entwurfsmustern: Mustererkennung Mustergültig Strickmuster Schnittmuster Ordnungsmuster Verhaltensmuster Entdecken von Wiederauftreten Nachahmen bewährten Entwurfs Anordnung exisitierender Klassen Konstruktionsplan Teilnehmer formen eine Struktur Teilnehmer spielen Rollen 18

Werden Muster erfunden? Entwurfsmuster werden gefunden Aggressive disregard for originality Rule of three Once is an event, twice is an incident, thrice it's a pattern. Jerry Weinberg Entwurfsmuster: "Forces" Kontext Komposition eines Liedes Problem Die Aufmerksamkeit des Zuhörers soll gehalten werden ohne ihn zu überfordern Kräfte Die Zahl der Themen ist kritisch Wenige Themen Zuhörer gelangweilt Viele Themen Zuhörer überfordert 19

Entwurfsmuster: "Forces" Lösung Wiederholung mit Variation A B A BC A B Konsequenzen Zugänglichkeit Aufmerksamkeit Mißbrauch Leichtes Lernen durch Wiederholung Aufwecken durch Variation Abnutzungseffekt möglich Entwurfsmustersprachen Lösung Wiederholung mit Variation A B A BC A B Konsequenzen Zugänglichkeit Aufmerksamkeit Mißbrauch Ergebnis eines Musters setzt den Kontext für das nächste 20

Lösung als neuer Kontext Kontext Komposition eines Liedes nach ABACAB kann langweilig wirken Problem Das neue Thema soll Änderung bringen, soll sich aber einfügen Altes Thema Langeweile Neues Thema Überforderung Lösung Wiederholung eine Note höher Mustersprachen Beruhigte Innenstadt 21

Mustersprachen Beruhigte Innenstadt Satellitenzentren Verkehrsverbund Mustersprachen Beruhigte Innenstadt Satellitenzentren Verkehrsverbund Reihenhaus Studentenkarte 22

Literatur Design Patterns, E. Gamma et al., Pattern-Oriented Software Architecture, Buschmann et. al. Pattern Languages of Program Design, PLoP & EuroPLoP conferences (4 vols.) Patterns Home Page & Mailing List http://hillside.net/patterns patterns-discussion@cs.uiuc.edu Der Wert des Entwurfs If you reuse code, You'll save a load, but if you reuse design, Your future will shine. Ralph E. Johnson. 23