In welchen zwei Bereichen der Softwareentwicklung spielen Modelle noch einer Rolle, neben Modellgetriebener Entwicklung? - Softwaremodelle (wie UML); Vorgehensmodelle (z.B. Wasserfall) Wodurch grenzen sich MDSD Modelle von anderen Modellen der Softwareentwicklung ab? - Aus ihnen wird automatisch Code erzeugt anstatt nur zur Dokumentation / Kommunikation zu dienen. Was ist das Ziel beim Einsatz von MDSD? - Die formale Modellierung domänenspezifischer Abstraktionen Nenne zwei grundsätzliche Vorteile von MDSD: - Produktivitätssteigerung, verbesserte Qualität und Wartbarkeit Welche grundlegenden technischen Möglichkeiten zur Umsetzung von MDSD existieren? - Codetransformation, Interpretation Welcher technische Vorteil ergibt sich aus dem Einsatz domänenspezifischer Modelle? - Neutralität gegenüber der Zielplattform Wie nennt sich die wichtigste Initiative, MDSD zu standardisieren? - Model Driven Architecture (MDA) Wie nennt sich die Organisation, die eine MDSD Standardisierung anstrebt? - Object Management Group (OMG) Wie profitiert die Codebasis vom Einsatz der MDSD? (3 Punkte) - höheres Abstraktionsniveau, einheitliche Architektur, bessere Wiederverwendbarkeit Welche Fehler sind typisch, wenn auf MDSD verzichtet wird? - Copy & Paste & Adapt Fehler MDSD verringert die Komplexität durch Trennung in welche beiden Bereiche? - Modellierung, Implementierung Wie erreicht MDSD eine einheitliche Architektur? - Durch Generierung sind erzeugte Abbildungen automatisch einheitlich. In welche drei Kategorien wird Code der Referenzimplementierung beim Umbau zu MDSD zerteilt? - schematisch (wiederholend), individuell (nicht abstrahierbar), generisch (immer gleich, bisher schon wiederverwendbar) Wofür steht "DSL" bei MDSD? - Domain-specific Language Woraus wird bei MDSD schematischer Code generiert? - Aus den Applikationsmodellen Wann wurde mit der Entwicklung der Model Driven Architecture begonnen? - Im Jahr 2000 Was ist mit der MDSD Plattform gemeint? (bezogen auf unser Praktikumsprojekt) - C++ und Qt vs Rust und Gtk Wofür steht "MOF" bei MDSD? - Meta Object Facility Wofür steht "CIM" bei MDSD und was bedeutet es? - Computation-Independent Model; Anforderungen, rein fachlich, erlaubt keine Generierung Wofür steht "PIM" bei MDSD und was bedeutet es? - Platform-Independent Model; nutzt DSL, keine Angabe zur Zielplattform Wofür steht "PSM" bei MDSD und was bedeutet es? - Platform-Specific Model; Modell wurde transformiert für eine bestimmte Zielplattform Welche zwei technischen Varianten von Transformationen existieren bei MDSD? - Modell zu Modell; Modell zu Code Was ist bei MDSD nötig, wenn ein plattformspezifisches Modell eine Änderung erfordert? - Refactoring des plattformunabhängigen Modells Welchen UML Erweiterungsstandard enthält die MDA? - UML-Profil Nenne ein Beispiel für Zusatzattribute die das UML-Profil aus MDA festlegt: - Constraints für Objektattribute Wie ist das UML-Profil aus MDA formal dargestellt? - Als Erweiterung des UML Metamodells Wie sind typischerweise automatisch generierte Bereiche in eine Datei eingebettet, in welcher sich auch manuell geschriebener Code befindet? - in Protected Areas Mit welchem technischen Hilfsmittel wird bei MDSD im letzten Schritt üblicherweise Code erzeugt? - mit Templates Was ändert sich beim Einsatz von MDSD am Buildprozess? - Vor der Compilierung werden automatische Codeteile generiert Was ist beim Umbau eines Generators in MDSD besonders kritisch? - Kompatibilität mit bisherigen Modellen Welcher Aspekt ist essenziell bei der Zusammenarbeit zwischen Generator-Entwickler und Modell-Entwickler bei MDSD? - Zeitnahe Reaktion auf Anforderungen aus der Modell-Entwicklung Welche zwei Kategorien können mit "Domäne" bei MDSD gemeint sein? - technisches oder fachliches Wissensgebiet Was ist ein Metamodell? - formales Abbild der Domäne, damit Schablone für Modelle Was ist eine abstrakte Syntax? - Festlegung der Struktur von Modellen ohne eine Repräsentationsform zu bestimmen Was ist eine konkrete Syntax? - Definition eines parsbaren Formats für Modelle, z.B. als Text mit bestimmten Schlüsselwörtern Was ist die statische Semantik? - Zusätzliche Einschränkungen/Kriterien für Modelle, welche in abstrakter Syntax nicht abbildbar sind. Was ist die DSL bei MDSD? - konkrete Syntax und darauf aufbauende Semantik Was ist ein formales Modell bei MDSD? - Eine Instanz des Metamodells, Grundlage für Codegenerierung Was ist die Modellierungssprache bei MDSD? - Synonym für DSL Was ist mit "Bausteinen einer Plattform" bei MDSD gemeint? (zwei Beispiele) - Middleware, Libraries Was ist das Produkt bei MDSD? - generierter Code sowie nicht generierter Code, alles zusammen auf der Zielplattform Was ist das Metametamodell bei MDSD? - Übergeordnete Beschreibung für allgemeine Metamodelle Was ist das Problem beim Roundtrip Engineering? - Nicht jede Codeänderung kann im Modell abgebildet werden. Welche Bedeutung haben Patterns bei MDSD? - Generierter Code erfüllt oftmals Patterns Welche Bedeutung hat Agile Softwareentwicklung bei MDSD? - Kurze Integrationszeiten vertragen sich gut mit der parallelen Architektur- und Anwendungsentwicklung Woraus besteht ein Metamodell? - abstrakte Syntax + statische Semantik Wie prüft ein Generator üblicherweise die statische Semantik? - Garnicht, er verlässt sich auf valide Modelle, da die Validierung vorher passiert. Wie kann die statische Semantik beispielhaft in XText implementiert werden? - Mit @Check annotierte Methoden Wie viele Metaschichten beschreibt die OMG, was ist die oberste und die unterste Schicht? - 4 Schichten; M3: Meta-Metamodell; M0: Instanzen Welche Metamodellierungssprache kann UML beschreiben, wurde aber nach UML entwickelt? - MOF Wofür steht "EMF"? - Eclipse Modeling Framework In welcher Sprache werden Metamodelle beim Einsatz von EMF verfasst? - Ecore Was sind die beiden wichtigsten Features von EMF? - Klassen-Generierung, Editoren-Generierung Wofür steht "XSD"? - XML Schema Definition Was ist XSD? - Beschreibungssprache für Metamodelle die XML als Grundlage haben, XSD ist dabei selbst als XML ausgedrückt Wie kann mit sehr komplexen Metamodellen umgegangen werden? - Aufteilung in ein Modulares Metamodell Was sind Extension Points bei MDSD? - Öffnung des Metamodells für eine flexible aber plattformabhängige Erweiterbarkeit Welche drei Blickwinkel hat die Komponenteninfrastruktur? - Typ, Komposition, System Was beschreibt der Typ-Blickwinkel der Komponenteninfrastruktur? - Komponententypen mit deren angebotenen und angeforderten Schnittstellen und auf diesen Schnittstellen die genauen Operationen und Datentypen Was beschreibt der Kompositions-Blickwinkel der Komponenteninfrastruktur? - Komponenteninstanzen mit deren Konfiguration und Verdrahtung zueinander um Interfaces zu erfüllen Was beschreibt der System-Blickwinkel der Komponenteninfrastruktur? - Hierarchie aus Systemen, Knoten, Containern und darin Komponenteninstanzen Nenne ein Beispiel für einen Bereich, der durch ein Aspektmodell beschrieben wird: - Persistenz Inwiefern ist die Komponenteninfrastruktur unpräzise in Bezug auf Interfaces? - Interfaces werden immer als notwendig angesehen, in der Praxis ist das nicht immer der Fall. Wie wird die Qualität eines Metamodells sichergestellt? - Szenarien werden durchgespielt, Modelle auf Basis des Metamodells erzeugt Wie nennt man die Abbildung primitiver Datentypen einer Programmiersprache auf Datenbanktypen? - PrimitiveTypePersistence Welche Schwierigkeit bringt Vererbung mit sich, wenn das Schema einer bestehende Datenbank modelliert werden soll? - Für Vererbung gibt es verschiedene Abbildungsmöglichkeiten, zur Modellierung sollte dies einheitlich sein. Was ist die dynamische Semantik? - Die Bedeutung der Elemente eines Metamodells Was ist eine interne DSL? - Eine Sprache ist in eine Hostsprache (Programmiersprache) eingebettet Was ist eine externe DSL? - Eine neu erstellte Sprache mit eigenem Parser Was ist ein Beispiel für eine interne DSL? - Method Chaining Nenne zwei Nachteile der internen DSL: - Eingeschränkte Flexibilität, meist nur textuelle Repräsentation Was ist ein Vorteil von grafischen gegenüber textuellen Modellen? - Struktur ist leichter erkennbar Nenne drei Vorteile von textuellen gegenüber grafischen Modellen: - Höhere Produktivität, Auto Completion, bessere Versionierung Wie kann die Syntax einer externen DSL beschrieben werden? (Beispiel) - Mit Xtext Was ist das direkte Folgeprodukt nach Ausführung eines Parsers? - Ein Abstract Syntax Tree (AST) Was sollte vor dem Release der ersten Version einer DSL berücksichtigt werden? - Erweiterbarkeit unter Einhaltung der Abwärtskompatibilität Was kann neben Strukturen noch über eine DSL modelliert werden? - Verhalten Was ist die wichtigste Anforderung an eine konkrete Syntax? - Verständlichkeit und Erlernbarkeit Wie sollte eine DSL mit Elementen mit sehr vielen Attributen umgehen? - Oftmals passen Defaultwerte in den meisten Fällen sodass nur Änderungen angegeben werden müssen Welche Bedeutung haben Konventionen innerhalb einer DSL? - Die DSL kann daraus Attribute ableiten sodass sie nicht angegeben werden müssen, sie sollten jedoch im Metamodell enthalten sein. Wie nennt man wiederverwendbare Abschnitte eines Codegenerators? - Cartridges Welche Technik der Codegenerierung ist in C/C++ schon lange üblich? - Makros Wie werden Felder zum Einsetzen von Variablen oder Ausdrücken in einem Template genannt? - Tags Wofür steht "XSLT"? - Extensible Stylesheet Language Transform In welcher Syntax sind XSLT Modelle meistens gespeichert? (zwei Antworten) - XML / XMI Wie nennt man den XSLT Codegenerator und in welcher Sprache ist dieser verfasst? - XSLT Stylesheet; ist ein XML Dokument Nenne zwei Nachteile von XSLT: - Unübersichtlich, Fehler treten erst zur Laufzeit auf Nenne zwei Vorteile der Codegenerierung direkt mit beispielsweise Java-Code, ohne Generator-Frameworks zu nutzen: - gut modularisierbar, gute IDE-Unterstützung Nenne zwei Nachteile der Codegenerierung direkt mit Java-Code, ohne ein Generator-Framework zu nutzen: - Java hat keine mehrzeiligen Stringliterale, Anführungszeichen müssen maskiert werden In welcher Sprache ist ein EMF Codegenerator verfasst? - Xtend Wie werden Algorithmen (Schleifen, Verzweigungen) bei Verwendung einer DSL ausgedrückt? - Sie sind nicht Teil des Modells sondern zählen zum individuellen Code und werden nach der Generierung dazu gebunden. Nenne zwei Beispiele von Artefakten, die neben Programmcode ebenfalls aus einem Modell generiert werden können: - Befehle zur DB-Erstellung, Dokumentation Generierte Dateien müssen niemals manuell geändert werden. Wieso sollte generierter Code dennoch übersichtlich gebaut sein? - Entwickler werden beim Debuggen mit generiertem Code konfrontiert. Wie wird im günstigsten Fall bewirkt, dass ein Generator manuell geschriebenen Code nicht überschreibt? - generierte / nicht generierte Teile in verschiedene Dateien trennen Wie kann ein Generator nach Generierung der Klasse "Auto" erzwingen, dass eine Unterklasse "AutoImpl" manuell geschrieben wird? - Es wird Dummy-Code hinzu generiert, z.B.: if (false) { Auto a = (Auto)new AutoImpl(); } Nenne ein Beispiel, wann eine Model-to-Model Transformation sinnvoll sein kann: - Ein Zustandsautomat wird um Not-Aus-Übergänge erweitert Was ist an der Bezeichnung "JButton" in einer Gui-Modellierungssprache problematisch? - Das Metamodell sollte unabhängig von den Zielplattformen gebaut sein, "J" steht jedoch für Java Swing. Was eignet sich nach Entwicklung einer DSL gut als Beispielcode zur Dokumentation? - Referenzmodell und dessen Referenzimplementierung Was ist MOF? - Das Meta-Meta-Modell der OMG Nenne ein Beispiel für alle Schichten der Meta-Modellhierarchie M3..M0: - MOF; Strukturbeschreibung von UML-Klassendiagrammen allgemein; Das Diagramm einer "Bankkonto"-Klasse; Konto Nr. 4422 mit 1000€ Wofür steht "OCL" bei MDSD? - Object Constraint Language Wofür kann OCL bei MDSD genutzt werden? - OCL beschreibt Einschränkungen (statische Semantik) von Modellen