Top Banner
irtschaftsinformatik Christian Mehring [email protected] 29.05.2007 Im Rahmen des Seminars „Ausgewählte Themen des Softwareengineering“
19

Wirtschaftsinformatik Christian Mehring [email protected] 29.05.2007 Im Rahmen des Seminars „Ausgewählte Themen des Softwareengineering“

Apr 06, 2016

Download

Documents

Ewald Kerner
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Wirtschaftsinformatik Christian Mehring c.mehring@uni-muenster.de 29.05.2007 Im Rahmen des Seminars „Ausgewählte Themen des Softwareengineering“

Wirt

scha

ftsin

form

atik

Christian [email protected]

Im Rahmen des Seminars „Ausgewählte Themen des Softwareengineering“

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

2

Gliederung

■ Einführung■ openArchitectureWare■ Entwicklungsprozess■ Beispielimplementierung

■ Modellierung■ Metamodell■ Modell■ Modellüberprüfung

■ Generator■ Code-Integration■ Fazit

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

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

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

4

OAW: Funktionsweise

■ Modell einlesen und überprüfen■ Codeerzeugung

■ Modell wird an Generator übergeben■ Template verarbeitet Modellelemente und erstellt Code

Parser Metamodell-Instantiator

Metamodell-Instanz Code Generator

Eingabe-Modell

Metamodell-Klassen Templates Generierter

Code

openArchitectureWareQuelle: Stahl, Völter (2005)

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

5

Entwicklungsprozess

Referenz-implementierung

(Meta-)Modellierung

Generator-entwicklung

ManuelleImplementierung

Domänenanalytiker Domänenarchitekt Anwendungs-entwickler

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

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

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

7

EJB Metamodell

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

8

EJB Modell

■ Generiert werden hieraus:■ Entitybeans■ Sessionbeans mit

Datenmanipulations- und Lesemethoden für die referenzierten Entities

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

9

Spring Konfiguration: Metamodell

View

Daten und Anbindung G‘logik

Zustandsautomat

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

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

Christian Mehring
Zeitabhängig, kann evtl. noch rausfliegen...
Page 11: Wirtschaftsinformatik Christian Mehring c.mehring@uni-muenster.de 29.05.2007 Im Rahmen des Seminars „Ausgewählte Themen des Softwareengineering“

11

Zugriff auf das Modell: Expressions-Language

■ Wie arbeiten Metamodell und Modell zusammen?Expressions-Language Elemente:// Zugriff auf ein Attribute.name bspw. „Kunde“

// Suche in Listenentities.select(e|e.features.size ==

0);

// Nur best. Typ selektierenfeatures.typeSelect(Attribute);

/* Eigene Expressions definieren */// Alle Referenzen des Entitiesreferences(Entity this) : features.typeSelect(Reference);

// Entityname für Javaklassennamen

javaClassname(Entity this) :name.toFirstUpper();

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

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;

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

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!

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

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

Christian Mehring
evtl. kann man hier noch die Folie mit der Projekttemplatestruktur bringen.
Page 15: Wirtschaftsinformatik Christian Mehring c.mehring@uni-muenster.de 29.05.2007 Im Rahmen des Seminars „Ausgewählte Themen des Softwareengineering“

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»

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

16

Beispielimplementierung: Generatorstruktur

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

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

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

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

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

19

Vielen Dank!

■ Fragen, Diskussion