H. Fritzsche Modellgetriebene Softwareentwicklung Projektseminar.

28
H. Fritzsche Modellgetriebene Softwareentwicklung Projektseminar

Transcript of H. Fritzsche Modellgetriebene Softwareentwicklung Projektseminar.

Page 1: H. Fritzsche Modellgetriebene Softwareentwicklung Projektseminar.

H. Fritzsche

Modellgetriebene Softwareentwicklung

Projektseminar

Page 2: H. Fritzsche Modellgetriebene Softwareentwicklung Projektseminar.

H. Fritzsche

1. Idee der SF

Grafik

1. Was muss installiert werden?

Page 3: H. Fritzsche Modellgetriebene Softwareentwicklung Projektseminar.

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

Page 4: H. Fritzsche Modellgetriebene Softwareentwicklung Projektseminar.

H. Fritzsche

Page 5: H. Fritzsche Modellgetriebene Softwareentwicklung Projektseminar.

H. Fritzsche

• Der Kern steuert die Ausführung der Cartridge

• Modell wird an Cartridge übergeben

Page 6: H. Fritzsche Modellgetriebene Softwareentwicklung Projektseminar.

H. Fritzsche

Page 7: H. Fritzsche Modellgetriebene Softwareentwicklung Projektseminar.

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

Page 8: H. Fritzsche Modellgetriebene Softwareentwicklung Projektseminar.

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

Page 9: H. Fritzsche Modellgetriebene Softwareentwicklung Projektseminar.

H. Fritzsche

STEP 1: Define the Model Using Annotated Java

1. Neues EMF-Projekt kreieren:

Page 10: H. Fritzsche Modellgetriebene Softwareentwicklung Projektseminar.

H. Fritzsche

Es wird folgendes erzeugt:

2. Jetzt wird src „von Hand“ gefüllt.einzeln, immer beginnend beim Kontextmenü von src:

Page 11: H. Fritzsche Modellgetriebene Softwareentwicklung Projektseminar.

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)

Page 12: H. Fritzsche Modellgetriebene Softwareentwicklung Projektseminar.

H. Fritzsche

Weiter bei STEP 2:

Page 13: H. Fritzsche Modellgetriebene Softwareentwicklung Projektseminar.

H. Fritzsche

Ecore:

Page 14: H. Fritzsche Modellgetriebene Softwareentwicklung Projektseminar.

H. Fritzsche

Page 15: H. Fritzsche Modellgetriebene Softwareentwicklung Projektseminar.

H. Fritzsche

STEP 2: Generate the EMF Model Code

Page 16: H. Fritzsche Modellgetriebene Softwareentwicklung Projektseminar.

H. Fritzsche

Das generierte Modell zum EMF-Projekt:

Page 17: H. Fritzsche Modellgetriebene Softwareentwicklung Projektseminar.

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.

Page 18: H. Fritzsche Modellgetriebene Softwareentwicklung Projektseminar.

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>

Page 19: H. Fritzsche Modellgetriebene Softwareentwicklung Projektseminar.

H. Fritzsche

<eClassifiers xsi:type="ecore:EEnum" name="BookCategory"> <eLiterals name="Mystery"/> <eLiterals name="ScienceFiction" value="1"/> <eLiterals name="Biography" value="2"/>

</eClassifiers>

Page 20: H. Fritzsche Modellgetriebene Softwareentwicklung Projektseminar.

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>

Page 21: H. Fritzsche Modellgetriebene Softwareentwicklung Projektseminar.

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>

Page 22: H. Fritzsche Modellgetriebene Softwareentwicklung Projektseminar.

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

Page 23: H. Fritzsche Modellgetriebene Softwareentwicklung Projektseminar.

H. Fritzsche

Code-Generierung

beginnt beim Generatormodell

Über Kontextmenü

Page 24: H. Fritzsche Modellgetriebene Softwareentwicklung Projektseminar.

H. Fritzsche

Das Edit-plugin enthält Adapter

Das Editor-pluginEnthält einen Editor

Page 25: H. Fritzsche Modellgetriebene Softwareentwicklung Projektseminar.

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.

Page 26: H. Fritzsche Modellgetriebene Softwareentwicklung Projektseminar.

H. Fritzsche

Page 27: H. Fritzsche Modellgetriebene Softwareentwicklung Projektseminar.

H. Fritzsche

Eine Fehlerursache sind die fehlenden Dependencies :

Page 28: H. Fritzsche Modellgetriebene Softwareentwicklung Projektseminar.

H. Fritzsche