commit 0e8f64de8329b6ffd2df3b73c930448bb6653871 Author: Lukas Fürderer Date: Sun Feb 13 23:34:47 2022 +0100 Add questions about mdsd diff --git a/modellgetriebene_softwareentwicklung.txt b/modellgetriebene_softwareentwicklung.txt new file mode 100644 index 0000000..8aac509 --- /dev/null +++ b/modellgetriebene_softwareentwicklung.txt @@ -0,0 +1,305 @@ +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