Modellbasierte SW-Entwicklung Flashcards
Grundidee der Modell-basierte Entw.
- Modellieren, nicht Programmieren
- Einfache, kundenorientierte Modelle und Sprachen DSL
- Aus wenig Modell soll viel Programm generiert werden
Herausforderungen der Modell-bas. Entw.
- Technik muss bekannt sein
- Anwendung der Technik in das Vorgehensmodell integrieren
- Zusammenpassung der generierter und manuell erzeugter Code
- DSL ändert sich - was passiert mit den Modellen?
Domain-Specific Languages…
- sind Domänen-spezifisch
- damit nicht allgemeinverständlich
Grundideen (detailliert) in Modell-basierte Entw.
- Erfahrungsengpass -> nicht alles neu programmieren
- UML-Modellierung weit verbreitet -> Modelle statt Code
- Integrierte UML-Modelle -> formaler modellieren und generieren
- Komplizierte Domänen -> nah an der Domäne modellieren
- Änderungen nötig -> Evolution durch agile Methoden
(Aus Domänen-spezifisch erweiterten Modellen Code generieren)
Wofür werden Modelle in MDSD verwendet?
- Dokumentation
- Generierung von Code-Teilen
- Referenz für Verifikation
Netzwerktopologie im Fahrzeug?
Linientopologie
Umsetzung im CAN und FlexRay
Rollen in Model Driven Software Development
- Manager / Entscheider
- Architekten
- Anwendungs-Entwickler
Manager (MDSD)
- bessere Planbarkeit durch breite Wiederverwendung
- Effizientere Vorgehensweise, schnellere Projektabwicklung
- Lerneffekte beschleunigen und einsetzen (Qualität)
Architekten (MDSD)
- Formal interpretierbare Modelle
- Gestaltet als SW-Familien, -Produktlinien, -Domänenarch.
- Umfassende Arch für DSL, Generat und Zielsystem
Anwendungs-Entwickler (MDSD)
- klare, domänen-nahe Modellierung (DSL)
- einfach bedienbare, angemessene Generierungs-Werkzeuge
- Klare Schnittstellen für manuell enwickelte Teile
Metamodell def
beschreibt die Elemente des Modells.
Modell def
beschreibt die Elemente der zu beschreibenden Domäne oder der ‘wirklichen Welt’.
Domain Specific Language def
..ist eine formale Sprache, die für ein bestimmtes Problemfeld entworfen und implementiert wird und daher sind sie nicht allgemeinverständlich.
Wann loht sich der Einsatz von DSLs?
Wenn man aus wenig wie möglich Modell viel Programm generieren möchte und aufgrund der Komplexität der Domäne nah an der Domäne modellieren möchte.
UML-Profil def.
…erweitern eine Metamodellreferenz (UML) und ermöglichen die Umstellung und Anpassung eines Metamodells an Konstrukte, die spezifisch zu einem Domain, Plattform oder SWentwicklungsmethode sind.
Bestandteile eines UML-Profils
- Stereotypen
- Tagged values
- Constraints
Wofür werden UML-Profils erstellt?
für fachliche oder technische Anwendungsdomänen erstellt und zur Anpassung an solche Domäne benutzt.
Stereotypen (UML-Profil)
…ergänzen die Bedeutung und Darstellung der UML und sind abgeleitet von Elementen des UML-Metamodells. Sie definieren wie eine existierende Metaclass als Teil eines Profils erweitert werden kann.
Constraints (UML-Profil)
…werden benutzt, um Einschränkungen (wie Bedingungen) auszudrücken. Sie sind im Pseudocode oder in der Object Constraint Language OCL erfasst.
Tagged Value (UML-Profil)
… is a tag value pair that can be used to add properties to model elements in UML. z.B. {tag = Value} = { author=’‘Joe Smith’’, deadline = ‘31.03.2019’ }
UML-Objektdiagramm vs Feature-Diagramm
Feature-Diagramm hat den Vorteil, dass derselbe Sachverhalt mit einer übersichtlicheren Notation dargestellt werden kann.
- bessere Lesbarkeit des Diagramms
- der Betrachter kennt die Syntax und die Problemstellung
Wieso Metamodellieren?
- Metamodell beschr. abstrakte Syntax (für DSL)
- Verifizieren von Modellen gegen die Constraints des Metamodells
- Transformationen zwsch. Metamodellen (mehrstufig)
- Verbindlicher Ausgangspunkt für Codegenerierung
- Referent für Werkzeugintegration
Aspekte der Compliance von Tools
- abstr. Syntax: Metaklassen, Strukturen (Beziehungen), Constraints, I/O
- konkrete Syntax: Falls abs. Syntax compliant, dann auch konkret
- Diagramm-Austausch: Falls abs. und konkr. Syntax compliant, kann auch Diag-Austausch möglich sein
MOF
Meta Object Facility
OCL
Object Constraint Language
Modelltransformationssprache, um Ausdrücke und Constraints zu beschreiben
OCL?
- Sprache für Ausdrücke und BEdingungen in UML
- Wichtig für formale Interpretation von UML-Modellen
- Steht wie ein Kommentar im UML-Modell
Modelltransformationssprachen
QVT
ATL
OCL
Constraint… (OCL)
…legt einen oder mehrere Werte in oo-System fest
Ausdrücke beschreiben…OCL
(steht für einen Wert)
- Anfangswert eines Attributs oder Assoziations-Endes
- Ableitungsregel für ein Attr. oder Assoz.-Ende
- Auswirkung einer Operation
- Instanz in einem dyn. Diagramm
- Bedingung in einem dyn. Diagramm
- Konkrete Parameterwerte in dyn. Diagramm
Context…OCL
-Ausdruck bezieht sich auf irgendein UML-Element wie
Klasse, Interface, Constraint od. Operation
OCL Constraintstypen
- Invariante einer Klasse, eines Typs od. Interfaces
- Precondition einer Operation
- Postcondition einer Operation
- Guard einer Transition
OCL Constraintstypen
- Invariante einer Klasse, eines Typs od. Interfaces
- Precondition einer Operation
- Postcondition einer Operation
- Guard einer Transition
Invariante einer Klasse, eines Typs od. Interfaces
…Bedingung, die stets und von allen Instanzen erfüllt sein muss.
Precondition einer Operation
…Einschränkung, die beim Aufruf erfüllt sein muss.
Feature def.
…Eigenschaft oder Merkmal von SW, das für Benutzer erkennbar und unterscheidungsbildend ist.
Wo sind Features besonders wichtig?
..in Software Product Lines (Produktlinien)
Feature model def.
…modelliert Zusammenhang (Abhängigkeiten) zwsch. Features.
Metamodell beschreibt…
..relevante Konzepte der Domäne.
Metamodell beschreibt…(Diagramm)
..relevante Konzepte der Domäne.
Formales Modell…(Diagramm)
..ist instance of Metamodell
…erhält Bedeutung durch Semantik.
…wird ausgedrückt mit Konkrete Syntax.
…respektiert die statische Semantik.
Konkrete Syntax… (Diagramm)
…realisiert Abstrakte Syntax.
Herausforderungen der Modellgetriebene Integration…
- MDSD ist selten reine Neuentwicklung.
- oft existieren Legacy Systems -> einbinden oder ersetzen
- Aufgabe: APIs, Daten- und Protokolltransformationen integrieren
(Legacy Systems: outdated computer systems, programming languages or application software that are used instead of available upgraded versions. )
Wichtig für MDSD:
- auch Schnittstellen und Übergänge modellieren
- skripts und Integrationscode dabei generieren
- nicht manuell dazwischen gehen
Wie modellieren Schnittstellen und Übergänge?
- stereotyping für einfache Fälle
- eigene, kleine DSL dafür erstellen, falls komplizierter
- markieren, was auf Dauer wegfallen soll
Wie Skripts und Integrationscode generieren?
- umgang mit Legacy-Systemen automatisieren
- einfach abschalten, sobald legacy ersetzt ist
KOMBINATION manueller und generierter Codeteile?
- Gut: manuellen Code durch Generierung einbinden
- schlecht: das Generat manuell verändern
- generierten Code nicht verwalten, bei Bedarf neu generieren
- manuell und generiert klar abgrenzen
Wie kann man manuell und generierten Codeteile ABGRENZEN?
- architektur benutzen, die regelt was generiert und wie kombiniert wird
- separate Dateien
- Koordinierte Entwicklungsstränge für manuell + generiert
- Prozess, um inkonsistente Änderungen zu vermeiden
Protected Areas:
- aus Modell Methodenrümpfe generieren
- Platzhalter für manuellen Code
- Wird manuell gefüllt
- Bei Neugenerierung wird manueller Code übernommen
Nachteile Protected Areas
aufwändig
fehleranfällig
alles in eine Datei
Manuell+generiert Integration mit Schichten
Modellschicht - generierte, abstr. Mittelklasse(verbindet manuellen Code und Plattform)
————————————
Applikations-logik-Schicht - manuell implementiert, nicht-abstr. Klasse
XSLT
eXtensible Stylesheet Language Template
Templates und Metamodell
- Spezifikation wird geparst, sie beruht auf Metamodell
- Das (evtl. erweiterte, angepasste) Metamodell wird instanziiert
- Code wird aus Templates und Metamodellinstanz generiert
API-basierte Generatoren…
- Generator hat API
- Client-Programm verwendet es, um Code zu erstellen
- API beruht au dem Abstract Syntax Tree AST
- Code wird eine konkrete Instanz von AST (ConcreteST)
XText…
…ist ein Framework für die Entwicklung von Programmiersprachen und DSLs, welche nicht nur ein Parser generiert, sonder auch ein Klassen modell sowie einen abstrakten Syntaxbaum.
In Codegenerierung wird benutzt, um aus der frei definierte Grammatik einen Metamodell (ecore Modell) zu generieren.
XPand…
… ist eine in Codegenerierung für Eclipse Modeling Framework spezialisierte Sprache.
In Codegenerierung XPand benutzt das aus Xtext generierte Metamodell, sowie vorgeschriebene Templates und Extensions um einen Generator zu erzeugen, welche wenn gestartet, Java.Dateien erzeugen kann.
XText…
…ist ein Framework für die Entwicklung von Programmiersprachen und DSLs, welche nicht nur ein Parser generiert, sonder auch ein Klassen modell sowie einen abstrakten Syntaxbaum.
In Codegenerierung wird benutzt, um aus der frei definierte Grammatik einen Metamodell (ecore Modell) zu generieren.
KLAUSUR-AUFGABE!!!!!
Idee der Generierung von Codeteilen…
- komplexe Funktionen auf höherer Ebene modellieren
- Details und wiederkehrende Teile automatisch hinzufügen
- Die generierten Teile zu einer Plattform und zu manuell erstellten Teilen hinzufügen; das gesamte System entsteht
XSLT…
..ist eine Turing-vollständige Programmierprache, die benutzt wird, um XML-Dokumente in das gewünschte Ausgabeformat zu transformieren und dient zur Definition von Umwandlungsregeln.
In Codegenerierung, aus die in XML definierte DSL wird mit Hilfe von Template Regeln bzw. Kommandos in XSLT direkt Java-code generiert.
KLAUSUR-AUFGABE!!!!!
Codegenerierung xtext:
- Frei wählbare Notation DSL als Ausgangsbasis
- wird Code generiert
Codegenerierung XSLT:
Vorteile
Nachteile
- die DSL wird immer in XML-Datei(en) definiert, welche als Modell dient(dienen)
- wird Code generiert
+ plattformunabhängig
+ bekannt
+ kann Teile oder ganzen Code erzeugen
- Input ist immer in XML
- keine besonders anwendernahe Sprache
Codegenerierung xtext:
- hat frei wählbare Notation DSL als Ausgangsbasis
- wird Code generiert
XSLT-Transformationsvorschrift enthält…
mindestens eine Regel oder “template rules”
Template rules bestehen aus..
- ein XPath pattern - ausdruck
- ein Template
xPath pattern gibt an…
…auf welchem/n Knoten im Baum sich die Regel bezieht.
… query language für Knoten in XML-Dokument.
Template beschreibt…
…die Wirkung der Transformation oder beschreibt Output in Abhängigkeit von Input.
Protected Areas sind…
ausführliche Def.
… ein Mittel zur Integration von manuell geschriebenen Code in generierten Code. Protected Areas sollen dabei eine Lösung zu dem Problem bieten, wie man manuelle und generierte Code-Teile kombiniert und konsistent hält.
Idee von Protected Areas:
..ist es, aus einem Modell die vorhandenen Methodenrümpfe zu generieren, während die Methoden dann manuell geschrieben werden.