1 / 20

Explizite und editierbare Metainformationen für Software Muster

Explizite und editierbare Metainformationen für Software Muster. Gliederung. Einführung Probleme Thesen Eine Sprache für strukturelle Meta-Daten Ausdrucksfähigkeit Erweiterbarkeit Alternative Ansätze Proof-of-concept Prototypische Umsetzung. Software Muster.

livvy
Download Presentation

Explizite und editierbare Metainformationen für Software Muster

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Explizite und editierbare Metainformationen für Software Muster

  2. Gliederung • Einführung • Probleme • Thesen • Eine Sprache für strukturelle Meta-Daten • Ausdrucksfähigkeit • Erweiterbarkeit • Alternative Ansätze • Proof-of-concept • 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 S1, …, Sn 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. Document • Folder • Print • Delete • printDoc • delDoc • printFol • delFol Document Folder Print printDoc printFol Delete delDoc delFol Metadaten für das Visitor-Muster Klassen für Daten: Klassen für Operationen: Methoden für Operatoren: 3-Stellige Relation:

  14. «Java Method Role» OperationAcceptor «Java Interface Role» - /card : 1..* abstractVisitor 1 «use» «Java Class Role» «Java Class Role» DataElement Operation +/- +/- + card : 1..* + card : 1..* 1 1 «proj» «proj» 1 «Java Method Role» DataSpecificOperator - /card : 0..* PatchWork Modell für Visitor

  15. Use Cases – Überblick

  16. StructureInstanceEditor User Modeller StructureEditor IDE reads and analyses readsdomain-specific meta model creates and stores reads creates and stores changes& generates refers to codefragments StructureInstances StructureModels MetaModel TargetCode System Architecture Conception

  17. StructureInstanceEditor User Modeller StructureEditor IDE reads reads and analyses readsdomain-specific meta model creates and stores createsand stores changes& generates StructureInstances StructureModels MetaModel TargetCode refers to codefragments System Architecture Conception

  18. 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

  19. 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

  20. Ausblick – Anwendungsgebiete • Entwurfsmuster • „Persistente Refactorings“ • Sprachübergreifende Strukturen(z.B. Quellkode und Dokumentation) • „Programming by Copy & Paste“ • Infrastruktur, um Intentionen „expliziter“ zu machen

More Related