Entwurfsmuster Springer-Verlag Berlin Heidelberg GmbH Klaus Quibeldey-Cirkel Entwurfsmuster Design Patterns in der objektorientierten Softwaretechnik Mit 47 Abbildungen Springer Klaus Quibeldey-Cirkel Universität Siegen Technische Informatik Hölderlinstraße 3, D-57068 Siegen Die Deutsche Bibliothek - GP-Einheitsaufnahme Entwurfs muster [Medienkombination]: Design-Patterns in der objektorientierten Softwaretechnik/Klaus Quibeldey-Cirkel. - Springer-Verlag Berlin Heidelberg GmbH Buch. 1999 CD-ROM. 1999 ISBN 978-3-642-63632-5 ISBN 978-3-642-58527-2 (eBook) DOI 10.1007/978-3-642-58527-2 Additional material to this book can be downloaded from http://extra.springer.com. Dieses Werk besteht aus Buch und CD-ROM und ist urheberrechtlich geschützt. Die dadurch begründeten Rechte, insbesondere die der Übersetzung, des Nachdrucks, des Vortrags, der Ent nahme von Abbildungen und Tabellen, der Funksendung, der Mikroverfilmung oder der Vervielfälti gung auf anderen Wegen und der Speicherung in Datenverarbeitungsanlagen,bleiben,auch be niur auszugsweiser Verwertung, vorbehalten. Eine Vervielfältigung dieses Werkes oder von Teilen dieses Werkes ist auch mi Einzelfall nur in den Grenzen der gesetzlichen Bestimmungen des Ur heberrechtsgesetzes der Bundesrepublik Deutschland vom 9. September 1965 in der jeweils geltenden Fassung zulässig. Sie ist grundsätzlich vergütungspflichtig. Zuwiderhandlungen unterlie gen den Strafbestimmungen des Urheberrechtsgesetzes. Der Springer-Verlag ist nicht Urheber der Daten und Programme W. eder der Springer-Verlag noch der Autor übernehmen Haftung für die CD-ROM und das Buch, einschließlich ihrer Qualität, Handels- oder Anwendungseignung. In keinem Fall übernehmen der Springer-Verlag oder der Autor Haftung für direkte, indirekte,zufällige oder Folgeschäden, die sich aus der Nutzung der CD- ROM oder des Buches ergeben. © Springer-Verlag Berlin Heidelberg 1999 Ursprünglich erschienen bei Springer-Verlag Berlni Heidelberg New York 1999 Softcover reprint of the hardcover 1st edition 1999 Die Wiedergabe von Gebrauchsnamen, Handelsnamen, Warenbezeichnungen usw. in diesem Werk berechtigt auch ohne besondere Kennzeichnung nicht zu der Annahme, daß solche Namen im Sinne der Warenzeichen- und Markenschutz-Gesetzgebung als frei zu betrachten wären und daher von jedermann benutzt werden dürften. Umschlaggestaltung: Künkel + Lopka Werbeagentur, Heidelberg Satz: Satzerstellung durch den Autor SPIN 10721535 33/3142 - 5 4 3 2 1 0 - Gedruckt auf säurefreiem Papier Danksagung Mein Dank gilt ... an die Fachgemeinschaft • den Kollegen und Wegbegleitern: Georg Odenthal für sein Engagement und seine Beiträge sowie Walter Lang für seine Textkritik, • den Pattern-Aktivisten: Erich Gamma, Frank Buschmann, Dirk Riehle und Jens Coldewey für ihre Daten und Diskussionen sowie • dem Kenner der amerikanischen Schreib kultur: Gerd Bräuer, Emory University, Atlanta, für seine Durchsicht und Quellenhinweise. Das Buch stimmt im wesentlichen mit meiner Habilitationsschrift überein; als Gutachter konnte ich die Universitätsprofessoren Hans Wojtkowiak und Heinz Züllighoven gewinnen. Für ihre Unterstützung und Kritik bedanke ich mich sehr. Dank gebührt auch den Korrekturlesern der Buchfassung: Andre Berten und Hans Peter Kunz. Zuletzt, und doch an erster Stelle, danke ich meiner Familie für die geborgte ... an Gabi mit Zeit. Laura, Linda, Lotta & Lasse Marburg, im Frühling 1999 Klaus Quibeldey-Cirkel Universität Siegen Fachbereich Elektrotechnik und Informatik 0-57068 Siegen E-Mail: [email protected] Homepage: www.ti.et-inf.uni-siegen.de/staff/ quibeldey /uebermich.html FTP-Server: ftp.ti.et-inf.uni-siegen.de v Umschlag 5 oftware-S trukturen in drei Auflösungen 1. Punktdiagramm: Es visualisiert ein C-Programm aus 3.400 Zeilen -: • "" '11 • [Church & Helfman, 1993]. Könnte manl hineinzoomen, sähe man , "'. '~J ,'.' den Quelltext zeilenweise aufgereiht wie Perlen auf der Schnur: am oberen Rand von links nach rechts und am linken Rand von oben nach unten. Ein Punkt ~,J) zeigt, daß die i-te Programmzeile mit der j-ten übereinstimmt; einige Punktmengen bilden "selbstähnliche" Strukturen, siehe Seite 19. 2. Klassendiagramm: Es beschreibt ein gleich langes C++-Programm [Odenthai & Quibeldey-Cirke~ 1996]. Vererbungs-, Aggregations und Botschaftslinien verknüpfen 30 Klassen, siehe Seite 122. 3. Musterdiagramm: Es umgrenzt die Klassen, die ein Entwurfsmuster nach [Gamma et al., 1995] ausprägen. Hier sind es 7 Ausprägungen der Muster F ACADE, SINGLETON, OB SERVER, COMPOSITE und PROXY. Die Beschreibungskomplexität verringert sich somit von 3.400 über 30 auf 7 Software-Strukturen. Eine Fußnote zum Genus der Buchakteure: Die Motive der Frauenbewegung, Einfluß auf die Sprache zu gewinnen, sind sicher ehrenwert; doch erbitterte Emanzipation würde unsere Sprache belasten - "mit kaum erträglicher Um ständlichkeit und oft lächerlichem Klang", wie Wolf Schneider in seiner Stil kunde betont [Schneider, 1988]. "Das Wörtchen man ist als maskulin entlarvt und soll durch man/frau oder durch mensch ersetzt werden ... Da der Mann so gar in jemand und niemand steckt - sollen wir niefrau oder niemensch sagen?" vi Problem - Kontext - Kräfte - Lösung Ein guter Compiler ist in der Sprache geschrieben, die er übersetzen soll. In Literarisches Selbstanwendung des Musterkonzeptes schreibe ich also das Vorwort zum Bootstrapping Thema in der Musteiform. Mustcrform Problem Die Hauptfragen dieses Buches sind methodische und didaktische der Software technik; ab einer gewissen Entwurfskomplexität (Entwurf als Prozeß und Produkt verstanden, Komplexität jenseits von hundert vernetzten Modulen) werden Entwerfer und Anwender vor Lehr- und Lernprobleme gestellt • Erfahrung ist erprobtes Wissen, sie setzt das Erlebnis voraus; Entwer- Transfer und fen in der Industrie läßt dies aber nicht zu: Im Sog neuer Techniken Wiederverwendung und kurzlebiger Märkte bleibt dem Entwerfer keine Zeit, um das von Erfahrungswissen Versuch-und-Irrtum-Prinzip auszuleben. Die Frage heißt Wie kann der Unerfahrene aus der Erfahrung des Experten lernen? Metho- den- und Faktenwissen allein genügen nicht, umproduktiv zu werden. Umgekehrt: Wie kann der Experte seine Erfahrungen vermitteln - eingängig und in kürzester Zeit? vii Vorwort Orientierung • WiedervefWendung ist die Maxime für die schnelle Markteinführung ei in fremden Entwürfen nes Entwurfs; Wiederverwendung im großen Stil erlauben objektori entierte Frameworks, das sind anpaßbare Systemkomponenten: Soft ware-Halbfabrikate im allgemeinen, Komplettlösungen im Einzel fall.2 Wiederverwendet werden hier sowohl der Programmcode als auch der Entwurf, der einer Familie von Anwendungen gemeinsam ist. Somit ist der Aufwand, um eine Anwendung aus einem Standard Framework zu entwickeln, deutlich geringer als für eine Eigenent wicklung. Die Komplexität heutiger Frameworks, meist einige hun dert Klassen und Kommunikationspfade, erschwert indes das Fin den und Verstehen der Anpassungsstellen. Die Frage lautet: Wie kommt der Anwendungsprogrammierer zum notwendigen Architek turverständnis?Wie findet er sich rasch zurecht im fremden Entwurf? Entwurf und • Objektorientierte Frameworks erfüllen am wirtschaftlichsten den Dokumentation Wiederverwendungs-Anspruch; sie sind aber auch schwierig zu ent komplexer Komponenten werfen: Wie kann der Entwerfer die Anpassungsstellen flexibel ge stalten? Wie dokumentiert er die variablen und die festen Aspekte sei nes Frameworks? Verallgemeinert handelt es sich hier um die alten Leiden des Software-Entwerfers, der sich im Wirrwarr seiner oder fremder Unterlagen zurechtfinden muß, um Entwurfsentscheidun gen in der Software-Architektur zu revidieren. Kontext Das Problem steht im Mittelpunkt des Erfahrungsaustausches im GI-Ar beitskreis "Frameworks & Entwurfsmuster". 3 Dieser setzt sich großenteils aus industriellen Framework-Entwicklern zusammen; dort bin ich zuständig für das Thema Entwurfsmuster. Der technische Kontext des Buches deckt sich mit den Fragen des Arbeitskreises; zwei Projekte bilden die Basis: 2 Die Übersetzung "Rahmen" ist selten; gemeint sind Software-Infrastruktur:en, die der Anwender für seinen Zweck um einzelne Funktionen erweitert. 3 http://www.uni-paderborn.de/cs/ag-engels/ag...dt/GI/gi-fg219.htm viii Problem - Kontext - Kräfte - Lösung 1. ein Evaluierungsprojekt mit der SAP AG, Walldorf Forschung und Praxis Thema: Entwurf und Implementierung einer Schnittstelle zwi schen dem SAP-R/3 Business Object Repository und der Open Scripting Architecture [Odenthai & Quibeldey Cirke~ 1996] Problem: Entwerfen und Dokumentieren mit Entwurfsmustern 2. ein Kooperationsprojekt mit der Fachhochschule Konstanz Thema: H1ML-basierte Softwaredokumentation mit Entwurfs mustern [Blachnik, 1997] Problem: Entwurf eines werkzeuggestützten Dokumentationsmo dells für die Nachdokumentation eines Frameworks aus der Fertigungstechnik Mit dem softwaretechnischen Kontext überlappt sich der fachdidaktische: Lehre Für das Studium der Technischen Informatik wurde ein Studienmodell ent worfen - lriformatik-Systemtechnik4 [Lang et al., 1995; Quibeldey-Cirke~ 1994c, 1995b]. Hier dienen Entwurfsmuster als Leitbild für die berufliche Qualifi zierung. Zentraler Teil dieses Studienmodells ist die Vorlesung "Objektorien- tierter Systementwurf".5 Aus meiner Lehr-Erfahrung und der Betreuung von Studienprojekten konnte ich Jachdidaktische Muster ableiten; sie ergänzen die Lehrmuster, die derzeit im Internet gesammelt werden - "Pedagogical Pat- terns: Successes in Teaching Object Technology". 6 Kräfte Gibt es andere Wege des Wissens transfers und Erfahrungserwerbs? Wann sind diese vorzuziehen? Lehr- und Handbücher, Bauteilekataloge und DIN Blätter - unsere Fachliteratur bietet sich an als Meterware. Vermittelt die tra ditionelle Prozeß- und Produktdokumentation Entwurfserfahrung in wieder verwendbarer Form? 4 http://www.ti.et-inf.uni-siegen.de/ECBS/leitbilder.htm 5 http://www.ti.et-inf.uni-siegen.de/courses/ oos/ oos.html 6 http://www-lifia.info.unlp.edu.ar/ppp/ ix Vorwort Was sind die Kräfte, an deren Kompensation eine Lösung zu bewerten ist? Ökonomie • Lern-und Anwendungsökonomie des Transfermediums Effizienz des Zugriffs? Steile Lernkurve? Nachhaltigkeit des erwor benen Wissens? Aktualisierbarkeit des Wissens? Ergonomie • Benutzerakzeptanz des Transfermediums Einfach zu erlernen? Leserfreundlich? Gleichermaßen anwendbar vom Anfänger und Experten? Verläßlichkeit? Verbreitung? Der Prüfstein für die Kompensation dieser Kräfte heißt Veifügbarkeit und Wiedervenvendbarkeit von Expertenwissen in allen drei Arten: Methoden- und Faktenwissen einerseits, Erfahrungswissen andererseits. Lösung Die Lösung des fachdidaktischen Problems - wie lehre ich Erfahrungswis sen? - liegt in der Anwendung eines neuen Lehrvehikels: der Musteiform. Sie vermittelt Erfahrungen kurz und bündig, so daß ein unerfahrener Entwerfer schnell produktiv wird. Entwurfsmuster und ihre Verknüpfung zuMusterspra ehen verdichten das Expertenwissen eines Fachgebiets. Die Lösung des softwaretechnischen Problems - wie entwerfe und doku mentiere ich komplexe Komponenten? -liegt in der methodischen Verzah nung beider Handlungen: "Documenting by Designing". Die Verzahnung erreichen wir durch eine HJPertext-Dokumentationsmethode, die sich an Entwurfsmustern orientiert. Indem wir Form und Inhalt der Muster wech selseitig anwenden, werden unsere Entwürfe lesbarer und verständlicher; wir entwerfen und dokumentieren zugleich und schöpfen so aus der dualen Na tur der Muster: sie sind sowohl generativ, die Lösung erzeugend, als auch de skriptiv. die .. ung beschreibend. Die Lösungsstrukturen, ihre Anwendbarkeit und Folgerungen werde ich in dieser Arbeit zeigen und Praxisbeispiele geben. x