Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
Veröffentlicht von:Liutbald Zapf Geändert vor über 10 Jahren
1
Explizite und editierbare Metainformationen für Software Muster
2
Gliederung 1.Einführung 2.Probleme 3.Thesen 4.Eine Sprache für strukturelle Meta-Daten Ausdrucksfähigkeit Erweiterbarkeit 5.Alternative Ansätze 6.Proof-of-concept 7.Prototypische Umsetzung
3
Software Muster A pattern is anything characterized by repetition. (WikiPedia dictionary) Relevante Beispiele: Entwurfsmuster (Visitor, Observer) Idiome (Getter/Setter) andere... (im Ausblick)
4
Probleme Software-Muster sind zwar Ausdruck von Intentionen, aber... zugehörige Bedingungen bleiben implizit fehlerhafte Muster => falsches Vertrauen Struktur geht leicht verloren prinzipiell gut skalierbar, aber manuell fehleranfällig manuelle Anpassung an anderen Kontext schwierig
5
Thesen Metadaten über die Programmstruktur können helfen, die meisten der genannten Probleme zu lindern oder zu beheben. Mit Hilfe formaler Metadaten können z.B. Entwurfsmuster langfristig im Entwicklungsprozess unterstützt werden.
6
PatchWork Meta-Modell (1) Zentrale Elemente (nicht domänen-spezifisch): Role –Entity, Role Player, Entity Type Relation –Projection Constraint –z.B. Cardinality, Containment Operation –Atomic / Composed Operation
7
Beispiel: Kardinalitätsbedingung Sei R eine Relation zwischen den n+1 Rollen S 1, …, S n und T. Die Kardinalität der Rolle T in R ist 1..* gdw. Wobei Card die Menge aller gültigen Kardinalzahlen ist. Z.B. 1..* = {1, 2, 3, …}
8
PatchWork Meta-Modell (2) Domänen-spezifische Erweiterungen: Beispiele für die Domäne Java: Entity Types: –Class, Method, Field,... –is-class, is-method, is-field,... Constraints: –in-scope, sub-type, calls,... Operations: –add/remove/replace für jeden Entity Typ
9
Erweiterbares Meta-Modell
10
Alternative Ansätze Eingebettete Metadaten –Sprachspezifisch –Explizit: ja; Editierbar: nein Metaprogrammierung –Makro-basierte Systeme Focus auf Transformation statt Invarianten nicht explizit schwer editierbar (?) komplementär zu PatchWork –Reflektions-basierte Systeme Sprachspezifisch
11
Meta-Programmierung? Für das wesentliche: Nein! –Explizite Muster –Verbunden mit zugehörigen Kode-Fragmenten –Bedingungen beschränken den Kode Interaktion auf semantischen Niveau der Muster führt zu: –Kode Generierung –Kode Transformationen
12
Beispiel: Das Visitor-Muster Intention: Datenstruktur durch einige Klassen beschreiben Operationen auf diesen Daten beschreiben Definition der Daten zusammenhalten Definition der Operationen zusammenhalten... und das nicht in Lisp sondern in Java.
13
Die Struktur hinter dem Kode
14
Metadaten für das Visitor-Muster Klassen für Daten: Klassen für Operationen: Delete Print Folder Document Methoden für Operatoren: printDoc delDoc printFol delFol 3-Stellige Relation:
15
PatchWork Modell für Visitor «Java Interface Role» abstractVisitor «use» «Java Method Role» OperationAcceptor - /card : 1..* 1 +/- «Java Class Role» DataElement + card : 1..* «Java Class Role» Operation + card : 1..* «Java Method Role» DataSpecificOperator - /card : 0..* 1 1 «proj» 1
16
Use Cases – Überblick
17
reads creates and stores reads domain-specific meta model System Architecture Conception Modeller User Meta Model Structure Models Structure Instances Target Code Structure Editor Structure Instance Editor IDE changes & generates creates and stores refers to code fragments reads and analyses
18
System Architecture Conception changes & generates reads and analyses refers to code fragments creates and stores reads creates and stores reads domain-specific meta model Modeller User Meta Model Structure Models Structure Instances Target Code Structure Editor Structure Instance Editor IDE
19
Status Quo viele bekannte Entwurfsmuster in Java mit dem Meta-Modell beschrieben zwei Test-Prototypen für das Basis-Meta- Modell erste Version einer graphischen Notation
20
Nächste Schritte Analogie zu E-R-Modell und Relationalem Modell ausloten Grenze der Ausdrucksfähigkeit genauer untersuchen (z.B. dynamische Aspekte) vollständige Formalisierung des Meta- Modells für Java bekannte Entwurfsmuster modellieren
21
Ausblick – Anwendungsgebiete Entwurfsmuster Persistente Refactorings Sprachübergreifende Strukturen (z.B. Quellkode und Dokumentation) Programming by Copy & Paste Infrastruktur, um Intentionen expliziter zu machen
Ähnliche Präsentationen
© 2024 SlidePlayer.org Inc.
All rights reserved.