+ All Categories
Home > Documents > Generative Softwareentwicklung in der Praxis Olaf Kaus, „Java User Group“, Hannover 6.Oktober...

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

Date post: 06-Apr-2015
Category:
Upload: aurel-allgeyer
View: 104 times
Download: 0 times
Share this document with a friend
30
Generative Softwareentwicklung in der Praxis Olaf Kaus, „Java User Group“, Hannover 6.Oktober 2003
Transcript
Page 1: Generative Softwareentwicklung in der Praxis Olaf Kaus, „Java User Group“, Hannover 6.Oktober 2003.

Generative Softwareentwicklung in der Praxis

Olaf Kaus, „Java User Group“, Hannover 6.Oktober 2003

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

Olaf Kaus, OOT, 6.Oktober 2003 2

Ü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)

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

Olaf Kaus, OOT, 6.Oktober 2003 3

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)

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

Olaf Kaus, OOT, 6.Oktober 2003 4

Ergebnis

Ein Blick auf KIBS!

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

Olaf Kaus, OOT, 6.Oktober 2003 5

Lösungsweg: Analyse

• Erstellen von verschiedenen Datei-Typen• Java, JSP, HTML, XML

• Einsatz von Datei-Schablonen(Templates)

• Platzhalter in DateiHallo Herr ${empfänger}…

• Templates müssen Logik enthaltenHallo {if empfänger.geschlecht==mänlich:}Herr{?}Frau…

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

Olaf Kaus, OOT, 6.Oktober 2003 6

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 Handhabung1. Erstellen des Templates

2. Anreichern mit dynamischen Daten

3. Generieren der Ausgabedatei

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

Olaf Kaus, OOT, 6.Oktober 2003 7

Velocity Template-Syntax

Platzhalter

${variablenname}

Schleifen

#foreach( $row in $variablenname)

${row}

#end

Bedingungen

#if( $variablenname==true)

mach was

#end

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

Olaf Kaus, OOT, 6.Oktober 2003 8

Velocity Beispiel

<HTML> <BODY> Hello $user! <table> #foreach( $skill in $customer.skills() )

#if ( $skill.hasJava() ) <tr>

<td> $skill.getLevel()

</td> </tr>

#end #end </table></BODY></HTML>

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

Olaf Kaus, OOT, 6.Oktober 2003 9

Velocity-Context

// InitialisiernVelocity.init();

// Context aufbauen und füllenVelocityContext context = new VelocityContext();context.put( “user", new String(“Olaf Kaus") );context.put( “customer", new Customer() );

// Template einlesenTemplate template = null;template = Velocity.getTemplate(“skilltemplate.vm");

// Template und Context zusammenführenStringWriter sw = new StringWriter();template.merge( context, sw );

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

Olaf Kaus, OOT, 6.Oktober 2003 10

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“)

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

Olaf Kaus, OOT, 6.Oktober 2003 11

Lösung: Include-Mechanismen

• JSP…<jsp:include page="../includes/genfooter.jsp" />…

• XML<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE generic SYSTEM ".\generic-generator.dtd" [<!ENTITY EditBOAction SYSTEM "GenBOAction.xml">

]>

<generic version="0.2"> &EditBOAction;</generic>

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

Olaf Kaus, OOT, 6.Oktober 2003 12

Lösung: OO-Techniken / Design-Patterns

Quelle: ProgrammGeneration von M. Völter

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

Olaf Kaus, OOT, 6.Oktober 2003 13

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

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

Olaf Kaus, OOT, 6.Oktober 2003 14

• Entwicklung eines GUI

• Deklarative Beschreibung der Oberfläche

• Eingabemöglichkeiten• Textfelder

• Auswahllisten (ComboBox)

• Selektionen (CheckBox)

• Tabelleneingabe

Eingabe der dynamischen Daten

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

Olaf Kaus, OOT, 6.Oktober 2003 15

Beispiel-Deklaration

<textfield name="mytext" label="Textfeld:" value="Vorbelegter Text"/>

<filebox name="myfile" label="Dateiname:" basepath="c:\" value=""/>

<checkbox name="mycheckbox" label="CheckBox" value="false"/>

<combobox name="mycomboTest" label="ComboBox:">

<entry value="Eintrag 1"/>

<entry value="Eintrag 2" selection="true"/>

</combobox>

<!-- Tabellen-Definition -->

<table name="mytable" label="Table-Test" visiblerows="5">

<column label="Dateiname" typ="FileBox" value="C:\"/>

<column label="Name" typ="TextField" value="Eintrag"/>

<column label="Datentypen" typ="ComboBox">

<entry value="Zeile 1"/>

<entry value="Zeile 2"/>

</column>

<column label="Selektiert" typ="CheckBox" value="true"/>

</table>

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

Olaf Kaus, OOT, 6.Oktober 2003 16

„GVizard“

Das alles zusammen ergibt:

GVizard!

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

Olaf Kaus, OOT, 6.Oktober 2003 17

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“

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

Olaf Kaus, OOT, 6.Oktober 2003 18

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

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

Olaf Kaus, OOT, 6.Oktober 2003 19

Ansatz von MDA

Fachliche Spezifikation

.NET-Model XML-ModelJ2EE-Model

.NET-Code XML-CodeJ2EE-Code

PIMPlatform Independent Model via UML-Profil

PSMPlatform Specific Models via UML-Profil

Implementierung

Regelbasierte Transformationen (Templates) sind i.d.R. Toolgestützt

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

Olaf Kaus, OOT, 6.Oktober 2003 20

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

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

Olaf Kaus, OOT, 6.Oktober 2003 21

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

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

Olaf Kaus, OOT, 6.Oktober 2003 22

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)

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

Olaf Kaus, OOT, 6.Oktober 2003 23

MDA Entwicklungsprozess

Architekt

1: Templatesentwerfen

Fachdesigner

2: Modellieren

Entwickler

3: Modellattributieren

UML

Generator

4: Codeerzeugen

Template

XM I

5: Business-logik einfügen

Code

Build-Skript

6: Übersetzenund verpacken

7: Deployenund testen

Komponenten, DB-Skripten, etc.

Quelle: AndroMDA, M. Bohlen

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

Olaf Kaus, OOT, 6.Oktober 2003 24

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)

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

Olaf Kaus, OOT, 6.Oktober 2003 25

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

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

Olaf Kaus, OOT, 6.Oktober 2003 26

AndroMDA Cartridges

• Cartridge-Meta-Informationen

• XML-Beschreibung• Realisierte Aspekte

• Stereotypen

• Ausgabekanäle für generierten Code

• Namenskonventionen für generierte Dateien

<cartridge name="struts"> <property name="work"value="struts" />

<stereotype name="WebAction" /> <stereotype name="WebAppConfig" /> <stereotype name="WebForm" /> <stereotype name="WebPage" />

<outlet name="forms" /> <outlet name="actions" /> <outlet name="pages" /> <outlet name="config" />

<template stereotype="WebForm" sheet="templates/StrutsForm.vsl" outputPattern="{0}/{1}.java" outlet="forms" overWrite="true" />

<template …

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

Olaf Kaus, OOT, 6.Oktober 2003 27

AndroMDA Entwicklungsablauf

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

Olaf Kaus, OOT, 6.Oktober 2003 28

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“

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

Olaf Kaus, OOT, 6.Oktober 2003 29

ENDE

Fragen

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

Olaf Kaus, OOT, 6.Oktober 2003 30

LINKS

• GVizard ab 13.10.2003: www.oo-modeller.de

• ProgrammGeneration: www.voelter.de

• AndroMDA: www.andromda.org

• b+m Generator: www.architectureware.de

• MDA Werkzeuge: www.omg.org/mda/committed-products.html

• Middlegen Study: www.middleware-company.com

• Object Management Group: www.omg.org

• Velocity: jakarta.apache.org/velocity


Recommended