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

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

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

6 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 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 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 Handhabung 1. Erstellen des Templates 2. Anreichern mit dynamischen Daten 3. Generieren der Ausgabedatei

8 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

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

10 Olaf Kaus, OOT, 6.Oktober 2003 9 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 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“)

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

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

14 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

15 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

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

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

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

19 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

20 Olaf Kaus, OOT, 6.Oktober 2003 19 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 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

22 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

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

24 Olaf Kaus, OOT, 6.Oktober 2003 23 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 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)

26 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

27 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 <template stereotype="WebForm" sheet="templates/StrutsForm.vsl" outputPattern="{0}/{1}.java" outlet="forms" overWrite="true" /> <template …

28 Olaf Kaus, OOT, 6.Oktober 2003 27 AndroMDA Entwicklungsablauf

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

30 Olaf Kaus, OOT, 6.Oktober 2003 29 ENDE Fragen

31 Olaf Kaus, OOT, 6.Oktober 2003 30 LINKS GVizard ab 13.10.2003: www.oo-modeller.dewww.oo-modeller.de ProgrammGeneration: www.voelter.dewww.voelter.de AndroMDA: www.andromda.orgwww.andromda.org b+m Generator: www.architectureware.dewww.architectureware.de MDA Werkzeuge: www.omg.org/mda/committed-products.htmlwww.omg.org/mda/committed-products.html Middlegen Study: www.middleware-company.comwww.middleware-company.com Object Management Group: www.omg.orgwww.omg.org Velocity: jakarta.apache.org/velocity


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

Ähnliche Präsentationen


Google-Anzeigen