1 / 30

Generative Softwareentwicklung in der Praxis

Generative Softwareentwicklung in der Praxis. Olaf Kaus, „Java User Group“, Hannover 6.Oktober 2003. Überblick. Generator Werkzeug („GVizard“) Problemstellung Ergebnis „Kibs-Live“ Lösungsweg „GVizard“-Live Model Driven Architecture (MDA ) Konzepte MDA-Werkzeuge

luisa
Download Presentation

Generative Softwareentwicklung in der Praxis

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Generative Softwareentwicklung in der Praxis Olaf Kaus, „Java User Group“, Hannover 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)

  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)

  4. Ergebnis Ein Blick auf KIBS!

  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…

  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 • Erstellen des Templates • Anreichern mit dynamischen Daten • Generieren der Ausgabedatei

  7. Velocity Template-Syntax Platzhalter ${variablenname} Schleifen #foreach( $row in $variablenname) ${row} #end Bedingungen #if( $variablenname==true) mach was #end

  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>

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

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

  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>

  12. Lösung: OO-Techniken / Design-Patterns Quelle: ProgrammGeneration von M. Völter

  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

  14. Eingabe der dynamischen Daten • Entwicklung eines GUI • Deklarative Beschreibung der Oberfläche • Eingabemöglichkeiten • Textfelder • Auswahllisten (ComboBox) • Selektionen (CheckBox) • Tabelleneingabe

  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>

  16. „GVizard“ Das alles zusammen ergibt: GVizard!

  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“

  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

  19. Ansatz von MDA Fachliche Spezifikation PIMPlatform Independent Model via UML-Profil .NET-Model J2EE-Model XML-Model PSMPlatform Specific Models via UML-Profil .NET-Code J2EE-Code XML-Code Implementierung Regelbasierte Transformationen (Templates) sind i.d.R. Toolgestützt

  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

  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

  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)

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

  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)

  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

  26. AndroMDA Cartridges <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 … • Cartridge-Meta-Informationen • XML-Beschreibung • Realisierte Aspekte • Stereotypen • Ausgabekanäle für generierten Code • Namenskonventionen für generierte Dateien

  27. AndroMDA Entwicklungsablauf

  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“

  29. ENDE Fragen

  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

More Related