MDSD
MDSD
MDSD
Kartei Details
Karten | 104 |
---|---|
Sprache | Deutsch |
Kategorie | Informatik |
Stufe | Universität |
Erstellt / Aktualisiert | 08.07.2017 / 04.02.2018 |
Weblink |
https://card2brain.ch/box/20170708_mdsd
|
Einbinden |
<iframe src="https://card2brain.ch/box/20170708_mdsd/embed" width="780" height="150" scrolling="no" frameborder="0"></iframe>
|
Was gibt es fpr Askepte fpr die Klassifikation von MSM-Transformationen?
- Kardinalität: 1:1 -> aus einem Quellmdoell ein zielmodell, M:1 -> Zusammenfassung mehrerere Quellmodelle zu einem Zielmodell
- Richtung: unidirektional: Quelmodell in zielmodell überführt, bidirektional: wechselseitige Synchronisation von Quell- und Zielmodell
- Metamodell: einheitlich: Refactoring von Modellen, verschieden: echte Transformation (Meta-Metamodell einheitlich)
- Modellzugriff: erhaltend: Quellmodell nur gelesen, Zielmodell neue instanz | modifizierend: Quelmodell wird geändert (z.b. Refactoring)
Wie können M2T-Transfomationen klassifiziert werden?
- Spezialgenerator mit interner Abbildungsvorschrift -> gibt Abbildung von Modellen auf Text fest vor. Änderung der abbildung nur druch Umprogrammieren des Geneartors -> bsp. Stub-Generatoren für Fernaufruf von Methoden in verteilten Systemen
- univierseller Generator mti externer Abbildungsvorschrift: Abbildung von Modellen auf Text ist in Templates ausgelagert -> Änderung der Abbildung druch vErwendung anderer Templates, Templates in Templatesprache formuliert
Definition klassischer Plattformbegriff
von einer Software als gegeben vorausgesetzte Umgebung, typischerweise bestehend aus Hardware-Architektur, Betriebsystem und Laufzeitbibliotheken
Definition Software-Plattform (vereinfachter Plattfomr-Begrif, hinreichtend be iMDSD)
System von APIs (Application Programming Interfaces), das eine Anwendung benötigt, um ablauffähig zu sein.
Wie kann man Plattformen unterscheiden?
- nach abstraktionsebenen
- nach verwendungszweck
Was gibt es für Abstraktionsebenen bei Plattfiorneb=
- elementare Software-Plattform nur Betriebssystem mit etwas Standardsoftware und der Laufzeitbibliothek der Programmiersprache Art des generierten Codes: normaler Programmcode, Umfang des generierten Codes: vergleichsweise groß
- komplexe Software-Plattform Verwendung domänenspezifischer Frameworks, Art des generierten Codes: vorrangig Konfiguration, Umfang des generierten Codes: vergleichsweise gering
Was für Verwendungszwecke gibt es bei Plattfomren?
- Zielplattform
- Entwicklungs- Testplattform
Was gibt es für Gründe fir eine Entwicklungs-und Textplattform?
- Zielplattform wird auch erst entwickelt
- Zielplattform nur eingeschränkt verfügbar
- Zielplattform mühsam zu benutzen
- Zielplattform ungeeignet für Kompnententests (Unit-Tests)
Wie können Abhängigkeiten zwischen generiertem und manuellem Code entstehen?
- in getrennten Übersetzungseinheiten: durch wechselsetitge Verwendung von Namen (Variablenzugriffe, ..) -> kein prinzipieller Unterschied zu Abhängigkeitne vom Plattform-Code, zur Etnschärfung lose Coupling beachten
- in einer Übersetzungseinheit:Abähnigkeiten entstehen druch Einbettung (z.B. in generierter Methode Implementierung ganz oder teilweise manuell) -> manuelle Teile gehen bei erneuter Generuerung verloren wenn nicht besonders geschützt!
Wie kann man generierten und manuellen Code mischen? (was für Techniken, muster,..)
- Präprozessortechnik: trennt auf Dateiebene -> generierter, meueller Code in getrennten Dateien, per Präprozessor zu übersetzbarem Code kombinieren -> führt tendenziell zu schwer lesbarem Code, erleichtert Versionsverwaltung
- Objektorierientierte Entwurfsmuster: trennt auf Klassenebene -> abstrakte Oberklasse generieren, abstrakte Methoden manuell implementieren (komplexe Vermischungen mit Template-Entwurfsmuster entflechten)
- Geschützte Berecihe: Einbettung manueller in generierter Code -> mit spez. generatorspezifischen Kommentaren markeren damit bei Neugenerierungen übernommen wird, erschwert Versionsveraltung, kann auch verloren gehen(umbeneonnen/löschen von Modellelementen,..)
- Codetemplates: Einbettung generierter in Manueller -> im manuellen Code generatorspezifische Anweisungen einbetten die generierten Code einfügen -> aktuell bevorzugte Technik
- Modellanreicherung: erlaubt Einbettung von manuellem Code auf Modellebene -> vermediet Versionsprobloeme, führt zu schwer lesbaren unübersichtlichen Modellen, beeinrträchtigt Pattformunabhängigkeit des Modells
Was gibt es für Kategorien von Transformationssprachen?
- Templatesprachen: beschreiben Einbettung von Modellelementen in zielcode -> bieten Sprachmittel für Zugriff auf abstrakten Syntaxbaum des Modells, erlauben Transformationen in nicht-formale Sprachen, Templates ähneln dem generierende Code --> VTL, StringTemplate
- MSM-Sprachen: (Relationssprachen) beschreiben Relationen zwischen Elementen der Quellsrapche und Elementen der Zielsprache: erlauben das Formulieren von Regeln für abbildung von Knoten des Quel-AST auf Knoten des ZielAST, verlagen gemeinsames Metamodell -> ATL, XSLT
Was ist MDA?
Modell Driven Architecture -> Leitfaden der OMG mit dem Ziel komplexe Systeme mit Hilfe von Modellen besser zu beherrschen
Schwerpuntkt ist Plattformunabhängigkeit von Softwaresystemen
Modelle reoräsentieren Systeme: Domänenmodell, logisches Systemmodell Implementierungsmodell, ..
Metamodelle definieren Sprachen in denen Modelle ausgedrückt werden
Transformationen erzeugen aus Modelle andere Modelle
Was ist EMF?
Eclipse Modelling Framework -> unterstützt Generierung von Werjkzeugen und Anwendungen aus strukturiertem Datenmodell
Entwhält als Kern das Metamodell Ecore, mit dem abstrakte Syntax von dAtenmodellen definiert werden kann
Was ist AspectJ?
Aspektorientierte Programmierung in Java -> erweirtert Java um Sprachliche Modualisierung
Was bedeutet Language-oriented Programming?
auf Metaprogrammierung beruhender Programmierstil bei dem Programmierer zunächst eine oder mehrere DSLs für ihre Problemstellung entwerfen und die Problemlösung dann mit diesen DSLs fomulieren
Was ist die Metaprogrammierung?
Es werden (Meta) Programme geschriben die (Objekt) Programme verarbeiten
-> mgöliche Formen der Verarbeitung: analysieren, transfomieren, generieren
Was ist die Idee der generischen Programmierung?
bei der Programmierung von Algorithmen und Datenstrukturen von konkreten Typen abstrahieren. Die Typen werden erst bei Benutzung der Algorithmen/Datenstrukturen ergänzt
Es gibt generischen Code im framework, maunellen code, schematischen Code. Was soll MDSD generieren?
den schematischen Code
Was bedeutet "Cardridge"?
DSL, Generator und Templates für eine spezielle Zielplattform
Wieviele Layers gibt es? was beschreiben diese?
- Layer M0: Objekte
- Layer M1: Klassen
- Layer M2: Programmiersprache, Java-ausdrücke
- Layer M3: Grammatik, BNF
Wie ist die Chomsky hierarchie aufgebaut?
Non Turing Accetable > Turing Acceptable > dedidable > context-sensitive > context-free > regular
Was für eine Grammatik hat Xtext?
Eine eigene, ist aber eine vereinfachte EBNF-Notation
Was sind die ziele von Xtext?
Einfache ERstellung textueller DSLs, Minimierung der Entwicklungszeit und Kosten von DSLs, optimale Toolunterstützung für Anwender