420 lines
16 KiB
Plaintext
420 lines
16 KiB
Plaintext
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
|