openArchitectureWare Tool-Suite für modellgetriebene Softwareentwicklung

Post on 01-Feb-2016

28 views 0 download

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

Transcript of 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

openArchitectureWareNico Suchold 2

Seminar Modellgetriebene Softwareentwicklung

Inhalt

Historie und Einordnung

Kern-Kompetenz

Das Generator-Framework

Metamodellierung

Templates

Integration

Zusammenfassung und Ausblick

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

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

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

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

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

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>

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>

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

openArchitectureWareNico Suchold 11

Seminar Modellgetriebene Softwareentwicklung

Templates II

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

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

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

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

openArchitectureWareNico Suchold 16

Seminar Modellgetriebene Softwareentwicklung

Vielen Dank für Ihr Interesse !