Design Pattern. Dr.-Ing. Dipl.-Wirt. Ing. Diethelm Bienhaus Berufsakademie Nordhessen



Ähnliche Dokumente
Daniel Warneke Ein Vortrag im Rahmen des Proseminars Software Pioneers

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

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

Handbuch. Artologik EZ-Equip. Plug-in für EZbooking version 3.2. Artisan Global Software

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

Software Engineering

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

Software-Entwurfsmuster

Übungen zu Softwaretechnik

REQUIREMENTS ENGINEERING KONSTRUKTIVE QS REQUIREMENTS ENGINEERING 1

Use Cases. Use Cases

Übungen zur Softwaretechnik

arlanis Software AG SOA Architektonische und technische Grundlagen Andreas Holubek

Übungsklausur vom 7. Dez. 2007

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Daten haben wir reichlich! The unbelievable Machine Company 1

Cloud Architektur Workshop

Objektorientiertes Software-Engineering

Geld Verdienen im Internet leicht gemacht

Lassen Sie sich dieses sensationelle Projekt Schritt für Schritt erklären:

Copyright 2014 Delta Software Technology GmbH. All Rights reserved.

2. ERSTELLEN VON APPS MIT DEM ADT PLUGIN VON ECLIPSE

Refaktorisierung des Eclipse- Plugins Saros für die Portierung auf andere IDEs. Verteidigung der Bachelorarbeit von Arndt Tigges

Some Software Engineering Principles

Ist Fernsehen schädlich für die eigene Meinung oder fördert es unabhängig zu denken?

Erfolgreiche Realisierung von grossen Softwareprojekten

Studieren- Erklärungen und Tipps

Agiles Design. Dr.-Ing. Uwe Doetzkies Gesellschaft für Informatik mail:

Emergency Room für Projektleiter

Das große ElterngeldPlus 1x1. Alles über das ElterngeldPlus. Wer kann ElterngeldPlus beantragen? ElterngeldPlus verstehen ein paar einleitende Fakten

Zahlenwinkel: Forscherkarte 1. alleine. Zahlenwinkel: Forschertipp 1

RT Request Tracker. Benutzerhandbuch V2.0. Inhalte

Workflow, Business Process Management, 4.Teil

Woche 1: Was ist NLP? Die Geschichte des NLP.

Tess TeSign nutzen mit App's"! iphone und Bria Informationen zur Nutzung

Der Tag hat 24 Stunden. Bitte schreibt in die linke Spalte alles auf, was ihr gestern getan habt und euch noch einfällt: War es ein stressiger

Ideation-Day Fit für Innovation

CONTINUOUS LEARNING. Agile Anforderungsanalyse mit Impact Mapping

Sich einen eigenen Blog anzulegen, ist gar nicht so schwer. Es gibt verschiedene Anbieter. ist einer davon.

Zwischenablage (Bilder, Texte,...)

Das Pflichtenheft. Dipl.- Ing. Dipl.-Informatiker Dieter Klapproth Ains A-Systemhaus GmbH Berlin

Anleitung über den Umgang mit Schildern

Eva Douma: Die Vorteile und Nachteile der Ökonomisierung in der Sozialen Arbeit

Kapitel 2: Der Software-Entwicklungsprozess

Auswahl alter Klausuraufgaben aus einer ähnlichen Vorlesung Maßgeblich für die Prüfung sind die Vorlesungsinhalte!

Übung: Verwendung von Java-Threads

Facebook I-Frame Tabs mit Papoo Plugin erstellen und verwalten

KVIrc installieren (win) i. KVIrc installieren (win)

ZfP-Sonderpreis der DGZfP beim Regionalwettbewerb Jugend forscht BREMERHAVEN. Der Zauberwürfel-Roboter. Paul Giese. Schule: Wilhelm-Raabe-Schule

Prozessbewertung und -verbesserung nach ITIL im Kontext des betrieblichen Informationsmanagements. von Stephanie Wilke am

Outlook Vorlagen/Templates

Referenzarchitekturmodell Industrie 4.0 (RAMI 4.0) Eine Einführung

Online bezahlen mit e-rechnung

Content Management System mit INTREXX 2002.

Teambildung. 1 Einleitung. 2 Messen der Produktivität

Unterrichtsmaterialien in digitaler und in gedruckter Form. Auszug aus:

SEP 114. Design by Contract

Erstellen einer Collage. Zuerst ein leeres Dokument erzeugen, auf dem alle anderen Bilder zusammengefügt werden sollen (über [Datei] > [Neu])

Diese Ansicht erhalten Sie nach der erfolgreichen Anmeldung bei Wordpress.

Einrichtung des WS_FTP95 LE

Installation OMNIKEY 3121 USB

Analyse und Modellierung von Informationssystemen

Dominik Stockem Datenschutzbeauftragter Microsoft Deutschland GmbH

Analyse und Modellierung von Informationssystemen

Fachhochschule Südwestfalen Hochschule für Technik und Wirtschaft. richtung weisend

Klausur Software Engineering für WI (EuI)

Im Prüfungsteil Mündlicher Ausdruck sollen Sie zeigen, wie gut Sie Deutsch sprechen.

How to do? Projekte - Zeiterfassung

Informationsblatt Induktionsbeweis

Das System sollte den Benutzer immer auf dem Laufenden halten, indem es angemessenes Feedback in einer angemessenen Zeit liefert.

Agile Software Entwicklung. Agile Software Entwicklung, DHBW Karlsruhe, SS-2009 Collin Rogowski

Informationssystemanalyse Problemstellung 2 1. Trotz aller Methoden, Techniken usw. zeigen Untersuchungen sehr negative Ergebnisse:

Statuten in leichter Sprache

Konsolidierung und Neuimplementierung von VIT. Aufgabenbeschreibung für das Software Engineering Praktikum an der TU Darmstadt

Grundzüge der Programmierung. Konzepte der objektorientierten Programmierung (oop) OBJEKTE - KLASSEN

Phasen. Gliederung. Rational Unified Process

Otto-von-Guericke-Universität Magdeburg

Robot Karol für Delphi

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

SMART Newsletter Education Solutions April 2015

Informationswirtschaft II Rational Unified Process (RUP)

Informationswirtschaft II

Muster. Selbstverantwortliches Lernen. für. Eine Mustersprache für die Waldorfpädagogik?

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER

GRS SIGNUM Product-Lifecycle-Management

ERP-Evaluation systematisch und sicher zum optimalen ERP-System

Primzahlen und RSA-Verschlüsselung

Bei der Focus Methode handelt es sich um eine Analyse-Methode die der Erkennung und Abstellung von Fehlerzuständen dient.

MobiDM-App Handbuch für Windows Mobile

Einführung in die Informatik

Kapitel 1 Applikations-Architektur VI

GPP Projekte gemeinsam zum Erfolg führen

Product Line Engineering (PLE)

facebook wie geht das eigentlich? Und was ist überhaupt Social media?

IT-Unternehmensarchitektur Übung 01: IT-Strategie

Produktionsplanung und steuerung (SS 2011)

Einführung in die Informatik

Wie man Registrationen und Styles von Style/Registration Floppy Disketten auf die TYROS-Festplatte kopieren kann.

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

Anlegen eines DLRG Accounts

Transkript:

Design Pattern Universität Kassel FB 16 Elektrotechnik / Informatik WS 2005 / 06 Dr.-Ing. Dipl.-Wirt. Ing. Diethelm Bienhaus Berufsakademie Nordhessen Teil I / 1

Aus der Vorlesungsankündigung Software-Entwurf ist eine anspruchsvolle Tätigkeit und erfordert Erfahrungen. Qualitativ-hochwertige und wiederverwendbare Software zu erstellen ist schwer. Die Idee von "Design Pattern" (dt. Entwurfsmuster) ist es, Erfahrungen von Experten zu sammeln und so darzustellen, dass diese leicht auf neue Aufgaben übertragen werden können. Die Idee stammt ursprünglich aus der Architektur und geht vor allem auf den Architekten Christopher Alexander zurück. Die Entwurfsmuster von Alexander präsentieren Lösungen für den Entwurf von Häusern und Städten. Entwurfsmuster im Software-Engineering zeigen bewährte Lösungen für die Konstruktion von Software. Inhalt dieser Vorlesung sind Grundlagen und eine Übersicht der verschiedenen Entwurfsmuster-Ansätze. Eine Reihe von Entwurfsmustern für die Softwarekonstruktion werden vorgestellt und es wird dargelegt, wie die jeweiligen Muster einzeln und vor allem als "Mustersprache" helfen, Software flexibler und vor allem wiederverwendbar zu erstellen. Teil I / 2

Übersicht Teil I: Einleitung / Motivation / Begriffsbestimmungen Teil II: Klassifikation und Struktur Teil III: Design Pattern in der OOP Teil IV: Design Pattern für Verteilte Systeme Teil V: Pattern in Java Teil VI: Design Pattern in HCI / Pattern Language Markup Language Teil I / 3

Literatur Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides: Entwurfsmuster. Elemente wiederverwendbarer objektorientierter Software. Addison Wesley, Bonn 1996 ISBN 3-89319-950-0 Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides: Design Patterns. Elements of Reusable Object- Oriented Software. Addison Wesley, 1995 ISBN 0-201-63361-2 James O. Coplien: Advanced C++ Programming Styles and Idioms. Addison Wesley, 1991 ISBN 0-2015-4855-0 Christopher Alexander, Sara Ishikawa, Murray Silverstein, Max Jacobson, Ingrid Fiksfahl-King, Shlomo Angel: Eine Muster-Sprache. Städte, Gebäude, Konstruktion. Lücker, Wien 1995 ISBN 3-85409-179-6 Frank Buschmann, Regine Meunier, Hans Rohnert, Peter Sommerlad, Michael Stal: Pattern-orientierte Softwarearchitektur. Ein Pattern-System. Addison-Wesley-Longman, Bonn 1998 ISBN 3-8273-1282-5 Douglas Schmidt, Michael Stal, Hans Rohnert, Frank Buschmann: Pattern-orientierte Softwarearchitektur. Muster für nebenläufige und vernetzte Objekte. dpunkt, Heidelberg 2002 ISBN 3-89864-142-2 Jan Borchers: A Pattern Approach to Interaction Design. John Wiley & Sons, Chichester 2001 ISBN 0-471- 49828-9 Teil I / 4

Motivation Teil I / 5

Semiotische Leiter / Treppe Soziale Welt: Erwartungen, Annahmen, Gesetze Wissen Pragmatik: Intentionen, Kommunikation Daten Semantik: Bedeutung, Kontext, Validität Syntax: Daten, Grammatik, Logik Physische Welt: Signale, Naturgesetze Teil I / 6

Semiotisches ISO-Modell Soziale Welt: Erwartungen, Annahmen, Gesetze Soziale Welt: Erwartungen, Annahmen, Gesetze Pragmatik: Intentionen, Kommunikation Pragmatik: Intentionen, Kommunikation Semantik: Bedeutung, Kontext, Validität Semantik: Bedeutung, Kontext, Validität Syntax: Daten, Grammatik, Logik Syntax: Daten, Grammatik, Logik Physische Welt: Signale, Naturgesetze Teil I / 7

Wissensmanagement und Tacit Knowledge Projekterfolg nicht nur von harten Fakten abhängig! Wissensträger!= Datenträger Wichtige Faktoren Kommunikation: wie gemeinsames Verständnis? Erfahrungen: wie weitergeben? Wissensbewahrung: was passiert, wenn Mitarbeiter das Projekt- Team verlassen? Teil I / 8

Systems / Software Engineering Systems Engineering is a robust approach to the design, creation and operation of systems. (NASA SE Handbook) Software Engineering: The systematic approach to the development operation, maintenance, and requirement of software. s(ieee Standard Glossary of Software Engineering Technology) Teil I / 9

Software Engineering Ingenieurmäßiges Vorgehen für die Entwicklung von großen Software Systemen / Produkten Große SW-Systeme Domain-spezifische Software Business-Anwendungen Industrie Notwendigkeit von Koordination der Beteiligten Definiertes Vorgehen (also: Modell) Projekt- / Qualitätsmanagement Teil I / 10

Produkt-Entwicklung Gliederung der in Phasen Requirements Engineering Analyse Design Implementierung Test Betrieb Wartung (80% der Kosten während Produktlebenszyklus) Wohldefinierte Phasenabfolgen und Artefakte Wasserfall -Modell Iterative und inkrementelle Modelle? Erfahrungswissen von hoher Bedeutung Einsatzgeiete für Design Pattern Teil I / 11

1. Beispiel eines Vorgehensmodells Wasserfall Machbarkeits-/ Durchführbarkeitsstudie Anforderungsanalyse Entwurf (Design) Implementierung &Modultest Integration & Systemtest Installation & Wartung Teil I / 12

2. Beispiel eines Vorgehensmodells Spiralmodell nach Boehm Teil I / 13

Begriffsbestimmungen Teil I / 14

Was ist... Design Pattern Pattern Language (Software) Design Pattern (Software)... Pattern (Software) Pattern Language / Catalogue Software Qualität Quality without a Name QWAN Teil I / 15

Design Design [IEEE-Std-610.12-1990][Taylor1959]: (1) The process of defining the architecture, components, interfaces, and other characteristics of a system or component. (2) The result of the process in (1). The process of applying various techniques and principles for the purpose of defining a device, a process or a system in sufficient detail to permit its physical realization. Design description [IEEE-Std-610.12-1990]: A document that describes the design of a system or component. Typical contents include system or component architecture, control logic, data structures, input/output-formats, interface descriptions, and algorithms.. Teil I / 16

Pattern 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. [AIS+77] "Jedes Muster beschreibt ein Problem, das in unserer Arbeitsumgebung immer und immer wieder auftaucht, und dann beschreibt es den Kern einer Lösung dieses Problems so, dass man diese Lösung tausendfach einsetzen kann, ohne das Problem zweimal in identischer Weise gelöst zu haben." Teil I / 17

Pattern als Relation Eachpatternisa three-partrule, whichexpressesa relationshipbetweena certaincontext, a problem, and a solution. [AIS+77] Kontext Problem Lösung Teil I / 18

Kern-Elemente eines Pattern Name charakterisiert das Problem-Lösungs-Paar soll einprägsam sein, dient der Kommunikation Problem welches Problem tritt wann und unter welchen Umständen und mit welchen Trade-Offs auf spannt System von Kräften auf, die gegeneinander wirken Lösung beschreibt generisch die Lösung des Problems Konsequenzen bewerten, was sich aus dem Einsatz dieses Patterns ergibt resultierende Vor- und Nachteile / Kosten-Nutzen-Faktoren Teil I / 19

Alexandrian Form: Strukturierte Prosa Name: Ein Ort zum Warten Kontext: Situation, bei der Personen auf etwas warten müssen (z.b. eine Artzpraxis) Kräfte: a) Die Patienten müssen anwesend sein, wenn der Arzt bereit ist, sie zu empfangen b) Die Zeit, bis der Arzt bereit sein wird, ist ungewiß Lösung: Es sollten auch Personen im Wartebreichanwesend sein, die nicht dort sind, um auf etwas zu warten. Das nimmt die Anspannung von den Wartenden und normalisiert die Situation. (Ein Krankenhaus hat z.b. einen Kinderspiel-spielplatz, der gleichzeitig Wartebereich für den Kinderarzt ist.) Teil I / 20

Beispiele von Christopher Alexander Licht von zwei Seiten Türen in den Ecken Teil I / 21

Pattern Language Begriff Sprache stammt von Chr. Alexander [AIS+95] Pattern stehen in einem engen Zusammenhang: sie lösen Probleme in einem bestimmten Kontext (z.b. Architektur) Abfolge der Anwendung der einzelnen Pattern führt zu umfassenderen Gesamtlösungen Teil I / 22

James O. Coplien zu Patter Language A pattern language is a structured collection of patterns that build on each other to transform needs and constraints into an architecture. It is not a programming language in any ordinary sense of the term, but is a prose document whose purpose is to guide and inform the designer. Patterns rarely stand alone. Each pattern works on a context, and transforms the system in that context to produce a new system in a new context. New problems arise in the new system and context, and the next layer of patterns can be applied. Teil I / 23

Pattern Language : Menge miteinander verbundener Muster In this network, the links between the patterns are almost as much a part of the language as the patterns themselves. (Chr. Alexander) Gesprochene Sprache = Worte + grammat./semant. Beziehungen Mustersprache = Muster + Beziehungen der Muster untereinander Teil I / 24

Beispiel HCI-Pattern von Jan Borchers http://www.hcipatterns.org/patterns/borchers/patternindex.html Teil I / 25

Software Design Pattern The description of communicating objects and classes customized to solve general design problem in a particular context. Each design pattern lets some aspect of system structure vary independently of other aspects, thereby making a system more robust to a particular kind of change. [GHJV95] Teil I / 26

Kleine Geschichte der SW Design Pattern 1987: W. Cunningham und K. Beck greifen Chr. Alexanders Ideen auf bei der Entwicklung einer Mustersprache für Smalltalk 1990: Gang of Four (Gamma/Helm/Johnson/Vlissides) starten mit der Zusammenstellung eines Design Pattern Katalogs 1991: erster Pattern Workshop auf der OOPSLA 1993: K. Beck und G. Booch initiirenn erstes Treffen der Pattern Community -> Hillside Group 1994: Erste Pattern Languages of Programs (PLoP) Konferenz 1995: Gang of Four (GoF) veröffentlichen ihr Design Pattern Buch [GHJV95] 1996: Siemens Pattern Book [BMR+96] seit dem... mehrere PloPs: z.b.: EuroPLoP bei München zahlreiche Veröffentlichungen, Bücher,... Teil I / 27

Motivation aus Sicht der OO Software Entwicklung "Designing object-oriented software is hard and designing reusable object-oriented software is even harder." - Erich Gamma Erfahrene SW-Entwickler verwenden Lösungen, die bislang funktionierten Aber: Oft Erfahrungen, nicht unbedingt in den Lehrbüchern zu finden! In gut strukturierten OO SW Systemen lassen sich wiederkehrende Muster von Klassen bzw. Objekt- Strukturen finden Reuse of Knowledge Wiederverwendung bewährter Lösungen verspricht höhere Qualität, Produktivität, Flexibilität Teil I / 28

Elemente eines Software Design Pattern Kern-Elemente plus weitere Elemente Verfeinerungen es existieren eine Reihe von Templates viele Autoren entwickelten eigene Templates Templates je nach Einsatzbereich unterschiedlich bestimmte Strukturen fanden weitere Verbreitung: z.b.: POSA -Style nach Pattern-oriented Software Architecture [BMR+97] u.a. Versuche der Vereinheitlichung PLML: Pattern Language Markup Language Teil I / 29

Software... Pattern Kernaktivitäten Requirements Engineering* Analyse*** Design*** Implementierung*** Test Betrieb/Wartung Begleitende Kernaktivitäten Organisation*** Prozess* Projekt Management Konfigurations-Mgmt. Qualitäts-Mgmt.... Usability* / HCI** Ausbildung / Lehre** ***: stark verbreitet in Forschung, Lehre, **: in Forschung, *: geringe Verbreitung Teil I / 30

(Software) Pattern Languages / Catalogues Katalog Systematische Sammlung von Pattern Kriterien für die Klassifikation SW Pattern Language Gemeinsamer, übergreifender Kontext Interdependenzen zwischen den Pattern Pattern Sequences Anwenden eines Pattern resultiert in einer Situation, die die Anwendung eines oder mehrerer bestimmter anderer Pattern nach sich zieht (-> Pfade auf dem Pattern- Zusammenhangsgraphen) z.b. Web Usability WU Teil I / 31

Software Qualität Korrektheit Zuverlässigkeit Robustheit Vertrauenswürdigkeit Effizienz Benutzungsfreundlichkeit Wiederverwendbarkeit Wartbarkeit Portierbarkeit Kompartibilität Interoperabilität Teil I / 32

Quality without a Name QWAN Ursprung: Chr. Alexander, Salingaros Aspekte von Ästhetik, Leben, Harmonie, Ganzheit, Freiheit Ideele Verwandschaft und Anleihen Zen Buddhismus, Taoismus, Platonischen Ideenlehre Kritik von Chr. Alexander contemporary methods fail to generate products that satisfy the true requirements placed upon them by individuals and society, and fail to meet the real demands of real users, and ultimately fail in the basic requirement that design and engineering improve the human condition (nach Doug Lea) Teil I / 33

QWAN Problemstellung Inability to balance individual, group, societal, and ecological needs. Lack of purpose, order, and human scale. Aesthetic and functional failure in adapting to local physical and social environments. Development of materials and standardized components that are ill suited for use in any specific application. Creation of artifacts that people do not like. Partielle Synonyme nach Chr. Alexander freedom, life, wholeness, comfortability, and harmony Aber: QWAN ist alles zusammen und noch mehr! Teil I / 34

Zur Motivation: eine kleine Trocken-Übung Durchzählen 1,2,3 -> drei Gruppen erste(r) jeder Gruppe ( Info-Broker ) erhält zu irgendeinem Zeitpunkt einen Zettel mit der einer Information Ziel: gewonnen hat die Gruppe, die zuerst über die neue Information in Kenntnis gesetzt ist Randbedingungen: Info-Broker antworten nur auf Fragen einzelner Gruppenmitglieder jedes Gruppenmitglied müss selbst fragen, um die Information zu erhalten es können auch Hacker-Angriffe erfolgen: anfragen an den Broker einer anderen Gruppe Teil I / 35

Ergebnisse? Wie erfolgreich war das Propagieren der Information? Wie sicher fand der Nachrichtenaustausch statt? Wie effizient war der Nachrichtenaustausch?... und jetzt Sie! Wie könnte der Nachrichtenaustausch effizienter, sicherer und besser durchgeführt werden? Teil I / 36

Idee zur Lösung Lernen von bewährten Lösungen Zeitungsabonnement: Wenn neue Zeitung vorhanden, dann erhalte ich diese automatisch. Übertragen auf OO Software ein Objekt ist verantwortlich, eine Liste aller interessierten Objekte zu verwalten diese über Neuigkeiten zu informieren (call-back) die anderen Objekte melden sich bei der Zentrale an stellen Schnittstelle für Änderungs-Benachrichtigung bereit Teil I / 37

... und dies nun als Trocken-Übung die Info-Broker führen eine Liste Gruppenmitglieder teilen ihrem Broker ihren Namen mit bei Vorliegen einer Information ruft der Broker jedes Mitglied auf und teilt ihm die Information mit Teil I / 38

Als Entwurfsmuster: Observer bzw. Publisher-Subscriber Quelle: [GHJ+96] Teil I / 39

Umsetzungsvariante 1 Teil I / 40

Umsetzungsvariante 2 Teil I / 41

Literatur AIS+95 Christopher Alexander and Sara Ishikawa and Murray Silverstein and Max Fiksdahl-King and Shlomo Angel, Eine Muster-Sprache. Städte, Gebäude, Konstruktion, 1995 Bie00 Diethelm Bienhaus, Entwurfmusterorientierter Ansatz zur einfacheren Realisierung verteilter Systeme, 2000 BMR+96 Frank Buschmann and Regine Meunier and Hans Rohnert and Peter Sommerlad and Michael Stal, Pattern-orientierte Softwarearchitektur. Ein Pattern-System, 1998 Bor01 Jan Borchers, A Pattern Approach to Interaction Design, 2001 Cop91 James O. Coplien, Advanced C++ Programming Styles and Idioms, 1991 GHJ+95 Erich Gamma and Richard Helm and Ralph Johnson and John Vlissides, Design Patterns. Elements of Reusable Object-Oriented Software, 1995 GHJ+96 Erich Gamma and Richard Helm and Ralph Johnson and John Vlissides, Entwurfsmuster. Elemente wiederverwendbarer objektorientierter Software, 1996 SSRB02 Douglas Schmidt and Michael Stal and Hans Rohnert and Frank Buschmann, Patternorientierte Softwarearchitektur. Muster für nebenläufige und vernetzte Objekte, 2002 Teil I / 42