Generative Softwareentwicklung in der Praxis Olaf Kaus, „Java User Group“, Hannover 6.Oktober 2003.

Slides:



Advertisements
Ähnliche Präsentationen
interaktiver Web Service Workflows
Advertisements

Allgemeines Name: Ursprünglich: „Personal Home Page Tools“
Vortrag im Rahmen des Seminars Modellgetriebene Softwareentwicklung
JPQL Java Persistence Query Language
Softwareentwicklung für Android
1 Prof. Dr. Andreas SchmietendorfWS06/07 – Labor C/S-Programmierung Übung 4 Mehrstufige Client/Server-Systeme mit JSPs, Servlets und JavaBeans (Web-Container)
Datenbankzugriff im WWW (Kommerzielle Systeme)
Bastian Cramer, Universität Paderborn Entwurfsmuster für Webanwendungen Projektgruppe: Generierung von Webanwendungen aus visuellen Spezifikationen.
Objektrelationales Mapping mit JPA Getting Started Jonas Bandi Simon Martinelli.
Java 2 Enterprise Edition (J2EE)
Anbindung an Anwendungen
Seminar: XML für Fortgeschrittene Referent: Katrin Apel
Stefanie Selzer - Pascal Busch - Michael Kropiwoda
FH-Hof Servlets Richard Göbel. FH-Hof Konzept Servlets werden auf der Server-Seite durch ein Formular aufgerufen werten die Eingaben aus einem Formular.
Java: Grundlagen der Sprache
ATHOS Benutzertreffen 27.September Report of the Lab Glashütten, 27.September 2007 HighQSoft GmbH, Karst Schaap
XINDICE The Apache XML Project Name: Jacqueline Langhorst
Dynamische Webseiten mit PHP
Oracle – XSQL in der Anwendung SIG Development (Tools) Oracle & XML Kassel, Thomas Matzke, HTWK Leipzig.
Oracle PL/SQL Server Pages (PSP). © Prof. T. Kudraß, HTWK Leipzig Grundidee: PSP – Internet-Seiten mit dynamischer Präsentation von Inhalten durch Einsatz.
Struts Seminar Javabasierte Webanwendungen. Tobias Kutzler2 Überblick Historie Was ist Struts? Model Controller View Zusammenfassung.
Christian Kästner Modellgetriebene Softwareentwicklung Eclipse Modelling Framework.
XDoclet ETIS SS05.
Java Server Pages Implementierung eines Web-Service-Clients Pea 13: Maik Opitz, Martin Melle, Philipp Hake.
Technik Gestaltung Navigation Daten. Übersicht Client Webbrowser InternetServer.
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
Projekt Web Engineering
Projektplan: Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University.
1 Reverse Engineering WS 07 / 08 A. Zündorf. Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University 2 Organisatorisches.
DVG Kommentare1 Kommentare. DVG Kommentare 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht.
DVG Kommentare 1 Kommentare. 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht bis zum Ende der Zeile.
Hänchen & Partner GmbH 1 Web-Anwendungen mit dem Jakarta Struts Framework 3.Juli 2003 Martin Burkhardt.
Web-Anwendungsentwicklung à la MVC. Übersicht Über Georg Heeg Ein industrielles Beispiel Web-Anwendungen aus Smalltalker-Sicht MVC für das Web Programmierdemo.
Smalltalk für Quereinsteiger
Seite Common Gateway Interface. Konzepte. Übersicht 1Einleitung 2Was ist CGI? 3Wozu wird CGI verwendet? 4Geschichtlicher Überblick 5Grundvoraussetzungen.
Systementwicklungsprojekt:
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
SEP Halgurt Mustafa Ali Can Önder Marius Morawski Matthias Seidl Themen: Integration von RDQL und OWQL innerhalb des Apache Cocoon Frameworks Semantische.
PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,
Coccon das Web-XML-Publishing System Thomas Haller.
Einführung Servlets/JSPs
Wir bauen uns eine Webapplikation!
Fachhochschule Köln Institut für Informatik University of Applied Sciences Cologne Institute of Computer Science Campus Gummersbach WPF Datenbanken im.
MDA – Framework AndroMDA
Einführung / Geschichte Einführung / Geschichte Motivation Motivation Beispiel Beispiel Architektur / Komponenten Architektur / Komponenten Konfiguration.
7th German CDISC User Group Basel, 11. März 2010 Willkommen zum Define.xml Workshop.
Architekturen und Techniken für computergestützte Engineering Workbenches.
Übersicht Was ist cocoon? Separation of Concerns Pipeline Modell
Getting Started Persistente Domänenmodelle mit JPA 2.0 und Bean Validation.
Präsentation Velocity. Velocity Allgemein Templets Zusammenhang Templets Java Kontext $ UI $link.
- Velocity Template Engine
CGI (Common Gateway Interface)
Java Server Pages Sergej Keterling
Oliver Spritzendorfer Thomas Fekete
CMS-Kolloquium am 10. Januar 2006
Torque in Turbine Team 4 Josef Bohninger Thomas Lindenhofer
Migration von VFP Anwendungen nach Silverlight Uwe Habermann Venelina Jordanova
TURBINE. Einführung Seit 1999 Java-Framework Integration in Webserver Open Source MVC Muster wird umgesetzt.
Datenbanken im Web 1.
Java Server Pages Technologie zur Erzeugung dynamischer Webseiten basierend auf Java-Servlets Blockseminar Wintersemester 2001/2002Jochen Pfeiffer Seite.
Frameworks
MDA – Model Driven Architecture
Marcel Genzmehr 1 Javabasierte Webtechnologien Web Application Framework Turbine.
1 Servlets Stephan Baldes. 2 Was ist ein Servlet? S E R V L E T = Eine auf Java-Technologie basierte Web-Komponente, die von einem Container.
1 JavaServer Pages Stephan Baldes JavaServer Pages Einführung
Datenbanken Produkte Dienstleistungen Referenzen.
Datenbanken Produkte Dienstleistungen Referenzen.
Controller Werkstatt updaten Werkstatt ws = werkstattarray.get(werkstattId); ws.setName(name); ws.setAnsprechpartner(ansprechpartner); ws.setTelefonnummer(telefonnummer);
Oracle ADF FacesSeite 1 Oracle ADF Faces OPITZ CONSULTING Oracles Implementierung der JavaServer Faces Spezifikation.
Jakarta Struts Quasi-Standard für JSP-basierte Entwicklung: Jakarta Struts Key Features von Struts: Implementierung des Action-Command-Pattern („Model.
 Präsentation transkript:

Generative Softwareentwicklung in der Praxis Olaf Kaus, „Java User Group“, Hannover 6.Oktober 2003

Olaf Kaus, OOT, 6.Oktober Überblick Generator Werkzeug („GVizard“) Problemstellung Ergebnis „Kibs-Live“ Lösungsweg „GVizard“-Live Model Driven Architecture (MDA) Konzepte MDA-Werkzeuge Funktionsweise von „AndroMDA“ MDA-Live (Beispiel-Anwendung)

Olaf Kaus, OOT, 6.Oktober Problemstellung „KIBS“-Anwendung Web-Anwendung JSP/Servlet Struts, Tomcat, TopLink, MS-Access/Oracle Verwaltung von Bauteilen in Kernkraftwerken Problem Dialoge für n-„Einbauteile“ Dialoge haben gleiches Verhalten und ähnliche Datenstrukturen. Anlegen, Suchen, Bearbeiten, Hilfeseite, Druckseite, Excel-Export)

Olaf Kaus, OOT, 6.Oktober Ergebnis Ein Blick auf KIBS!

Olaf Kaus, OOT, 6.Oktober Lösungsweg: Analyse Erstellen von verschiedenen Datei-Typen Java, JSP, HTML, XML Einsatz von Datei-Schablonen (Templates) Platzhalter in Datei Hallo Herr ${empfänger}… Templates müssen Logik enthalten Hallo {if empfänger.geschlecht==mänlich:}Herr{?}Frau…

Olaf Kaus, OOT, 6.Oktober Lösungsweg: Template-Engine „Jakarta“ OpenSource Template-Engine „Velocity“ Javabasiertes Framework für die Erzeugung jegliche Art von Textdateien Einsatz in verschiedenen anderen OpenSource-Projekten Web-Architekturen UML-Werzeuge Datenbank-Mapping Einfache Handhabung 1. Erstellen des Templates 2. Anreichern mit dynamischen Daten 3. Generieren der Ausgabedatei

Olaf Kaus, OOT, 6.Oktober Velocity Template-Syntax Platzhalter ${variablenname} Schleifen #foreach( $row in $variablenname) ${row} #end Bedingungen #if( $variablenname==true) mach was #end

Olaf Kaus, OOT, 6.Oktober Velocity Beispiel Hello $user! #foreach( $skill in $customer.skills() ) #if ( $skill.hasJava() ) $skill.getLevel() #end

Olaf Kaus, OOT, 6.Oktober Velocity-Context // Initialisiern Velocity.init(); // Context aufbauen und füllen VelocityContext context = new VelocityContext(); context.put( “user", new String(“Olaf Kaus") ); context.put( “customer", new Customer() ); // Template einlesen Template template = null; template = Velocity.getTemplate(“skilltemplate.vm"); // Template und Context zusammenführen StringWriter sw = new StringWriter(); template.merge( context, sw );

Olaf Kaus, OOT, 6.Oktober Problem: Verbindung von eigenen und generierten Texten Erzeugte Datei kann nur als Ausgangsdokument verwendet werden. Bei jedem neuen Generieren wird das Textdokument vollständig ersetzt. Lösungen: Include-Mechanismen OO-Techniken / Design-Patterns Geschützte Bereiche („Protected Regions“)

Olaf Kaus, OOT, 6.Oktober Lösung: Include-Mechanismen JSP … … XML <!DOCTYPE generic SYSTEM ".\generic-generator.dtd" [ ]> &EditBOAction;

Olaf Kaus, OOT, 6.Oktober Lösung: OO-Techniken / Design-Patterns Quelle: ProgrammGeneration von M. Völter

Olaf Kaus, OOT, 6.Oktober Lösung: Protected Regions private Customer customer = new Customer(); public boolean isValid(){ // PROTECTED REGION ID(12..3ValidateData) START // Implementierung der geschützten isValid-Methode // PROTECTED REGION END } // PROTECTED REGION ID(12..3EigeneMethoden) START // --> Raum für eigene Methoden <-- public void setWert(String wert){ } // PROTECTED REGION END

Olaf Kaus, OOT, 6.Oktober Entwicklung eines GUI Deklarative Beschreibung der Oberfläche Eingabemöglichkeiten Textfelder Auswahllisten (ComboBox) Selektionen (CheckBox) Tabelleneingabe Eingabe der dynamischen Daten

Olaf Kaus, OOT, 6.Oktober Beispiel-Deklaration

Olaf Kaus, OOT, 6.Oktober „GVizard“ Das alles zusammen ergibt: GVizard!

Olaf Kaus, OOT, 6.Oktober MDA (Model Driven Architecture) MDA ist ein relativ neuer Standard der „Object Management Group“ (OMG) OMG Gründung in 1989 Offenes Konsortium aus ca. 800 Firmen OMG erstellt herstellerneutrale Spezifikationen zur Verbesserung der Interoperabilität und Protabilität von Softwaresystemen. Bekannte Ergebnisse sind: CORBA, IDL UML, XMI, MOF MDA, das neue „Flagschiff“

Olaf Kaus, OOT, 6.Oktober Ziele von MDA Entwicklungsgeschwindigkeit erhöhen: Automation durch Formalisierung (Vergleich zu Produktionsstrassen im Automobilbau) Softwarequalität Wiederverwendbarkeit Wartbarkeit durch Trennung von Verantwortlichkeiten (Separation of Concerns) Handhabbarkeit von Technologiewandel

Olaf Kaus, OOT, 6.Oktober Ansatz von MDA Fachliche Spezifikation.NET-ModelXML-ModelJ2EE-Model.NET-CodeXML-CodeJ2EE-Code PIM Platform Independent Model via UML-Profil PSM Platform Specific Models via UML-Profil Implementierung Regelbasierte Transformationen (Templates) sind i.d.R. Toolgestützt

Olaf Kaus, OOT, 6.Oktober PIM – PSM - Code public interface Account extends EJBObject{.. public interface AccountHome extends EJBHome{.. public abstract class AccountBean implements EntityBean{.. public class AccountKey implements java.io.Serializable{.. Quelle: b+m Informatik AG

Olaf Kaus, OOT, 6.Oktober MDA Begriffe (1) Modell Repräsentation von Struktur, Funktion oder Verhalten eines Systems MDA-Modelle sind formal Modelliert mittels UML Plattform Abstraktionsgrad ist nicht festgelegt Linux, Windows,.NET, J2EE, Swing, JSP, EJB, XML, … Anwendungsarchitektur Plattformen können aufeinander aufbauen

Olaf Kaus, OOT, 6.Oktober MDA Begriffe (2) PIM, PSM PIM = Abstrahiert von technologischen Details. Konzepte (Klassen, Abläufe, etc.) der Anwendungsdomäne werden beschrieben PSM = Modell (im MDA-Sinne), das die Konzepte (z.B. Schnittstellen) einer Plattform verwendet, um ein System zu beschreiben. Programmiersprache, Betriebssystem, Middleware, Applikationsserver, Datenbank, usw. Konzepte sind stabiler als Technologien Formale Modelle besitzen Potential für automatisiere Transformation UML-Profile UML ist der Rahmen einer Sprachfamilie Erweiterungsmechanismen: Stereotypen Tagged Values Modellierungsregeln (Constrains)

Olaf Kaus, OOT, 6.Oktober MDA Entwicklungsprozess Architekt 1: Templates entwerfen Fachdesigner 2: Modellieren Entwickler 3: Modell attributieren UML Generator 4: Code erzeugen Template XM I 5: Business- logik einfügen Code Build-Skript 6: Übersetzen und verpacken 7: Deployen und testen Komponenten, DB-Skripten, etc. Quelle: AndroMDA, M. Bohlen

Olaf Kaus, OOT, 6.Oktober MDA Werkzeuge Kommerzielle ArcStyler (Interactive Objects) OptimalJ (Compuware)(Middelgen Studie) … OpenSource AndroMDA b+m Generator … Unterschiede Eingabeformat (XMI), ohne/mit PSM, Template-Sprache (JPyton, Velocity)

Olaf Kaus, OOT, 6.Oktober AndroMDA Codegenerierungsframwork nach MDA Einsatz von diversen OpenSource-Frameworks MDR (XMI-Modelle einlesen mit NetBeans Metadata Repository) Velocity als Template-Engine Ant als Build/Deploy-Tool Steckbare Cartridges unterstützen konkrete Technologien Java = allgemein benötigte Objekte EJB Hibernate = O/R-Mapping Struts = MVC Web-Framework weitere in Arbeit

Olaf Kaus, OOT, 6.Oktober AndroMDA Cartridges Cartridge-Meta-Informationen XML-Beschreibung Realisierte Aspekte Stereotypen Ausgabekanäle für generierten Code Namenskonventionen für generierte Dateien <template stereotype="WebForm" sheet="templates/StrutsForm.vsl" outputPattern="{0}/{1}.java" outlet="forms" overWrite="true" /> <template …

Olaf Kaus, OOT, 6.Oktober AndroMDA Entwicklungsablauf

Olaf Kaus, OOT, 6.Oktober Zusammenfassung Es wird nichts generiert, was nicht vorher in Form einer Referenzimplementierung verifiziert wurde. (Qualität/Lesbarkeit, Performance) Ersatz von „Copy-And-Paste“-Programmierung 60% bis 80% des Sourcecodes kann generiert werden Leistungsteigerung um ca. 30% UML-Modell (Dokumentation) bleibt bis zum Schluss des Projektes konsistent. ZIEL: „Executable UML“

Olaf Kaus, OOT, 6.Oktober ENDE Fragen

Olaf Kaus, OOT, 6.Oktober LINKS GVizard ab : ProgrammGeneration: AndroMDA: b+m Generator: MDA Werkzeuge: Middlegen Study: Object Management Group: Velocity: jakarta.apache.org/velocity