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

Slides:



Advertisements
Ähnliche Präsentationen
interaktiver Web Service Workflows
Advertisements

Forschungszentrum Informatik
Objektrelationales Mapping mit JPA
Blue J.
E-Commerce Shop System
Modellgetriebene Softwareentwicklung
Vortrag im Rahmen des Seminars Modellgetriebene Softwareentwicklung
Übung 5 Mehrstufige Client/Server-Systeme mit Enterprise Java Beans
Datenbankzugriff im WWW (Kommerzielle Systeme)
Java 2 Enterprise Edition (J2EE)
Stefanie Selzer - Pascal Busch - Michael Kropiwoda
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Java: Grundlagen der Sprache
IS: Datenbanken, © Till Hänisch 2000 CREATE TABLE Syntax: CREATE TABLE name ( coldef [, coldef] [, tableconstraints] ) coldef := name type [länge], [[NOT]NULL],
© 2002 Prof. Dr. G. Hellberg 1 XML-Seminar XML-Technologie: XML in Theorie und Praxis Prof. Dr. G. Hellberg XML-Technologie: XML in Theorie und Praxis.
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
Oracle PL/SQL Server Pages (PSP). © Prof. T. Kudraß, HTWK Leipzig Grundidee: PSP – Internet-Seiten mit dynamischer Präsentation von Inhalten durch Einsatz.
Sebastian Grahn Sebastian Kühn
Christian Kästner Modellgetriebene Softwareentwicklung Eclipse Modelling Framework.
Seminar Modellgetriebene Softwareentwicklung Einführung Seminar modellgetriebene Softwareentwicklung WS 05/06 Dipl.-Inf. Nadine Fröhlich Prof. Dr.-Ing.
XDoclet ETIS SS05.
Automatisches Testen und Bewerten von Java-Klassen
PKJ 2005/1 Stefan Dissmann Klassenhierarchie Person Kunde Goldkunde Lieferant Object.
GROOVE Graphs for Object-Oriented Verification Seminar: SEFSIS Sommersemester 2006 Basil Becker
Explizite und editierbare Metainformationen für Software Muster.
Software Engineering Seminar Metamodellierung
DVG Klassen und Objekte
Die Bank von morgen - eine neue Welt für IT und Kunden? 23. Oktober 2001.
CRM Editor auf der Basis von Qt (Beispiel von Ubi erat Lupa)
UML Begleitdokumentation des Projekts
Werkzeugunterstützte Softwareadaption mit Inject/J
Folie 1 Reengineering-Werkzeugen für Webseiten Johannes Martin, University of Victoria Ludger Martin, Technische Universität Darmstadt WSR 2001 Bad Honnef,
Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 5. Test-First Prinzip Gliederung: 1. Einführung 2. Objektdiagramme zur Analyse.
Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 5. Test-First Prinzip Gliederung: 1. Einführung 2. Objektdiagramme zur Analyse.
SOMA Service-Oriented Mobile learning Architecture.
Spezifikation von Anforderungen
Wir bauen uns eine Webapplikation!
Vortrag D. Braun, Praktikum. Übersicht Pleopatra API Pleopatra Tools Twitter Demonstration Ausblick.
MDA – Framework AndroMDA
Aichinger Christian, Strasser Jürgen. Inhalt JSF EJB Praxis - Integration.
Einführung Modellgetriebene Softwareentwicklung, Metamodellierung Stephan Hildebrandt.
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
Innovator Die Komponenten.
SPODAT - Blick nach vorn
Tutorium PG Verbesserung Blatt 5 Beim instanziieren eines Fahrrades muss es möglich sein, alle benötigten Attribute dem Konstruktor zu übergeben.
Ruby Refactoring Plug-In für Eclipse
JavaServer Faces Urs Frei. Inhalt JSF Funktionsweise Rückblick JSP Bestandteile von JSF So einfach ist die Anwendung (Beispiel) Eclipse im Einsatz (Entwicklungsumgebung)
Effiziente Codegenerierung aus UML2 Strukturdiagrammen
Eclipse Modeling Framework (EMF)
Objektorientierte Modellierung mit UML
Generative Softwareentwicklung in der Praxis Olaf Kaus, „Java User Group“, Hannover 6.Oktober 2003.
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
Java-Kurs Übung Benutzeroberflächen und Graphik Frames (Fenster)
Bern University of Applied Sciences Engineering and Information Technology Documentation generator for XML-based description standards Ausgangslage: Die.
Seminar Modellgetriebene Softwareentwicklung Thema 3: Metamodelle – MOF Michél Rieser Prof. Dr.-Ing. habil. Georg Paul
J2EE-Motivation(I) Anforderungen an heutige Software u.a.:
MDA – Model Driven Architecture
Paul, Morten, Yannick Blue J. Entwicklungsumgebung  versteht Java Programmcode  Für die Entwicklung eigener Software  Durch die Programmierung.
Objektorientierte (OO) Programmierung
Eindeutige Personenzuordnung mit lokalen Identifiern via ODATA/LDAP
Technische Universität München Praktikum Mobile Web Teil Kollaboratives Bewerten und Filtern am Touchscreen Robert Eigner
Technische Universität München, Informatik XI Angewandte Informatik / Kooperative Systeme Praktikum Mobile Web 2.0 – 2.Teil Wolfgang Wörndl, Robert Eigner.
, Claudia Böhm robotron*SAB Anwendungsentwicklung mit dem Java und XML basierten Framework robotron*eXForms Simple Application Builder.
© WZL/Fraunhofer IPT Entwicklung einer Profilbörse für Konfigurationen von Smartphones Vortrag der Seminararbeit von Patrick Posor Aachen, den
1. Betreuer: Prof. Dr. Jörg Striegnitz 2. Betreuer: Dr. Martin Schindler Kontextsensitive Autocompletion für Klassendiagramme in der UML/P Florian Leppers.
Verteilte Anwendungen: J2EE
Gewachsene Architektur Das kann nicht funktionieren!
openArchitectureWare in der FIDUCIA IT AG
 Präsentation transkript:

Wirtschaftsinformatik Christian Mehring 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

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 OAW: Funktionsweise ■Modell einlesen und überprüfen ■Codeerzeugung ■ Modell wird an Generator übergeben ■ Template verarbeitet Modellelemente und erstellt Code

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

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 EJB Metamodell

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

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

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 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 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 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 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 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 Beispielimplementierung: Generatorstruktur

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 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 Vielen Dank! ■Fragen, Diskussion