EJB 3 modellgetrieben ein Praxisbericht



Ähnliche Dokumente
EJB 3 modellgetrieben ein Praxisbericht

AGILE APPLICATION LIFECYCLE MANAGEMENT IM ATLASSIAN ECOSYSTEM

Ein Erfahrungsbericht beim Einsatz von generierenden Ansätzen im Vergleich zu generischen Lösungen

Agile Werkzeuge für den Produktmanagementzyklus vom Konzept bis zur Auslieferung

Was ist EMF? Wie wird EMF eingesetzt? Was ist ecore? Das Generatormodell Fazit

SEA. Modellgetriebene Softwareentwicklung in der BA

Performance Analyses with inspectit

Modellgetriebene Entwicklungsprozesse in der Praxis - eine Bestandsaufnahme. Tillmann Schall, anaptecs GmbH

Copyright 2014 Delta Software Technology GmbH. All Rights reserved.

b+m Informatik AG Langlebige und zukunftsfähige modellgetriebene Softwaresysteme? Thomas Stahl b+m Informatik AG

magazin Delivery Continuous JAVA Mag DVD-INHALT Die letzte Meile zum Release 20 Was zählt, ist gutes Design! Model-driven Beans JDeveloper und ADF

Sehr geehrte Faktor-IPS Anwender,

Entwicklung von effizienten UI-basierten Akzeptanztests für Webanwendungen

Programmieren ohne Programmierer Das GeneSEZ Generator Framework. Gerrit Beine

Model-Driven Development in Scrum-Projekten

A Domain Specific Language for Project Execution Models

ActiveCharts. Verknüpfung von Modellen und Code bei der modellgetriebenen Softwareentwicklung mit UML 2.0

Vortrag von: Ilias Agorakis & Robert Roginer

Datenhaltung für Android Model First Christian Ingenhaag, Frederik Götz, Carl Steeg

Model Driven Development im Überblick

Model Driven Architecture Praxisbeispiel

Einführung in modellgetriebene Softwareentwicklung. 24. Oktober 2012

Wir erledigen alles sofort. Warum Qualität, Risikomanagement, Gebrauchstauglichkeit und Dokumentation nach jeder Iteration fertig sind.

WhiteStarUML Tutorial

Model Driven SOA Modellgetriebene Entwicklung von SOA Anwendungen. OOP München,

Andreas Lux Verknüpfung unterschiedlicher Modellsprachen (BPMN, UML, DSL) zur Anforderungsanalyse

OERA OpenEdge Reference Architecture. Mike Fechner PUG Infotag 19. Mai 05 Frankfurt

Individuelle Erweiterung des generierten Codes. 16. Januar 2013

Ein hierarchischer, modellgetriebener Ansatz zur Codegenerierung. R. Gitzel, M. Schwind

Comparing Software Factories and Software Product Lines

Dr. Hanno Schauer Mons-Tabor-Gymnasium Montabaur. UML-Klassendiagramme als Werkzeug im Unterricht

Generatives Programmieren

INNOVATOR im Entwicklungsprozess

EJB Beispiel. JEE Vorlesung 10. Ralf Gitzel

white sheep GmbH Unternehmensberatung Schnittstellen Framework

Session Beans & Servlet Integration. Ralf Gitzel ralf_gitzel@hotmail.de

Übersetzung von UML-Software-Spezifikationen in Simulationsmodelle

Erfolg ist programmierbar.

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 22

Modellgetriebene Softwareentwicklung in der Bundesagentur für Arbeit

Software Engineering II

Beispielhaft MDSD in der Praxis. Dr. Shota Okujava

Java Einführung Packages

Agile Vorgehensmodelle in der Softwareentwicklung: Scrum

Java Enterprise Architekturen Willkommen in der Realität

Forschungsprojekt SS 2009

Design mit CASE-Tools

Die Programmiersprache Java. Dr. Wolfgang Süß Thorsten Schlachter

Ein subjektiver Vergleich zwischen SSIS und Kettle mit Ausblick auf die Generierung von BI-Lösungen

AGILES Software Engineering in der COUNT IT. Testautomatisierung in der agilen Softwareentwicklung

Architekturplanung und IS-Portfolio-

MO 27. Aug. 2007, 17:00 UHR JAVA FRAMEWORKS TIPPS VON PROFI-GÄRTNERN GEGEN WILDWUCHS

SAP NetWeaver Gateway. 2013

Best Practices für flexible und wartbare Codegeneratoren mit openarchitectureware Karsten Thoms Software Architekt

Erfolg ist programmierbar.

Festpreisprojekte in Time und in Budget

Innovator Anbindung an openarchitectureware. Connect. Klaus Weber.

Model Driven Architecture

Innovator 11 classix. Erweiterter XMI-Export aus Innovator Business und Object classix. HowTo.

Consultant & Geschäftsführer, enpit consulting OHG ugb@enpit.de

Die Integration von Requirements Management, Software Configuration Management und Change Management mit der MKS Integrity Suite 2006

DevOps bei den ID Build-Automatisierung statt Silo-Betrieb

UML-DSLs effizient eingesetzt. Insight 07, Klaus Weber

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein.

Einführung in Maven und GWT

Software-Validierung im Testsystem

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck

WebService in Java SE und EE

Ihre Interessentendatensätze bei inobroker. 1. Interessentendatensätze

Testautomatisierung. Lessons Learned. qme Software. Gustav-Meyer-Allee Berlin. Telefon 030/ Telefax 030/

Neue Funktionen in Innovator 11 R5

Proseminar: Website-Managment-System. NetObjects Fusion. von Christoph Feller

ITIL und Entwicklungsmodelle: Die zwei Kulturen

Willkommen zur Vorlesung. Objektorientierte Programmierung Vertiefung - Java

Senden von strukturierten Berichten über das SFTP Häufig gestellte Fragen

Erfolgreicher Ums9eg auf Git

Definition von domänenspezifischen Sprachen mit Xtext: Einführung. 19. November 2014

Konfiguration Management System. Konfiguration Management System. Versionierung Parallele Entwicklung Workspace

Einführung in die Informatik Tools

Software Engineering II

Einreichung zum Call for Papers

jbpm5 in Java EE 6 Marek Iwaszkiewicz Pascal Schaerf akquinet AG

Design Pattern - Strukturmuster. CAS SWE - OOAD Marco Hunziker Klaus Imfeld Frédéric Bächler Marcel Lüthi

Gemeinsam mehr erreichen.

Softwaretests in Visual Studio 2010 Ultimate Vergleich mit Java-Testwerkzeugen. Alexander Schunk Marcel Teuber Henry Trobisch

Anleitung zur Installation und Verwendung von eclipseuml 2.1.0

Übung: Verwendung von Java-Threads

Einsatz automatischer Testdatengenerierung im modellbasierten Test

BMW TREUE SERVICE. SRP MARKETING MODUL. ANLEITUNG ZUM EINSPIELEN DER LEUCHTTURMKAMPAGNEN IN DIE KSD.

Continuous Integration mit Jenkins

Versionsverwaltung mit SVN

Requirements Engineering für IT Systeme

HSR git und subversion HowTo

Virtual Roundtable: Business Intelligence - Trends

Conigma CCM (3G) - Überblick -

Requirements Management mit RequisitePro. Rational in der IBM Software Group. Der Rational Unified Process als Basis für die Projektarbeit

Programmieren in Java

Wir beraten Sie. Wir unterstützen Sie. Wir schaffen Lösungen. Wir bringen Qualität. Wir beraten Sie. Wir unterstützen Sie. Wir schaffen Lösungen

IT-Projekte effektiv steuern durch Integration von Modellierung und ALM bzw. Änderungsmanagement

AS/point, Ihr Partner die nächsten 10 und mehr Jahre -

Transkript:

EJB 3 modellgetrieben ein Praxisbericht Source Talk Tage Göttingen 28. August 2012 NovaTec Ingenieure für neue Informationstechnologien GmbH Leinfelden-Echterdingen, München, Frankfurt am Main, Jeddah / Saudi-Arabien

Agenda Kurzeinführung: Modellgetriebene Softwareentwicklung Migrationsprojekt Modellierung Generierung Manuelle Vervollständigung Lessons Learned und Best Practices Fazit und Ausblick 2

Computer Science is a science of abstraction creating the right model for a problem and devising the appropriate mechanizable techniques to solve it. Alfred V. Aho & Jeffrey D. Ullman in Foundations of Computer Science (1994) 3

Einführung: Modellgetriebe Softwareentwicklung Grundprinzip Code-zentrierte Softwareentwicklung Modelle dienen ausschließlich zu Dokumentationszwecken Die Anwendungslogik wird vollständig in einer Programmiersprache ausformuliert Modellgetriebene Softwareentwicklung / Model Driven Development (MDD) Große Teile der Anwendung werden im Modell statt im Quellcode definiert Modelle nehmen somit eine zentrale, treibende Rolle ein und sind in ihrer Bedeutung dem Quellcode gleichgestellt Ziel: Möglichst viele Artefakte eines zu erstellenden Softwaresystems werden generativ aus formalen Modellen erzeugt 4

Exemplarische MDD-Werkzeugkette UML-Profil UML-Modell UML-Modellierungstool public class } GenClass { int id; String txt; Modell { } Entity en1 { attr id; attr txt; } Textuelles Modell Textuelles Modellierungstool Generator public class ManClass { int nr; int count; } Vollständige Anwendung Manuelle Ergänzungen 5

Einführung: Modellgetriebe Softwareentwicklung (Erhoffte?) Vorteile durch MDD Die Anwendungsentwicklung erfolgt auf einer höheren Abstraktionsebene Architekturvorgaben lassen sich besser durchsetzen Zentrale Framework- oder Architekturänderungen lassen sich besser ausrollen Entwicklungseffizienz und der Automatisierungsgrad können erhöht werden Die Wiederverwendung wird vereinfacht Die Softwarequalität kann gesteigert werden Eine Plattformunabhängigkeit lässt sich einfacher realisieren 6

Agenda Kurzeinführung: Modellgetriebene Softwareentwicklung Migrationsprojekt Modellierung Generierung Manuelle Vervollständigung Lessons Learned und Best Practices Fazit und Ausblick 7

Projektbeschreibung Rahmenbedingungen MDD-Migrationsprojekt Auftraggeber: Großer IT-Dienstleisters für Versicherungsunternehmen Ziel: Anhebung der Zielplattform eines etablierten modellgetriebenen Entwicklungsprozesses auf eine neue Technologie Ablösung der EJB 2-basierten durch eine EJB 3-basierte Anwendungsplattform Optimale Kombination des ease of use von EJB 3 mit den Vorteilen des modellgetriebenen Vorgehens Entwicklungsplattform wird von 200 Entwicklern zur Anwendungsentwicklung für mehr als 4000 Nutzer genutzt 8

Modellgetriebener Entwicklungsprozess MDD-spezifische Prozessschritte Modellierung Generierung Manuelle Vervollständigung 9

Modellierung Domänenspezifische Modellierungssprache (DSL) basierend auf der UML Domänenspezifische Erweiterung über den Profil-Mechanismus Stereotypen zur Modellierung Hinzufügen von spezifischen Informationen über Tagged Values 10

Modellierung Modellierungs- / Architekturstereotypen (Auszug) Stereotyp SVC Beschreibung Repräsentiert einen Service, der Funktionalität nach außen bereitstellt, bspw. für die Präsentationsschicht UML-Visualisierung DAO Ein Data Access Object kapselt den Datenbank-Zugriff Entity Ein fachliches Geschäftsobjekt, d.h. eine persistente Entity repräsentiert die Objektsicht auf gespeicherte Daten 11

Beispielmodell Komponente services 12

Beispielmodell Komponente entities 13

Modellgetriebener Entwicklungsprozess MDD-spezifische Prozessschritte Modellierung Generierung Manuelle Vervollständigung 14

Generatorprozess XMI-Export Modell (inkl. UML-Profil) Modellparser Generator Modellvalidierung (Constraints) Codegenerator (Transformationsregeln) public class } MyClass { int id; String attr; Text-Artefakte (Quellcode, Dokumentation,...) 15

Generator-Erstellung Verwendetes Generator-Framework: openarchitectureware (oaw) Bestandteile wurden ins Eclipse Modeling Project übernommen Eigene Sprachen für Modellvalidierung und Modelltransformation Codegenerierung bzw. Modell-zu-Text-Transformation (M2T) Templatesprache XPand «DEFINE javaclass FOR Entity» «FILE name + ".java"» package «javapackage()»; public class «name» { } //TODO: implementation «ENDFILE» «ENDDEFINE» 16

Übersicht: Generierte Artefakte Generierte Artefakte Bestandteil der Anwendung Zusätzliche Artefakte Ausführbar Nicht ausführbar Tests Datenbank Build Dokumentation Annotierte Java-Klassen Deployment Deskriptoren JUnit-Tests DDL-Skripte Ant-Skripte HTML-Doku Java-Interfaces Konfigurationsdateien Don t Repeat Yourself (DRY): Eine Änderung im Modell wirkt sich auf alle daraus generierten Artefakte aus. 17

Zu generierende JEE-Artefakte Session Beans JPA Entities 18

Modellgetriebener Entwicklungsprozess MDD-spezifische Prozessschritte Modellierung Generierung Manuelle Vervollständigung 19

Manuelle Vervollständigung Pragmatische MDD: Nicht 100% einer Anwendung werden generiert Erzeugt wird ein Implementierungsrahmen, der große Teile des Infrastrukturcodes enthält Dieser Code kann bis zu 2/3 der Anwendung ausmachen Strategie zur Kombination von Generat und manuellen Ergänzungen erforderlich Artefakte, die Modellinformationen enthalten, werden beim nächsten Generatorlauf überschrieben Manuelle Code-Ergänzungen müssen erhalten bleiben 20

Strategien zu Kombination Verschiedene Strategien denkbar Protected Regions, Delegation, Vererbung, Nutzung von Deployment Deskriptoren, * Am besten geeignet: Vererbungsansatz * Vgl. "Model-driven Beans: EJB 3 modellgetrieben entwickeln" im Java Magazin 3.2012 21

Realisierte Strategie EJB 3-Metadaten ergeben sich aus Modellinformationen JPA-Mapping-Informationen Ausprägung einer Session Bean, Angaben zur Transaktionalität, Problem: Java-Annotationen sind nicht alle ableitbar @Stateful, @Stateless, @Entity, Vererbungsansatz kann nicht 1:1 für EJB 3-Artefakte adaptiert werden Convention over Configuration JEE- Hierarchie zur Angabe von Metadaten Annotationen Deployment Deskriptoren 22

Strategie für EJB 3-Artefakte 1. Verwende den Vererbungsansatz soweit wie möglich! Abstrakte Basisklasse mit allen sinnvoll durch Vererbung ableitbaren Modellinformationen als Annotationen Konkrete Implementierungsklasse Einmalig erzeugt, nicht mehr überschrieben POJO: Frei von EJB 3-Metadaten 2. Nutze den Deployment Deskriptor! Enthält alle Metadaten, die von der Implementierungsklasse nicht sinnvoll aus der Basisklasse abgeleitet werden können. 23

Strategie für Entities Mikroarchitektur am Beispiel der Entity Fahrzeug 24

Strategie für Session Beans (SVCs & DAOs) Mikroarchitektur am Beispiel des Services FahrzeugSvc 25

Entwicklersicht: Session Bean-Artefakte in der IDE Impl-Klasse Business Interface Basisklasse Deployment Deskriptor 26

Agenda Kurzeinführung: Modellgetriebene Softwareentwicklung Migrationsprojekt Modellierung Generierung Manuelle Vervollständigung Lessons Learned und Best Practices Fazit und Ausblick 27

Lessons Learned: Modellierung DSL-Erstellung auf Basis der UML Gute Erweiterbarkeit anhand des Profil-Mechanismus Eignet sich besonders gut für statische Strukturen, weniger für logische Abläufe UML(-Metamodell) ist teilweise zu umfangreich XMI-Export Darf sich nicht zum Bottleneck entwickeln Versionsverwaltung und kollaboratives Arbeiten mit grafischen Modellen Zentrales Repository mit dem Prinzip: Lock Modify Unlock ( pessimistic ) Modell muss in sinnvolle Teile fragmentiert werden 28

Lessons Learned: Generierung & Vervollständigung openarchitectureware / Eclipse Modeling Project Sehr ausgereiftes Framework Alle Anforderungen an den Generator konnten umgesetzt werden Generierungsanteil Entities: bis zu 100% Session Beans: ca. 50 70% Strategie zur Kombination von Generaten und manuellen Ergänzungen Alle Stereotypen konnten darüber abgebildet werden Wichtiger Erfolgsfaktor: Bei falsch gewählter Strategie wird der MDD-Ansatz zu starr / unflexibel 29

Best Practices Generiere gutaussehenden Code! Einrückungen, Klammern, Imports, etc. berücksichtigen Generierter Code sollte die Codier-Richtlinien erfüllen, die auch für manuell erstellte Quelltexte gelten (Checkstyle, Findbugs, PMD,...) Integriere und Automatisiere den Build-Prozess! Zusätzliche Schritte Modellierung Export Generierung möglichst automatisieren Einbindung in die IDE bzw. Nutzung bestehender Build-Tools (Ant, Maven, ) Gib bei Validierungsfehlern schlüssige Meldungen aus! Validierung möglichst bereits bei der Modellierung Validierung bei der Generierung: Klare Angabe des ungültigen Modellelements, ggf. mit Korrekturvorschlag 30

Best Practices Nutze generische Frameworks! Generierung gegen eine reichhaltige, vollständig definierte, dokumentierte und getestete Zielarchitektur Ist der Aspekt generativ (generierter Code) vs. generisch (Framework) ausgewogen? Setze MDD pragmatisch ein! Versuche nicht alles sondern möglichst sinnvoll und effizient zu generieren Keine Weltmodelle 31

Agenda Kurzeinführung: Modellgetriebene Softwareentwicklung Migrationsprojekt Modellierung Generierung Manuelle Vervollständigung Lessons Learned und Best Practices Fazit und Ausblick 32

Fazit (Erreichte!) Vorteile durch MDD Die Anwendungsentwicklung erfolgt auf einer höheren Abstraktionsebene Architekturvorgaben lassen sich besser durchsetzen Zentrale Framework- oder Architekturänderungen lassen sich besser ausrollen Entwicklungseffizienz und der Automatisierungsgrad können erhöht werden Die Wiederverwendung wird vereinfacht Die Softwarequalität kann gesteigert werden Eine Plattformunabhängigkeit lässt sich einfacher realisieren 33

Ausblick Grafische Modelle bei verteilter / dezentraler Versionsverwaltung Distributed Version Control Systems: Git, Mercurial, Bazaar, Prinzip: Copy Modify Merge ( optimistic ) Erfordern Merge-Mechanismen für grafische Modelle Bisher nur toolspezifische Lösungen MDD in Verbindung mit Continous Integration (CI) CI-Server muss Zugriff auf Modellrepository haben Anstoßen des Modell-Exports und der Generierung Klare Definition eines Changes 34

- Wir führen IT-Projekte zum Erfolg - Weitere Informationen: Christian Schwörer christian.schwoerer@novatec-gmbh.de NovaTec Ingenieure für neue Informationstechnologien GmbH Hauptniederlassung Dieselstr. 18/1 D-70771 Leinfelden-Echterdingen Telefon: +49 (0)711 220 40-700 Fax: +49 (0)711 220 40-899 Niederlassung München Landsberger Straße 439 D-81241 München E-Mail: info@novatec-gmbh.de Internet: www.novatec-gmbh.de Niederlassung Frankfurt Friedrich-Ebert-Anlage 36 D-60325 Frankfurt am Main Niederlassung Mittlerer Osten P.O. Box 140611 Jeddah 21333 Saudi-Arabien