Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Wirtschaftsinformatik Christian Mehring 29.05.2007 Im Rahmen des Seminars „Ausgewählte Themen des Softwareengineering“

Ähnliche Präsentationen


Präsentation zum Thema: "Wirtschaftsinformatik Christian Mehring 29.05.2007 Im Rahmen des Seminars „Ausgewählte Themen des Softwareengineering“"—  Präsentation transkript:

1 Wirtschaftsinformatik Christian Mehring c.mehring@uni-muenster.de 29.05.2007 Im Rahmen des Seminars „Ausgewählte Themen des Softwareengineering“

2 2 Gliederung ■Einführung ■ openArchitectureWare ■ Entwicklungsprozess ■ Beispielimplementierung ■Modellierung ■ Metamodell ■ Modell ■ Modellüberprüfung ■Generator ■Code-Integration ■Fazit

3 3 openArchitectureWare ■Generatorframework zur Codeerzeugung aus Modellen ■Ganzheitliche Unterstützung des Erstellungsprozesses ■Ansatz: Metamodell + Templates ■Ziel: Erzeugung von technischem, redundantem Code  nicht 100% generieren, sondern die „langweiligen“ 50-70% ■Unterstützung durch Eclipse-Plugins ■Einsatzbeispiele ■ Webanwendungen ■ Embedded Systeme ■ Wissenschaftliche Anwendungen

4 4 OAW: Funktionsweise ■Modell einlesen und überprüfen ■Codeerzeugung ■ Modell wird an Generator übergeben ■ Template verarbeitet Modellelemente und erstellt Code

5 5 Entwicklungsprozess Referenz- implementierung (Meta-) Modellierung Generator- entwicklung Manuelle Implementierung Domänenanalytiker DomänenarchitektAnwendungs- entwickler

6 6 Beispielimplementierung ■Web-Anwendung zur Produktbestellung ■4-Schichten Architektur ■Möglichst wenig Code generieren, vorhandene Funktionalität nutzen ■ Java Enterprise Edition (JEE) ■ Spring Framework, insb. Webflow ■Was lässt sich generieren? ■ EJB Modell: Datenhaltung, einfache Geschäftslogik ■ Spring Modell: Konfiguration, Actionklassen ■Manuelle Implementierung: JSPs, erweiterte G‘logik

7 7 EJB Metamodell

8 8 EJB Modell ■Generiert werden hieraus: ■ Entitybeans ■ Sessionbeans mit Datenmanipulations- und Lesemethoden für die referenzierten Entities

9 9 Spring Konfiguration: Metamodell View Daten und Anbindung G‘logik Zustandsautomat

10 10 Unterstützung für die Metamodellierung: xText Grammatik Metamodell: Entity : "entity" name=ID "{" (features+=Feature)+ "}" ; Abstract Feature: Attribute | Reference ; Attribute : "attr" type=Datatype name=ID ";" ; Reference : "ref" type=ID (multiple?"[]")? name=ID (" " oppositeName=ID)? ";" ; Grammatik-konformes Modell: entity Produkt { attr string name; attr int preis; } entity Bestellung { attr string datum; attr int menge; ref Produkt ware; } entity Kunde { attr int kundennummer; attr string name; attr string kennwort; ref Bestellung[] bestellungen Bestellung; }  erzeugt: Metamodell in Ecore, Parser, Editor, Fehlerprüfung

11 11 Zugriff auf das Modell: Expressions-Language ■Wie arbeiten Metamodell und Modell zusammen? Expressions-Language Elemente: // Zugriff auf ein Attribut e.name  bspw. „Kunde“ // Suche in Listen entities.select(e|e.features.size == 0); // Nur best. Typ selektieren features.typeSelect(Attribute); /* Eigene Expressions definieren */ // Alle Referenzen des Entities references(Entity this) : features.typeSelect(Reference); // Entityname für Javaklassennamen javaClassname(Entity this) : name.toFirstUpper();

12 12 Modellüberprüfung: Check-Language ■Syntaxfehler werden durch Editor vermieden ■Überprüfungen auf semantische Beschränkungen: ■ Vom Modellierer festzulegen ■ Verwendet Expressions-Language ■ Vergleichbar mit der OCL, aber weniger detailliert ■Generatorlauf nur bei fehlerfreier Prüfung ■Direkte Prüfung bei Verwendung des xText-Editors ■Beispiel: context Entity ERROR "Entities müssen eindeutig benannt sein: " + name : // silbings() gibt eine Liste mit den Geschwistern des Entities zurück silbings().select(e|e.name == name).size == 1;

13 13 Ergebnis der Modellierung ■Analyse der Domäne ■Warum Ecore in diesem Fall? ■ Einfachere API für den Zugriff ■ Probleme mit XMI-Datenformat für UML2 ■Textbasierte Metamodellierung mit xText ■ Erzeugt Ecore Metamodell ■ Integriert Modellüberprüfungen ■ Eclipse-Editor zur Erstellung der Modelle ■Eclipse-GMF als Erweiterung für grafische Modellierung ■Das Modell ausbeuten!

14 14 Generator: Templatesprache Xpand ■Wie kann das Modell in Code überführt werden? «IMPORT metamodel» «EXTENSION myJavaExtensions» «DEFINE javaClassImpl FOR Entity» «FILE name + ".java"» /** Implementierung für Entity «name» */ public class «name» { «FOREACH features AS this» private «type» «name»; «ENDFOREACH» } «ENDFILE» «ENDDEFINE» «FILE javaFilename(this) » /** Implementierung für Entity «name» */ public class «javaClassname(this)» { «FOREACH features AS this» private «type» «name»; «ENDFOREACH» } «ENDFILE» /** Implementierung für Entity Produkt */ public class Produkt { private String name; private int preis; }  Datei Produkt.java

15 15 Generator: Eigenschaften und Anforderungen ■Überlagern von Templates: ■Erweiterungsmöglichkeiten ■ Expressions-Language ■ Java-Extensions ■ Einbinden vorgefertigter Generatoren: Cartridges ■Erzeuge gut lesbaren Code: ■ Code-Beautifier zur Formatierung ■ Kommentare! ■ Modell und Template im Quelltext vermerken «DEFINE javaClassImpl FOR Entity» «EXPAND implFeature FOREACH features» «ENDDEFINE» «DEFINE implFeature FOR Attribute» // generierter Code für das Attribut «ENDDEFINE» «DEFINE implFeature FOR Reference» // generierter Code für die Referenz «ENDDEFINE»

16 16 Beispielimplementierung: Generatorstruktur

17 17 Code-Integration ■Verknüpfung von automatischem und manuellem Code notwendig ■„Never touch generated code!“ ■Mögliche Ansätze ■ Problematisch: Geschützte Bereiche in generierten Dateien ■ Besser: Integration über Möglichkeiten der OOP ■Recipes: Komponente zur Überprüfung der Integrationsrichtlinien in Eclipse ■Versionierung ■ Metamodell und Modell ■ Templates und Generator-Konfiguration ■ Manuell erstellte Komponenten

18 18 Fazit ■„A fool with a tool is still a fool!“ M. Völter ■Komplex, hoher Einarbeitungsaufwand ■ Technisches Projektsetup: Eclipse-Plugin-Hölle ■ Zusammenspiel der Komponenten ■Flexibel einsetzbar ■ Beliebige Metamodellierungen ■ Erweiterbarkeit ■ Auch für Spezialgebiete geeignet ■Einsatz nur sinnvoll, wenn mehrfache Verwendung möglich ■Alternativen prüfen  OAW ist bei passenden Projektvoraussetzungen empfehlenswert. generator

19 19 Vielen Dank! ■Fragen, Diskussion


Herunterladen ppt "Wirtschaftsinformatik Christian Mehring 29.05.2007 Im Rahmen des Seminars „Ausgewählte Themen des Softwareengineering“"

Ähnliche Präsentationen


Google-Anzeigen