16
Seminar Modellgetriebene Softwareentwicklung openArchitectureWare Tool-Suite für modellgetriebene Softwareentwicklung Vortrag im Rahmen des Seminars Modellgetriebene Softwareentwicklung Nico Suchold suchold @ cs.uni-magdeburg.de

openArchitectureWare Tool-Suite für modellgetriebene Softwareentwicklung

  • Upload
    rufus

  • View
    28

  • Download
    0

Embed Size (px)

DESCRIPTION

Vortrag im Rahmen des Seminars Modellgetriebene Softwareentwicklung Nico Suchold suchold @ cs.uni-magdeburg.de. openArchitectureWare Tool-Suite für modellgetriebene Softwareentwicklung. Inhalt. Historie und Einordnung Kern-Kompetenz Das Generator-Framework Metamodellierung Templates - PowerPoint PPT Presentation

Citation preview

Page 1: openArchitectureWare Tool-Suite für modellgetriebene Softwareentwicklung

Seminar Modellgetriebene Softwareentwicklung

openArchitectureWareTool-Suite für modellgetriebene Softwareentwicklung

Vortrag im Rahmen des Seminars Modellgetriebene Softwareentwicklung

Nico Sucholdsuchold @ cs.uni-magdeburg.de

Page 2: openArchitectureWare Tool-Suite für modellgetriebene Softwareentwicklung

openArchitectureWareNico Suchold 2

Seminar Modellgetriebene Softwareentwicklung

Inhalt

Historie und Einordnung

Kern-Kompetenz

Das Generator-Framework

Metamodellierung

Templates

Integration

Zusammenfassung und Ausblick

Page 3: openArchitectureWare Tool-Suite für modellgetriebene Softwareentwicklung

openArchitectureWareNico Suchold 3

Seminar Modellgetriebene Softwareentwicklung

Historie und Einordnung

entstanden aus dem kommerziellen Produkt b+m Generator FrameWork der b+m Informatik AG

wurde 14.09.2003 unter LGPL (Lesser General Public License) als Open Source zur Verfügung gestellt

Java-implementiertes, MDSD-konformes Framework Metamodell-basierte, domainspezifische Sprachen (abstrakte

Syntax, konkrete Syntax) Transformation durch Templates (Semantik) definierte Plattform manuelle Ergänzung

Page 4: openArchitectureWare Tool-Suite für modellgetriebene Softwareentwicklung

openArchitectureWareNico Suchold 4

Seminar Modellgetriebene Softwareentwicklung

Kern-Kompetenz

Jede Form von Modellinformationen ist auswertbar

beliebige Ausgabeformate generierbar (Java, XML, PHP etc.)

explizites Domain-Metamodell

einfache Template-Sprache

gute Integrationsfähigkeit

umfangreiche Dokumentation

Page 5: openArchitectureWare Tool-Suite für modellgetriebene Softwareentwicklung

openArchitectureWareNico Suchold 5

Seminar Modellgetriebene Softwareentwicklung

Das Generator-Framework

Parser analysiert Inputmodell (z.B. XMI-Format) Instantiator bildet Instanzen des Metamodells zum

geparsten Modell auf Basis Plattform-spezifischer Templates erzeugt Code

Generator den zu generierenden Code

Page 6: openArchitectureWare Tool-Suite für modellgetriebene Softwareentwicklung

openArchitectureWareNico Suchold 6

Seminar Modellgetriebene Softwareentwicklung

Metamodellierung I

reduziertes, praxis-orientiertes UML-Metamodell vorhanden und bildet Basis-Metamodell

wird repräsentiert durch Basis-Metaklassen des Generator-Frameworks

Basis-Metamodell wird um Elemente der eigenen Anwendungsarchitektur erweitert um DSL abzubilden

Page 7: openArchitectureWare Tool-Suite für modellgetriebene Softwareentwicklung

openArchitectureWareNico Suchold 7

Seminar Modellgetriebene Softwareentwicklung

Metamodellierung II

für abgeleitete Element des Metamodells müssen die jeweiligen Metaklassen erstellt werden

am einfachsten mittels Vererbung der Basis-Metaklassen und Implementierung speziell benötigter Methoden zu realisieren

Page 8: openArchitectureWare Tool-Suite für modellgetriebene Softwareentwicklung

openArchitectureWareNico Suchold 8

Seminar Modellgetriebene Softwareentwicklung

Metamodellierung III

mittels der Mapping-Datei wird z.B. der Stereotyp Geschaeftsobjekt auf die erstellte Metaklasse Geschaeftsobjekt abgebildet

<MetaMap><Mapping>

<Map>Geschaeftsobjekt</Map>

<To>Geschaeftsobjekt</To></Mapping>

</MetaMap>

Page 9: openArchitectureWare Tool-Suite für modellgetriebene Softwareentwicklung

openArchitectureWareNico Suchold 9

Seminar Modellgetriebene Softwareentwicklung

Metamodellierung IV

Instantiierung

<MetaMap><Mapping>

<Map>Geschaeftsobjekt</Map>

<To>Geschaeftsobjekt</To>

</Mapping></MetaMap>

<MetaMap><Mapping>

<Map>Geschaeftsobjekt</Map>

<To>Geschaeftsobjekt</To>

</Mapping></MetaMap>

Page 10: openArchitectureWare Tool-Suite für modellgetriebene Softwareentwicklung

openArchitectureWareNico Suchold 10

Seminar Modellgetriebene Softwareentwicklung

Templates I

dienen der Beschreibung der Codegenerierungsvorschriften

werden mit oAW-eigener Sprache Xpand erstellt

sehr einfache Sprache mit wenigen Sprachelementen

Templatedatei besteht aus beliebig vielen DEFINE-Blöcken

Rumpf der DEFINE-Blöcke enthält beliebigen Text, Tags mit << und >> geklammert und Xpand-Kommentare

Tags steuern die Generierung und Text wird unverändert in den Output geschrieben

Page 11: openArchitectureWare Tool-Suite für modellgetriebene Softwareentwicklung

openArchitectureWareNico Suchold 11

Seminar Modellgetriebene Softwareentwicklung

Templates II

Page 12: openArchitectureWare Tool-Suite für modellgetriebene Softwareentwicklung

openArchitectureWareNico Suchold 12

Seminar Modellgetriebene Softwareentwicklung

Templates III

<<DEFINE Root FOR Geschaeftsprozess>><<FILE Name“.java“>>

public class <<Name>> // Geschaeftsprozess { <<EXPAND PropertyDef FOREACH Attribute>> <<EXPAND MethodDef FOREACH Operation>> }

<<ENDFILE>><<ENDDEFINE>><<DEFINE PropertyDef FOR Attribute>>

private <<Type>> <<Name>>; public void <<Name.asSETTER>>(<<Type>> <<Name.asPARAM>>) { <<Name>> = <<Name.asPARAM>>; } public <<Type>> <<Name.asGETTER>> () { return <<Name>>; }<<ENDDEFINE>><<DEFINE MethodDef FOR Operation>>

<<Visibility>> <<ReturnType>> <<Name>> <<NONL>>(<<FOREACH Parameter AS curParam EXPAND USING SEPARATOR “,

“ >> <<curParam.Type>> <<curParam.asPARAM>>

<<ENDFOREACH>>) { <<NL>><<PROTECT CSTART ‘/*’ CEND ‘*/’ ID Id>>

// place code here<<ENDPROTECT>>

}<<ENDDEFINE>>

<<DEFINE Root FOR Geschaeftsprozess>><<FILE Name“.java“>>

public class <<Name>> // Geschaeftsprozess { <<EXPAND PropertyDef FOREACH Attribute>> <<EXPAND MethodDef FOREACH Operation>> }

<<ENDFILE>><<ENDDEFINE>><<DEFINE PropertyDef FOR Attribute>>

private <<Type>> <<Name>>; public void <<Name.asSETTER>>(<<Type>> <<Name.asPARAM>>) { <<Name>> = <<Name.asPARAM>>; } public <<Type>> <<Name.asGETTER>> () { return <<Name>>; }<<ENDDEFINE>><<DEFINE MethodDef FOR Operation>>

<<Visibility>> <<ReturnType>> <<Name>> <<NONL>>(<<FOREACH Parameter AS curParam EXPAND USING SEPARATOR “,

“ >> <<curParam.Type>> <<curParam.asPARAM>>

<<ENDFOREACH>>) { <<NL>><<PROTECT CSTART ‘/*’ CEND ‘*/’ ID Id>>

// place code here<<ENDPROTECT>>

}<<ENDDEFINE>>

public class RechnungErstellen // Geschaeftsprozess{

private int interneNummer;

public void setinterneNummer( int pinterneNummer ) {

interneNummer = pinterneNummer;}public int getinterneNummer () {

return interneNummer;}

public void erstelleRechnungFuerKunde(int pKundennummer) {

/*PROTECTED REGIONID(I197eb84m10365753ca2mm4784) START*/

// place code here/*PROTECTED REGION END*/

}}

public class RechnungErstellen // Geschaeftsprozess{

private int interneNummer;

public void setinterneNummer( int pinterneNummer ) {

interneNummer = pinterneNummer;}public int getinterneNummer () {

return interneNummer;}

public void erstelleRechnungFuerKunde(int pKundennummer) {

/*PROTECTED REGIONID(I197eb84m10365753ca2mm4784) START*/

// place code here/*PROTECTED REGION END*/

}}

generierte Datei RechnungErstellen.java

Ausschnitt aus der Templatedatei

instantiierte Metaklasse aus dem Modell

Page 13: openArchitectureWare Tool-Suite für modellgetriebene Softwareentwicklung

openArchitectureWareNico Suchold 13

Seminar Modellgetriebene Softwareentwicklung

Integration

Projekte zur Integration in UML-Werkzeuge

verschiedene unterstützte UML Dialekte ARIS UML-Designer Gentleware Poseidon for UML Rational Rode + UniSys XML Tools

eigenes Plugin für Integration von oAW in Eclipse anzupassende Build-Skripte auf ANT-Basis Xpand Template Editor Content Outline Page Analyse von Generatorausgaben

Page 14: openArchitectureWare Tool-Suite für modellgetriebene Softwareentwicklung

openArchitectureWareNico Suchold 14

Seminar Modellgetriebene Softwareentwicklung

Zusammenfassung und Ausblick

leichter Einstieg durch Tutorials und Dokumentation

flexibles Framework zur Generierung von Applikationen

Version 4 Anfang 2006 bessere Integration in Eclipse (besseres debuggen) EMF – Unterstützung Erweiterung von XPand

Page 15: openArchitectureWare Tool-Suite für modellgetriebene Softwareentwicklung

openArchitectureWareNico Suchold 15

Seminar Modellgetriebene Softwareentwicklung

Quellenangaben

b+m Informatik AG: Open Generator Framework Referenz, http://architecturware.sourceforge.net/data/openGeneratorFrameWorkReference_de.pdf

Völter M.: Modellgetriebende Softwareentwicklung, http://architecturware.sourceforge.net/data/MDSD.pdf

Völter M.: Metamodellbasierte Codegenerierung in Java, http://architecturware.sourceforge.net/data/MetaModelBasedCodeGen.pdf

Grund M.: MDA Tools, Hasso-Plattner-Institut, http://www.grundprinzip.de/files/MDA_Tools-Martin_Grund.pdf

Thoms K., Holzer B.: Java Magazin 07/2005, Codegenerierung mit dem openArchitectureWare Generator 3.0: The next Generation, http://www.itemis.de/pdf/jm_7_05_94_97.pdf

Thoms K., Gruske M.: Java Magazin 08/2005, openArchitectureWare, Teil 2: Metamodellierung und Tool-Integration: Wenn Architektur zur Ware wird, http://www.itemis.de/pdf/jm_8_05_67_71.pdf

Page 16: openArchitectureWare Tool-Suite für modellgetriebene Softwareentwicklung

openArchitectureWareNico Suchold 16

Seminar Modellgetriebene Softwareentwicklung

Vielen Dank für Ihr Interesse !