GI-FG-2.1.9:AK Frameworks
Framework-Dokumentationmit Entwurfsmustern
Klaus Quibeldey-Cirkel; Georg Odenthal (am Rechner)
- Universität Siegen, FB 12, Technische Informatik, 57068 Siegen
- http://www.ti.et-inf.uni-siegen.de/staff/quibeldey/uebermich.html E-mail: quibeldey@ti.et-inf.uni-siegen.de
Übersicht
- Begriffe
- “Muster”, “Framework”
- “Design-Muster” - “Meta-Muster”
- Diskussion
- Werkzeugunterstützung
- Schema zur FW-Dokumentation mit Mustern
Literatur zum Vortrag &
“Muster”
- in der allgemeinen Literatur
- Vorlage, nach der etwas hergestellt wird
- beispielhaftes Vorbild
- regelmäßige, sich wiederholende Struktur
- in der Software-Technik
- kontextbezogenes Problem-Lösungs-Paar
- http://www.ti.et-inf.uni-siegen.de/Diplom/Diplom.html#Hombach
- http://swt1.informatik.uni-hamburg.de/~riehle/1995/Diplomarbeit.html
Historie I
- Musterbücher
- in der Antike
- im Mittelalter
- im 19. u. 20. Jh.
dokumentieren"Stand der Handwerks-künste".
Historie II
- Architektur (1976) Christopher Alexander: “154 Teenager´s Cottage*”
Aktualität
- Software-Technik
- Erich Gamma et al.(Sachkenntnis im Framework-Kontext!)
- Hillside Group
- Siemens AG, sd&m
- http://st-www.cs.uiuc.edu/users/patterns/Lists.html
- Konferenzen
- PLoP ´94 ..., UP ´97 ...
- EuroPLoP ´96 ...
- http://st-www.cs.uiuc.edu/users/patterns/conferences/
“Framework”
- Klassenverband (keine Klassenbibliothek)
- Invertierter Kontrollfluß:“Don´t call us, we call you!”
- Framework-Definition
- generische Lösung mit
- kooperierenden Klassen
- für verwandte Probleme
- mit einer vorgegebenen Ablaufstruktur
*ilities
- Eigen-schaftenguterFrameworks
- Reusability
- Flexibility
- Maintainability
- Praxis ...
- kaum Orientierungs-wissen durchsymmetrische Klassen-Strukturen [2]
“Design-Muster” (Gamma et al.)
- dokumentieren Mikro-Architekturen(Mikro-Frameworks bei Wolfgang Pree; Verband aus 3-4 Klassen)
“Design -Muster” II
- GoF-Beschreibungsschema (“Gang of Four”)
- Mustername und Kategorie
- Zweck
- Auch bekannt als
- Motivation
- Anwendbarkeit
- Struktur
- Teilnehmer
- Interaktionen
- Konsequenzen
- Implementierung
- Beispielcode
- Bekannte Anwendungen
- Verwandte Muster
alexandrinische Form: Problem (Kräfte), Kontext, Lösung
“Strategie-Muster”: MVC
- bestimmt Makro-Architektur
- Doku-Fokus: invariante Strukturaspekte
- hier: Trennung der Belange (David Parnas) und starke Kohäsion vs. lose Kopplung (Herbert A. Simon)
- Ursprung in SmallTalk (dort GUI-Framework)
“Taktik-Muster”: Beobachter
- bestimmt Mikro-Architektur
- Doku-Fokus: variante Strukturaspekte
- hier: Anzahl der von einem Objekt abhängigen Objekte sowie die Art, in der die Objekte aktualisiert werden
MVC & Beobachter
Strategie: “Trennung der Belange”: starke Kohäsion & lose Kopplung
Taktik: flexible Aktualisierung
PPT-Folie
- http://www.ti.et-inf.uni-siegen.de/Diplom/Diplom.html#Odenthal
- Strategie-Muster: Schnittstellen-Kapselung
- invarianter Strukturaspekt:
- Protokoll der Schnittstelle
- Taktik-Muster: Fassade
- varianter Strukturaspekt:
- Austauschbarkeit der Kommunikationsstruktur zum Subsystem
“Meta-Muster” (Wolfgang Pree)
- Framework-Kontext:
- generisch: Entwurf
- deskriptiv: Dokumentation
- präskriptiv: Lernhilfe
- Doku-Fokus
- Meta-Beschreibungen der Taktik-Muster(Hot Spots vs. Frozen Spots)
- Hypertext-Editor für Meta-Muster
- 2. Buch [4a]: “FrameworkPatterns”
“Meta-Muster” II
- Frozen Spots: Templates
- T-Klassen
- T()-Operationen
- Hot Spots: Hooks
- H-Klassen
- H()-Operationen
- hRef-Beziehungen
Zwischenbilanz ...
- Musterbegriff: Problem-Lösungs-Paar
- Entwurfsmuster: neue “literarische Form” (Textsorte)
- Musterbuch: literarische Gattung mit Tradition
- Musterbewegung in der Informatik: Fortsetzung des Wiederverwendungsprinzips auf einer höheren Stufe der Wertschöpfung
- nicht die einzelne Klasse einer Klassenbibliothek, sondern der abstrahierte Entwurf eines Klassenverbandes wird wiederverwendbar
...
- Lehr-, Lern- und Diskussionsvehikel
- Muster dokumentieren Erfahrungswissen.James O. Coplien: “Aggressive Disregard for Originality”
- Entwurfsmuster sind reproduzierbare Kopien ihrer selbst. Sie manifestieren sich erst nach ungezählten Entwurfszyklen (die Punkte im Sierpinski-Fraktal stehen für die Redesigns). Entwurfsmuster sind “kristallisiertes Wissen” aus einem langen Erfahrungsprozeß.
- Muster sind sprachbildend: Entwurfsvokabular.
- allgemeines Schema
- Problem, (Kräfte), Kontext, Lösung
...
- Entwurfsmuster = Entwurfsmethode
- Muster sind vernetzt:
- Mustersprachen (Christopher Alexander)
- Mustersysteme (Frank Buschmann et al.)
- Entwurfsmuster = Strukturinformation
- Strategie-Muster Strukturinvarianten
- Taktik-Muster Strukturvarianten
...
- Pro Muster
- Wiederverwendung von Sachkenntnis (Erfahrungswissen)
- Wiedererkennung von Strukturen (Orientierungswissen)
- effizientes Kommunikations-, Lehr- und Lernvehikel
- Kontra Muster
- Validierung nur durch Erfahrung, nicht durch Test
- keine direkte Code-Wiederverwendung
- täuschend einfach: Schach-Analogie
Schach-Analogie (Doug Schmidt)
- Grundregeln lernen
- Figuren, Bewegungen, Brettgeometrie etc.
- Prinzipien lernen
- strategischer und taktischer Wert einer Figur, einer Stellung etc.
- Meister studieren
- Bewegungs- und Konstellationsmuster verstehen, memorieren, wiederholt anwenden
- Algorithmen, Datenstrukturen, Sprachen etc.
- strukturiertes, modulares, objektorientiertes Programmieren
- Analyse-, Design- und Codierungsmuster verstehen, memorieren, wiederholt anwenden
Visuelle Analogie (anläßlich einer GI-Arbeitskreis-Initiative in Berlin im Jahre 1 nach Christos Reichstags-Verhüllung)
- Ein “verinnerlichtes” Entwurfsmuster (hier Observer) wirkt intuitiv: Die grauen Bereiche und der Kreislauf des Methoden- aufrufs werden intuitiv angewandt: AttachTo() - Action() - Notify() - Update() - GetState().
- Entwurfsmuster werden nicht erfunden, sie werden enthüllt.
- Sie stammen ursprünglich aus der Architektur.
- Sie verhüllen die Strukturdetails und machen so den Entwurf wiedererkennbar.
FW-Dokumentation I
- à la HotDraw [7]: deskriptive Muster
- gerichteter Graph (vom Allgemeinen zum Besonderen)
- geordnet nach der Häufigkeit der Anwendung
- Zielgruppe: FW-Anwender (Nicht-Experten)
- à la HotDraw [8]: generische Muster
- abgeleitete Muster
- begründen Sequenz der Entwurfsentscheidungen
- Zielgruppe: FW-Entwickler (Experten)
FW-Dokumentation II
- Meta-Muster à la Pree [4]
- abstrahieren von Design-Mustern (à la Gamma et al.)
- sind anwendungsneutral
- beschreiben Mikro-Frameworks
- lokalisieren die Variabilitätsaspekte (Hot Spots)
FW-Dokumentation III
- Cookbook à la Krasner & Pope [5]
- Contracts à la Helm et al. [6]
- Motifs à la Lajoie & Keller [9]
FW-Dokumentation IV
- Navigationstechniken
- Index und Inhaltsverzeichnisse als Guided Tours
- Stichwortsuche
- Volltextsuche
- Textuelle Verweise (Links)
- Grafische Verweise (Links)
- Aufruf von Applikationen
- http://www.ti.et-inf.uni-siegen.de/Diplom/Diplom.html#Odenthal
FW-Doku V
- Beispiel
- textuelle und grafische Verweise auf Entwurfsmuster, Klassen, Operationen, Objekt-Szenarien
- http://www.ti.et-inf.uni-siegen.de/ Diplom/Diplom.html#Odenthal
Werkzeugunterstützung
- Hypertext
- vernetzt Muster (Mustersystem, Mustersprache),
- hält Zugriff auf latenten Pool an Beispielen,
- verbirgt technische Detail-Erklärungen,
- sorgt für Transparenz in der Dokumentation,
- zuschneidbar auf bestimmte Benutzerprofile.
- SEU-Infrastruktur mit Musterkomponente
- objectiF 3.0 (Fa. microTOOL, Berlin)
- http://www.microTOOL.de/
Vorschlag zur FW-Dokumentationmit Entwurfsmustern
- Übersicht
- Ein Klassendiagramm und evtl. weitere Visualisierungen (z. B. Interaktionsdiagramm), die zur Verdeutlichung geeignet sind.
- Intention
- Knappe Beschreibung der wesentlichen Zielsetzung. Der Grund, warum das Muster verwendet wurde, sollte deutlich werden.
- Motivation
- Ausführliche Beschreibung der Zusammenhänge. Übersicht über die Komponente.
- Es kann sinnvoll sein, die “Entwicklungsgeschichte” anhand von Diagrammen und Texten aus der Analysephase (z. B. Bezug zu fachlichen Mustern) und anhand des Vorgehens zur Musterausprägung zu illustrieren.
- Rollen
- In Klammern wird hinter die Rolle einer Klasse aus dem Entwurfsmuster die konkrete Klasse der Implementierung geschrieben. Diese Zuordnung ist für den Leser, der das Muster kennt und sich über die spezielle Ausprägung informieren will, sehr wichtig.
- Eine stichpunktartige Beschreibung der Rolle, die die Klasse in der Musterausprägung einnimmt.
- Zusammenarbeit
- Die Interaktion zwischen den Klienten und der Musterausprägung wird beschrieben; evtl. Verweis auf ein Interaktionsdiagramm.
- Konsequenzen
- Die Konsequenzen aus der konkreten Implementierung (z. B. Erweiterbarkeit, Vergleich mit anderen Realisierungen).
- Implementierung (optional)
- Besonderheiten der Implementierung.
...
- Hot Spots, Frozen Spots
- Für die Dokumentation von Frameworks ist die gesonderte Beschreibung der festgelegten Eigenschaften des Frameworks und der durch den Benutzer anzupassenden bzw. zu erweiternden Komponenten essentiell [4].
- Aus dieser Beschreibung sollte eindeutig hervorgehen, welche Flexibilität der Anwender erwarten kann und wo die Grenzen sind.
- Rezept
- Der Cookbook–Stil [4, 5, 7, 9] beschreibt den Einsatz eines Frameworks anhand eines schrittweisen, durch Beispiele ergänzten Vorgehens.
- Diese Beschreibung kann durch eine Ready-to-Use-Umgebung, die die direkte Ausführung und somit ein interaktives Ausprobieren eines Frameworks erlaubt, ergänzt werden. Auch eine vorkonfigurierte Debugger-Sitzung kann zum besseren Verständnis geeignet sein.
- Ist eine feste Entwicklungs- und Laufzeitumgebung vorhanden, bilden interaktive Hilfen für die Nutzung eines Frameworks (Assistenten/Wizzards) das Optimum an Unterstütztung für den Anwender.
- Integrierbarkeit
- Beschreibung der nicht-funktionalen Eigenschaften des Frameworks (beispielsweise Portabilität, Realisierung der Ausnahmebehandlung). So ist eine Einschätzung der Integrierbarkeit in bestehende Umgebungen gegeben.
- Verwendungen (Known Uses)
- Hier sollte ein Verweis auf möglichst jede Verwendung des Frameworks stehen. Anhand dieser Einsatzbeispiele kann der Anwender am schnellsten die Eignung überprüfen.
- Strukturelle Erweiterungen (optional)
- Vor allem bei In-House–Entwicklungen kann es sinnvoll sein, den Entwurf eines Frameworks eingehend zu beschreiben, um dessen Erweiterbarkeit zu erleichtern. Ein Framework durchläuft mehrere Designzyklen, bis die Hot Spots identifiziert sind und so das richtige Maß an Flexibilität erreicht wurde. Wird es in bisher nicht vorgesehenen Bereichen eingesetzt, kann eine Erweiterung nötig sein.
Workshop (Plenum & Kleingruppen)
- Praxiserfahrung mit FW-Dokumentation
- Praxiserfahrung mit Musterform
- Wunschliste zur“FW-Dokumentation mit Entwurfsmustern”
- neue Konzepte?
- neue Werkzeuge?
- neues Beschreibungsschema?