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? - XMI, was auf XML basiert 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 Wofür steht "JMI"? - Java Metadata Interface Was ist JMI? - Software zur Generierung einer Java Api für gegebenen MOF Modelle Welche Arten von Objekten werden von JMI generiert? - instance objects, class proxy objects, association proxy objects, package proxy objects Was ermöglichen die Methoden der von JMI generierten instance objects? - Zugriff auf Attribute und Assoziationen Was ist die Aufgabe der von JMI generierten class proxy objects? - Erzeugen von instance objects und dabei alle generierten instance objects speichern Was ist die Aufgabe der von JMI generierten association proxy objects? - Assoziationen erzeugen/löschen und Abfragen zu bestehenden Assoziationen ermöglichen Was ist die Aufgabe der von JMI generierten package proxy objects? - Den Zugriff auf alle anderen Metaobjekte eines packages ermöglichen Wofür steht "TEF"? - Textual Editing Framework Wofür steht "TCS"? - Textual Concrete Syntax Wie nennen sich die Sprachen für abstrakte und konkrete Syntax bei Xtext? - Beides Xtext, daraus wird ecore generiert Wie nennen sich die Sprachen für abstrakte und konkrete Syntax bei TEF? - abstrakte Syntax: ecore, konkrete Syntax: etslt Wie nennen sich die Sprachen für abstrakte und konkrete Syntax bei TCS? - abstrakte Syntax: km3, konkrete Syntax: tcs Wie nennen sich die Sprachen für abstrakte und konkrete Syntax bei EMFText? - abstrakte Syntax: ecore, konkrete Syntax: cs Wie nennen sich die Sprachen für abstrakte und konkrete Syntax bei MPS? - abstrakte Syntax wird durch concepts festgelegt, konkrete Syntax durch den Editor Welches Modellierungsframework erlaubt kein freies Editieren der Modelldatei sondern erzwingt das explizite Erzeugen von Sprachelementen? - MPS In welche drei Ebenen kann die statische Analyse (Architekturanalyse) unterteilt werden? - Micro-Ebene, Macro-Ebene, Architektur-Ebene Was untersucht die statische Analyse auf der Micro-Ebene allgemein? - Syntax Nenne ein Beispiel für einen Fehler, den die statische Analyse im Micro-Level finden könnte: - Einfaches Gleichheitszeichen (Zuweisung) in einer If-Abfrage Was untersucht die statische Analyse auf der Macro-Ebene allgemein? - Klassendesign Nenne ein Beispiel für einen Fehler, den die statische Analyse im Macro-Level finden könnte: - Attribute nicht am Anfang der Klasse (Konventionsverletzung) Nenne ein Beispiel für einen Fehler, den die statische Analyse im Architecture-Level finden könnte: - Zyklische Abhängigkeiten Nenne zwei Ursachen für Software-Erosion: - Die Soll-Architektur wird nicht von allen Entwicklern verstanden, Zeitdruck Nenne eine Ausprägung (ein Merkmal) von Software-Erosion: - Workarounds Wieso reichen Dependency-Management Werkzeuge wie gradle, composer, ... nicht aus, um Software-Erosion einzudämmen? - Es fehlt die Möglichkeit, Analysen zu erstellen und Trends aufzuzeigen Was ist "Dependent BaseClass"? - Ein Antipattern, bei dem eine Oberklasse eine ihrer Unterklassen kennt Nenne zwei Vorteile von Xtext: - viele Features, weit verbreitet Nenne einen Nachteil von Xtext: - keine whitespace-sensitive Sprache abbildbar Nenne zwei Vorteile von TEF: - Es wird ein textueller und ein grafischer Editor generiert, zahlreiche Editor-Features Nenne einen Nachteil von TEF: - kaum verbreitet Nenne zwei Vorteile von MPS: - IntelliJ-Unterstützung, keine Parsing-Errors da zellenbasiert Nenne einen Nachteil von MPS: - Hohe Lernkurve Nenne zwei Vorteile von TCS: - sehr flexibel, abstrakte Syntax wird textuell dargestellt Nenne einen Nachteil von TCS: - Hohe Lernkurve Wie steht XMI zu MOF in Relation? - XMI ist ein Datenformat für Modelle, die auf MOF basieren. Durch wen wurde XMI spezifiziert? - Durch die OMG (Object Management Group) Nenne drei Probleme, die MDA versucht zu lösen: - langsame Entwicklung, wechselnde Technologien, Architekturdiagramme sind nur Dokumentation und nicht technisch nutzbar Nenne zwei Schwächen von MDA: - sehr umfangreiche Spezifikation, hat sich am Markt nicht durchgesetzt Nenne drei Vorteile eines template-basierten Generators: - schnellere Entwicklung, konsistenter, weniger Fehler