Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
Veröffentlicht von:Aurel Allgeyer Geändert vor über 9 Jahren
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
Ähnliche Präsentationen
© 2024 SlidePlayer.org Inc.
All rights reserved.