160 likes | 260 Views
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
E N D
Vortrag im Rahmen des Seminars Modellgetriebene Softwareentwicklung Nico Suchold suchold @ cs.uni-magdeburg.de openArchitectureWareTool-Suite für modellgetriebene Softwareentwicklung
Nico Suchold Inhalt Historie und Einordnung Kern-Kompetenz Das Generator-Framework Metamodellierung Templates Integration Zusammenfassung und Ausblick
Nico Suchold 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
Nico Suchold 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
Nico Suchold 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
Nico Suchold 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
Nico Suchold 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
Nico Suchold 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>
Nico Suchold Metamodellierung IV <MetaMap> <Mapping> <Map>Geschaeftsobjekt</Map> <To>Geschaeftsobjekt</To> </Mapping> </MetaMap> Instantiierung
Nico Suchold 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
Nico Suchold Templates II
Nico Suchold Templates III instantiierte Metaklasse aus dem Modell Ausschnitt aus der Templatedatei <<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>> generierte Datei RechnungErstellen.java 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 REGION ID(I197eb84m10365753ca2mm4784) START*/ // place code here /*PROTECTED REGION END*/ } }
Nico Suchold 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
Nico Suchold 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
Nico Suchold 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
Vielen Dank für Ihr Interesse ! Nico Suchold