Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

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

Ähnliche Präsentationen


Präsentation zum Thema: "Generative Softwareentwicklung in der Praxis Olaf Kaus, „Java User Group“, Hannover 6.Oktober 2003."—  Präsentation transkript:

1

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

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

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

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

6 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…

7 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

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

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

10 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 );

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

12 Olaf Kaus, OOT, 6.Oktober Lösung: Include-Mechanismen JSP … … XML &EditBOAction;

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

14 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

15 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

16 Olaf Kaus, OOT, 6.Oktober Beispiel-Deklaration

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

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

19 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

20 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

21 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

22 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

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

24 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

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

26 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

27 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