15
Software Patterns und Pattern Languages Johannes Leßmann

Software Patterns und Pattern Languages

  • Upload
    nantai

  • View
    37

  • Download
    0

Embed Size (px)

DESCRIPTION

Software Patterns und Pattern Languages. Johannes Leßmann. Übersicht. Motivation Software Patterns Was ist ein Pattern? Wie ist ein Pattern aufgebaut? Welche Arten von Patterns gibt es? Beispiel Pattern Languages Grundsätzliches Beispiel Fazit. Einleitung. Patterns. - PowerPoint PPT Presentation

Citation preview

Page 1: Software Patterns und  Pattern Languages

Software Patterns und Pattern Languages

Johannes Leßmann

Page 2: Software Patterns und  Pattern Languages

Übersicht

Einleitung

Patterns

Zusammen-fassung

PatternLanguages

• Motivation• Software Patterns

Was ist ein Pattern?Wie ist ein Pattern aufgebaut?Welche Arten von Patterns gibt es?Beispiel

• Pattern LanguagesGrundsätzlichesBeispiel

• Fazit

Page 3: Software Patterns und  Pattern Languages

Motivation

Einleitung

Patterns

Zusammen-fassung

PatternLanguages

If (...) then ...else ...

Design 1oderDesign 2

Entwurf

bla...

Pattern 1

Projekt-besprechungen

Pattern 2Pattern 1

Fertiges System

DfdfdfdfkfidflsdkdfdfdfDokumentation dfdfdfdder Software istdfdf dffffsehr sehr umfang-dfdfffreich und schelchtdf fdfzu verstehen.dfdff fd dfdDarum besser wiedfdffddf dfdfdfd dfdfdf dffd

Seite 700

Pattern 1+Pattern 2

Dokumentation

Page 4: Software Patterns und  Pattern Languages

Was ist ein Pattern?

Einleitung

Patterns

Zusammen-fassung

PatternLanguages

Lösung für Problemsituation, die immer wieder auftritt

• basiert auf bewährter Erfahrung• abstrahiert von nebensächlichen Details• balanciert einzuhaltende Rahmenbedingungen aus• ist keine ad-hoc Lösung

Eine Lösung ist also kein Pattern, wenn sie

• theoretisch entwickelt wurde• nur für eine ganz spezielle Situation anwendbar ist• keine Konflikte auflösen muss• auf den ersten Blick erkennbar ist

Page 5: Software Patterns und  Pattern Languages

Wie ist ein Pattern aufgebaut?

Einleitung

Patterns

Zusammen-fassung

PatternLanguages

Name • Bezeichnung (der Auswirkung) des Patterns• möglichst aufschlussreich

Problem• nennt die spezifische Frage, die das Pattern behandelt• so konkret wie nötig, so abstrakt wie möglich

Kontext• konkrete Situation, in der das Problem zu lösen ist• nicht mit Problem zu verwechseln

Rahmenbedingungen• Faktoren, die es bei Lösungsfindung zu beachten gilt• in aller Regel konfliktär

Page 6: Software Patterns und  Pattern Languages

Wie ist ein Pattern aufgebaut?

Einleitung

Patterns

Zusammen-fassung

PatternLanguages

Lösung• Ausbalancierung der Rahmenbedingungen• sollte auf Problem und Kontext abgestimmt sein

Begründung• erläutert, warum Lösung Rahmenbedingungen auflöst• sollte auch Schwächen nicht verschweigen

Referenzen• Benennung von tatsächlichen Einsatzfällen• mindestens zwei unabhängige Fälle

Verwandte Patterns• Verweis auf Patterns mit ähnlichem Problem/Kontext• auch für Patterns, die gut mit diesem zusammenwirken

Page 7: Software Patterns und  Pattern Languages

Welche Arten von Patterns gibt es?

Einleitung

Patterns

Zusammen-fassung

PatternLanguages

1. Architektur Patterns Grundlegende Struktur eines Softwaresystems Unterteilung der Gesamt- in Teilsysteme (Module) Abstraktionsebene oberhalb konkreter OO-Klassen

Beispiel Web-Applikation

3-Schichten-Architektur (3-Tier-Architecture)

Client-Schicht

Server-Schicht

Daten-Schicht

Page 8: Software Patterns und  Pattern Languages

Welche Arten von Patterns gibt es?

Einleitung

Patterns

Zusammen-fassung

PatternLanguages

2. Design Patterns Design kleiner Teilsysteme Beschreibung auf Basis konkreter OO-Klassen Festlegung der Interaktion zwischen deren Methoden

Beispiel Web-Applikation

Acceptor Pattern zur Ausgestaltung der Server-Schicht

Acceptor

+ accept()+ readRequest()

ServiceHandler

+ handleRequest()

handler

accept()

req = readRequest()

handler.handleRequest(req)

Page 9: Software Patterns und  Pattern Languages

Welche Arten von Patterns gibt es?

Einleitung

Patterns

Zusammen-fassung

PatternLanguages

3. Idioms Techniken auf Programmiersprachen-Ebene Abstraktionsebene unterhalb konkreter OO-Klassen statt Design mehr Implementierung

Beispiel Web-Applikation

Idiom zur Ausgestaltung der Methode accept() des AcceptorswaitForClient()

[interrupt signal set]

terminateThread()

[timeout] [interrupt signal not set][no timeout]

Page 10: Software Patterns und  Pattern Languages

Beispiel eines Design Patterns

Einleitung

Patterns

Zusammen-fassung

PatternLanguages

NameComposite

ProblemWie kann ich Objekte so abbilden, dass sich Einzelobjekte undzusammengesetzte Objekte identisch behandeln lassen?

KontextDie Objekte stehen in einer (rekursiven) „part-of“ oderVater-Kind Beziehung.

Rahmenbedingungen Möglichst universelle Modellierung Flexible Einbeziehung neuartiger Kind-Objekte Berücksichtigung semantischer Einschränkungen Möglichst geringer Overhead durch Abstraktion

Page 11: Software Patterns und  Pattern Languages

Beispiel eines Design Patterns

Einleitung

Patterns

Zusammen-fassung

PatternLanguages

Lösung

Begründung Oberklasse gibt Einzel- und „Composite“ Objekten gleiches Interface Design sehr universell und offen für neue Arten von Kind-Objekten Overhead beschränkt auf zusätzliche explizite Type Casts Semantische Einschränkungen können schwer berücksichtigt werden

ReferenzenEinsatz u.a. in ET++, Smalltalk compiler framework

Verwandte PatternsChain of Responsibility, Decorator, Iterator, Visitor

Component

+ Operation()+ Add(Component)+ Remove(Component)+ GetChild(int)

Leaf

+ Operation()

Composite

+ Operation()+ Add(Component)+ Remove(Component)+ GetChild(int)

0..1

0..*

children

Page 12: Software Patterns und  Pattern Languages

Pattern Languages

Einleitung

Patterns

Zusammen-fassung

PatternLanguages

Zusammenstellung von Patterns, wobei

•die Patterns ein gemeinsames Problem lösen•das Problem für ein einzelnes Pattern zu komplex ist•jedes Pattern einen Teil des Gesamtproblems löst•die Patterns starke Abhängigkeiten untereinander haben

Pattern 1

Pattern 2

Pattern 4

Pattern Kollektion

Pattern 1

Pattern 2 Pattern 3

Pattern 4

Pattern 3

Pattern Language

Page 13: Software Patterns und  Pattern Languages

Beispiel einer Pattern Language

Einleitung

Patterns

Zusammen-fassung

PatternLanguages

NameComposing Multimedia Artefacts for Reuse

GesamtproblemWie kann man Multimediasysteme so entwerfen, dass derenKomponenten wiederverwendbar bleiben?

GesamtkontextEs stehen bereits die notwendigen Komponenten zur Verfügung.Durch die Einbindung in das Multimediasystem sollen sie nichtabhängig voneinander werden.

besteht aus 5 Patterns, die jeweils Teilaspekte behandeln

Page 14: Software Patterns und  Pattern Languages

Beispiel einer Pattern Language

Einleitung

Patterns

Zusammen-fassung

PatternLanguages

Glue

Template

Define and Run Presentation

Synchronise Channels

Components Layout

SynchronisiertKanäle

Synchronisationmittels

Gruppierung zu Kanälenund partielle Ordnungmittels

Arrangement der Artefaktemittels

Zeigt an Definiert Layoutfür

Page 15: Software Patterns und  Pattern Languages

Zusammenfassung

Einleitung

Patterns

Zusammen-fassung

PatternLanguages

Patterns sind bewährte Lösungen für einzelne Bereiche Sie müssen auf die aktuelle Situation zugeschnitten werden Es gibt Architektur Patterns, Design Patterns und Idioms Patterns können den gesamten Entwurfsprozess

vereinfachen und verkürzen

Eine Pattern Language ist eine Menge von Patterns, die an einem gemeinsamen Problem arbeiten

Die einzelnen Patterns sind voneinander abhängig