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>
|
Lernkarteien erstellen oder kopieren
Mit einem Upgrade kannst du unlimitiert Lernkarteien erstellen oder kopieren und viele Zusatzfunktionen mehr nutzen.
Melde dich an, um alle Karten zu sehen.
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
Was bedeutet Dekomposition?
Die hierarische Zerlegung von Systemen in Teilsysteme
-> Grundlage für arbeitsteilige Entwicklung und gute Wartbarkeit von Software
Was gebt es für Aspekte für eine Dekomposition?
- Struktur der fachlichen Domäne (fachgebiete)
- Struktur der technischen Plattform (Multitieranwendungen,..)
- Struktur der Abläufe/Daten, softwaretechnische Prinzipien (separation of concerns,..)
- Organistation der beteiligten Entwickler (Firmen, Abteilungen, Teams, ..)
Was ist das Problem bei der Dekomposition?
Ein Aspekt dominiert auf Kosten der anderen
Was gibt es für Abstraktionsebenen bei der Softwareentwicklung? Wie nennt man die "Transformationen" zwischen ihnen?
- höhere, niedere Abstraktionsebene
- höhere -> niedere : Konkretisiergung
- niedere -> höher: Abstrahierung
Wie beschreibt man die höhere Abstraktionsebene?
- problemorientierter (Was-Modellierung)
- domänenspezifischer
- mehr generalisierend
- -> UML abstrakter als Quellcode
Was bescheibt niedrigere Abstraktionsebenen?
- lösungsorientierter (wie-programmierung)
- plattformspezifischer
- detaillierter, spezialisierter
- mehr Redundanz
- -> Klasse konkreter als interface
Was gibt es bei der Softwareentwicklung für Abhängigkeiten?
- externe <-> interne
- explizite <-> implizite
Was sind externe Abhängigkeiten?
Wenn software Annahme über Kontext in dem sie eingesetzt wird enthält
z.B. datenaufkommen, Hardware, OS, standardsoftware
Was sind interne Abhängigkeiten?
innerhalb einer Software bauen Lösungen für Teilprobleme aufeinander auf oder sind vermischt
-> fachliche, technische Aspekte vermischt
Was sind explizite Abhängigkeiten?
programmiersprachlich formuliert, zur Complie/Linkzeit überwacht
-> abhängigkeit zwischen Klassen durch Methodenaufrufe
Was sind implizite Abhängigkeiten?
stillschweigende Annahmen, nicht autoatisch überwacht
-> reihenfolge von Elementen in einer collection, ...
Führt jede Dekomposition bezgl. der nicht dominierenden Aspekte zu horizontaler oder vertikaler Redundanz?
horizontaler
Zu welcher Redundanz führen zusätzliche Abstraktionsebenen?
Zu vertikaler
Zu was führt das Vermeiden von horizontaler Redundanz?
Zu mehr Abhängigkeiten
Zu was führt horizontale Redundanz mit Konsistenzanforderungen?
zu impliziten internen Abhängigkeiten
-
- 1 / 104
-