learning-questions/modellgetriebene_softwareen...

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