H. Fritzsche Modellgetriebene Softwareentwicklung Projektseminar.
-
Upload
gerfried-heist -
Category
Documents
-
view
112 -
download
5
Transcript of H. Fritzsche Modellgetriebene Softwareentwicklung Projektseminar.
H. Fritzsche
Modellgetriebene Softwareentwicklung
Projektseminar
H. Fritzsche
1. Idee der SF
Grafik
1. Was muss installiert werden?
H. Fritzsche
• Das zu entwickelnde Metamodell ist Ecore-basiert und wird von Ecore abgeleitet(Es gibt grundsätzlich zwei Möglichkeiten: - Ecore oder
- UML2 + Profile• GMF ist auf EMF-Metamodelle ausgerichtet (Editorerstellung)
• Zieltechnologien (Plattformen, Frameworks) sollen für konkretes Projektindividuell auswählbar sein Cartridges
Idee der SF
H. Fritzsche
H. Fritzsche
• Der Kern steuert die Ausführung der Cartridge
• Modell wird an Cartridge übergeben
H. Fritzsche
H. Fritzsche
Was muss installiert werden?
• Arbeit mit Eclipse Galileo, die Factory wird in Eclipse installiert
• Aufnahme EMF in Eclipse-Umgebung (features, plugins)
• Neues EMF-Projekt kreieren (SF-Student)
• Erweiterung um Cartridges durch ein Plug-in-Projekt
- Definition eigener Erweiterungspunkte
H. Fritzsche
Das nachfolgende Beispiel für ein EMF-Projekt entspricht genau dem Tutorial. Es umfasst folgende Schritte:
Step 0: Vorbereitungen
Step 1: (Import the Model from Rose or) Define the Model Using Annotated Java
Step 2: Generate the EMF Model Code
Step 3: Generate an Editor for the Model
Step 4: Run the Generated Editor
H. Fritzsche
STEP 1: Define the Model Using Annotated Java
1. Neues EMF-Projekt kreieren:
H. Fritzsche
Es wird folgendes erzeugt:
2. Jetzt wird src „von Hand“ gefüllt.einzeln, immer beginnend beim Kontextmenü von src:
H. Fritzsche
3. Jetzt wird das EMF-Modell erzeugt:
Hier ist ein Unterschied zum Tutorial
Die Rubrik „EMF Model“ gibt Es nicht, statt dessen „EMF Generator Model“
(hat keine weiteren Auswirkungen)
H. Fritzsche
Weiter bei STEP 2:
H. Fritzsche
Ecore:
H. Fritzsche
H. Fritzsche
STEP 2: Generate the EMF Model Code
H. Fritzsche
Das generierte Modell zum EMF-Projekt:
H. Fritzsche
Ein • ecore-Modell library.ecore und • eine Generatormodell library.genmodel
wurden erzeugt. Beide Modelle sind xml-Dateien. library ist der Package-Name.
Das Generatormodell steuert die Codeerzeugung.
►
►
H. Fritzsche
<?xml version="1.0" encoding="UTF-8"?> <ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
name="library" nsURI="http:///org/eclipse/example/library.ecore" nsPrefix="org.eclipse.example.library">
<eClassifiers xsi:type="ecore:EClass" name="Book"> <eStructuralFeatures xsi:type="ecore:EAttribute" name="title"
eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="pages" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt" defaultValueLiteral="100"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="category" eType="#//BookCategory"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="author" eType="#//Writer"eOpposite="#//Writer/books"/>
</eClassifiers>
H. Fritzsche
<eClassifiers xsi:type="ecore:EEnum" name="BookCategory"> <eLiterals name="Mystery"/> <eLiterals name="ScienceFiction" value="1"/> <eLiterals name="Biography" value="2"/>
</eClassifiers>
H. Fritzsche
<eClassifiers xsi:type="ecore:EClass" name="Library"> <eStructuralFeatures xsi:type="ecore:EAttribute"
name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="writers" upperBound="-1" eType="#//Writer" containment="true" resolveProxies="false"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="books" upperBound="-1" eType="#//Book" containment="true" resolveProxies="false"/>
</eClassifiers>
H. Fritzsche
<eClassifiers xsi:type="ecore:EClass" name="Writer"> <eStructuralFeatures xsi:type="ecore:EAttribute"
name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="books" upperBound="-1" eType="#//Book" eOpposite="#//Book/author"/>
</eClassifiers>
</ecore:EPackage>
H. Fritzsche
• Nach der Generierung sollen die Klassen-Interfaces und die enum classerzeugt sein
• and a new pair of interfaces will have been created for the package itself and for the factory.
• 2 neue packages, with "impl" and "util" suffixes, which contain implementations of the interfaces and additional utility classes,
• and both types of manifest files for the model plug-in: "plugin.xml" and "MANIFEST.MF".
STEP 3: Generate an Editor for the Model
H. Fritzsche
Code-Generierung
beginnt beim Generatormodell
Über Kontextmenü
H. Fritzsche
Das Edit-plugin enthält Adapter
Das Editor-pluginEnthält einen Editor
H. Fritzsche
Um die neuen Plugins zu testen, muss eine zweite Eclipse-Instanz gestartet werden.
►
►
STEP 4: Run the Generated Editor
Select one of the projects and then choose "Run As/Eclipse Application" from the "Run" menu or toolbar drop-down.
H. Fritzsche
H. Fritzsche
Eine Fehlerursache sind die fehlenden Dependencies :
H. Fritzsche