Open Source MDA bei Lufthansa Systems. Peter Friese Stefan Reichert. Organized by:



Ähnliche Dokumente
Model Driven Architecture (MDA)

Model Driven Development im Überblick

Model Driven Architecture Praxisbeispiel

Vortrag von: Ilias Agorakis & Robert Roginer

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

Beispielhaft MDSD in der Praxis. Dr. Shota Okujava

SEA. Modellgetriebene Softwareentwicklung in der BA

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

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

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

Copyright 2014 Delta Software Technology GmbH. All Rights reserved.

Einführung in modellgetriebene Softwareentwicklung. 24. Oktober 2012

A Domain Specific Language for Project Execution Models

INNOVATOR im Entwicklungsprozess

Neue Funktionen in Innovator 11 R5

Model Driven SOA. < J Springer. Anwendungsorientierte Methodik und Vorgehen in der Praxis. Gerhard Rempp Mark Akermann Martin Löffler Jens Lehmann

Michael Piechotta - CASE Tools. openarchitecture Ware

Comparing Software Factories and Software Product Lines

Systemdenken und Gestaltungsmethodik System-Modellierung

Programmieren ohne Programmierer Das GeneSEZ Generator Framework. Gerrit Beine

Model Driven Architecture

Service Virtualisierung

SAP NetWeaver Gateway. 2013

Vorlesung Programmieren. Unified Modeling Language (UML) Unified Modeling Language (UML) Unified Modeling Language (UML)

Vorlesung Programmieren

Inhalt. Motivation Techniken des MDE. Fallbeispiele

Die MID ModellierungsMethodik M³ ein Baukasten für Produktlinien. Andreas Ditze, MDD & PL 2009, Leipzig,

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

Microsoft SharePoint 2013 Designer

Projektmanagementsoftware: Standard vs. Individual

Softwaretechnik (Allgemeine Informatik) Überblick

Faktor-IPS. Modellgetriebene Softwareentwicklung mit Faktor-IPS. Faktor Zehn AG. Seite 1

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

EINFÜHRUNG IN DIE WIRTSCHAFTSINFORMATIK -ÜBUNGEN- Marina Tropmann-Frick

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

Model Driven Architecture

Guido de Melo Fachvortrag, Uni Ulm UML 2.0. Für den Einsatz in der Praxis

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

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

Requirements Engineering I

Software-Architektur. Spektrum k_/takademischht VERLAG

Generatives Programmieren

arlanis Software AG SOA Architektonische und technische Grundlagen Andreas Holubek

BIF/SWE - Übungsbeispiel

Informationswirtschaft II Rational Unified Process (RUP)

Informationswirtschaft II

Fragenkatalog Geschäftsmodellierung Grundlagen

How-to: Webserver NAT. Securepoint Security System Version 2007nx

MDA MDA mit mit Open-Source-Software Eine Eine Bestandsaufnahme

ObjectBridge Java Edition

Festpreisprojekte in Time und in Budget

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

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

Eclipse Plugins für die komfortablere Verwendung von ibatis SQLMaps

Grundlagen Software Engineering

Eclipse Equinox als Basis für Smart Client Anwendungen. Christian Campo, compeople AG, Java Forum Stuttgart 2007

Referenzarchitekturen und MDA 1

Spring Dynamic Modules for OSGi Service Platforms

SAP SharePoint Integration. e1 Business Solutions GmbH

Dieses Tutorial gibt eine Übersicht der Form Klassen von Struts, welche Besonderheiten und Unterschiede diese aufweisen.

Themen. Software Design and Quality Group Institute for Program Structures and Data Organization

WhiteStarUML Tutorial

Jochen Bauer

Telling TestStories Modellbasiertes Akzeptanz Testen Serviceorientierter Systeme

Generisch entwickelte Software-Werkzeuge anpassbar wie ein Chamäleon

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

Kap. 35 Swing: Grundlagen Kap Swing: Hauptfenster

Christoph Behounek, eggs unimedia

Albert HAYR Linux, IT and Open Source Expert and Solution Architect. Open Source professionell einsetzen

Website-Verwaltung mit Content Management Systemen

Einführung in Generatives Programmieren. Bastian Molkenthin

Modellbasierte Softwareentwicklung

Modellgetriebene Service-Entwicklung

Modellgetriebene Softwareentwicklung

Generative Prozessmodelle Patrick Otto MDD Konferenz

Design Patterns 2. Model-View-Controller in der Praxis

Softwareentwicklungsprozess im Praktikum. 23. April 2015

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015

Vorgetragen von. Sanaz Mostowfi Anna Polovets Mandy Neumann

Architekturleitfaden. Definieren Sie fachliche Komponenten und implementieren Sie Ihre Aufgaben in technischen Schichten

Die Portal-Infrastruktur service.brandenburg.de als Basis für den Einsatz von dienste orientierten Lösungen in der Verwaltung

Klassenentwurf. Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? Objektorientierte Programmierung mit Java

Oracle GridControl Tuning Pack. best Open Systems Day April Unterföhring. Marco Kühn best Systeme GmbH

Objektorientierter Software-Entwurf Grundlagen 1 1. Analyse Design Implementierung. Frühe Phasen durch Informationssystemanalyse abgedeckt

Herausforderung: Entwicklungsmethodik und technisches Umfeld

12.4 Sicherheitsarchitektur

Entwicklung einer formalen Sprache zur Modelltransformation auf Basis von UML & XMI

10. Modellgetriebene Entwicklung Softwaretechnik (CNAM) Wintersemester 2009 / 2010 Prof. Dr. Bernhard Humm Hochschule Darmstadt, FB Informatik

Daniel Warneke Ein Vortrag im Rahmen des Proseminars Software Pioneers

Kurzfassung der Studienarbeit

Design mit CASE-Tools

MDA-Praktikum, Einführung

Business-Rule-Management als Instrument des Software-Reengineering

Use Cases. Use Cases

5. Programmierschnittstellen für XML

Dr. Klaus Körmeier BlueBridge Technologies AG

Mobiles SAP für Entscheider. Permanente Verfügbarkeit der aktuellen Unternehmenskennzahlen durch den mobilen Zugriff auf SAP ERP.

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

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

Der frühe Tester fängt den Bug

Transkript:

Di 1.2 January 22 th -26 th, 2007, Munich/Germany Open Source MDA bei Lufthansa Systems Peter Friese Stefan Reichert Organized by: Lindlaustr. 2c, 53842 Troisdorf, Tel.: +49 (0)2241 2341-100, Fax.: +49 (0)2241 2341-199 www.oopconference.com

Open Source MDA bei Lufthansa Systems Abstract Lufthansa Systems hat in einem großen Kundenprojekt im Logistikbereich den Open Source MDA Generator AndroMDA 1 eingesetzt. Dieser Beitrag berichtet von den Erfahrungen, die dabei gemacht wurden. Insbesondere wird auf folgende Punkte eingegangen: Eingliederung des MDA-Ansatzes in den Entwicklungsprozess, Akzeptanz bei den Entwicklern, Beachtenswertes bei der Auswahl des Modellierungstools, Kosten- / Nutzen Betrachtung 1 : Andromeda gesprochen Seite 2

Peter Friese 1996 2000 2000 2001 2001 2006 2007 heute Studium der Wirtschaftsinformatik (Nordakademie) Lufthansa Systems, Software Engineer Lufthansa Systems, Software Architect Gentleware, Software Architect Speaker Autor Committer JAX, OOP, openarchitecture, ix Konferenz ix, JavaMagazin, EclipseMagazin, OBJEKTspektrum AndroMDA, FindBugs Kontakt: peter.friese@gentleware.com peter@andromda.org https://www.xing.com/profile/peter_friese Seite 3 Stefan Reichert 2000 2004 2004 heute Studium der Wirtschaftsinformatik (Nordakademie) Lufthansa Systems, Software Engineer Autor JavaMagazin, EclipseMagazin Contributor Committer AndroMDA WickedShell verheiratet, Privatzoo Kontakt: stefan.reichert@lhsystems.com stefan@wickedshell.net https://www.xing.com/profile/stefan_reichert5 Seite 4

Model Driven Architecture Agenda Ideen und Konzepte Praxisbeispiel Bewertung Seite 5 Model Driven Architecture Agenda Ideen und Konzepte Seite 6

Historische Einordnung der MDA Abtraktionsniveau MDA Frameworks (OOP) (next big wave) Objektorientiert Prozedural Assembler 1950 1960 1970 1980 1990 2000 2010 2020 Zeit Seite 7 Kernziele der MDA Erhöhung des Abstraktionsniveaus Alles ist ein Modell Ein Bild sagt mehr als 1000 Worte Fokus auf Fachlichkeit Formalisierung der Spezifikation Metamodelle legen Sprachumfang der Modellierungssprache fest Modellvalidierung Trennung zwischen Fachlichkeit und Technologie / Architektur Plattformunabhängigkeit Wiederverwendbarkeit der fachlichen Konzepte Entwickler können sich auf die Geschäftslogik konzentrieren Homogenisierung der Implementierung Erhöhung der Qualität Seite 8

Alles ist ein Modell Spezifikationen der OMG MDA CWM (Common Warehouse Metamodel) Definition von Metadaten für Data Warehousing UML (Unified Modelling Language) Allzweck Modellierungssprache Erstellung von Systemmodellen Grafische Notation MOF (Meta Object Facility) Standard, um Metamodelle zu definieren XMI (XML Metadata Interchange) Austausch von MOF-basierten Modellen Seite 9 Metamodelle Metamodell = Sprache eines Modells OMG: UML ist Metamodell für MDA MDSD: UML muss nicht zwangsläufig Metamodell für Generierung verwendet werden M3 MOF Metametamodell M2 UML Metamodell <<MOF Element>> Class <<UML Metaelement>> Class -name: String <<instanceof>> M1 Modell Person -name: String -alter: int <<instanceof>> <<instanceof>> M0 Instanz (Laufzeit!) name: Peter age: 32 Seite 10

Abstraktion durch Modelle / 1 Modell = vereinfachtes Abbild der Realität Modelle werden in der Informatik seit langem eingesetzt Datenmodelle (ERM - Entity Relationship Model) Prozessmodelle (EPK - Ereignisgesteuerte Prozessketten) Softwaremodelle (z.b. OML - Open Modeling Language, PAP Programmablaufplan, Nassi-Shneiderman, ) UML ist heute der Quasi-Standard für Softwaremodellierung verschiedene Diagrammtypen (statisch, dynamisch) große Auswahl an Tools Abstraktionsgrad der UML teilweise zu gering Klassenmodelle werden 1:1 in Software abgebildet bei heutigen Softwaresystemen führt dies zu einem undurchschaubaren Modell von Modell = vereinfachtes Abbild der Realität kann keine Rede sein Seite 11 Abstraktion durch Modelle / 2 Wie kann der Abstraktionsgrad erhöht werden? 1:1 Zuordnung aufgeben Modellierung höherwertiger Konzepte vorher nacher BookingBeanHome BookingBeanRemote <<Service>> BookingService BookingBean Deployment Deskriptor Seite 12

Abstraktion durch Modelle / 3 Typen von Modellen Platform Independent Model (PIM) Platform Specific Model (PSM) PIM PSM <<Service>> BookingService BookingBeanHome BookingBeanRemote Deployment Deskriptor BookingBean Seite 13 Abstraktion durch Modelle / 4 Transformationen bilden Modelle ineinander ab Model to Model Transformationen (M2M) (z.b. QVT Queries, Views, Transformations) Model to Text Transformationen (M2T) (z.b. Template Engine) PIM PSM <<Service>> BookingService Transformation (M2M) BookingBeanHome BookingBeanRemote Deployment Deskriptor BookingBean Tf (M2T) public class BookingBeanHome { } public class BookingBeanRemote { } Code <ejb> </ejb public class BookingBean { } Seite 14

Abstraktion durch Modelle / 5 Domänenspezifische Sprachen (DSL) können auf Basis von MOF definiert werden oder durch Bildung von UML Profilen <<Service>> AService <<Entity>> AnEntity <<Finder>> findall() <<Finder>> findbyname(name) Semantische Bedeutung der Stereotype wird durch Transformationsregeln festgelegt Seite 15 Plattformunabhängigkeit Aus dem PIM in PSMs für unterschiedliche Plattformen transformieren PSM (Java EE) PIM Transformation (Java EE) <<Service>> BookingService PSM (.NET) Transformation (.NET) Seite 16

MDA Generatoren Generator übersetzt Modelle in: Code andere (Zwischen)modelle Bekannte Generatoren / Generatorframeworks: openarchitectureware (Open Source) AndroMDA (Open Source) ArcStyler (kommerziell, komplette MDA-Umgebung) OptimalJ (kommerziell, komplette MDA-Umgebung) Cartridge Konzept vorkonfektionierte Transformationen für marktgängige Frameworks / Plattformen können bedarfsgerecht angepasst werden (anders als bei CASE Tools) Seite 17 Mögliche Artefakte Was kann erzeugt werden? Architekturcode Oberflächen Ablauflogik Deployment / Infrastrukturdiagramme Architekturcode sehr gut geeignet, hohe Codeähnlichkeit Beispiele: Struts (Actions, Config), Spring (Services, DAOs, Context) Oberflächen vor allem für schematische GUIs idealer Kandidat: Databinding / Validierung anhand von Datenmodell Constraints Ablauflogik mittels Sequenz- oder Zustandsdiagrammen wird schnell unübersichtlich nur sinnvoll für grobgranulare Abläufe Infrastrukturdiagramme Modellierung des Deploymentprozesses Erzeugung Systeminformationen für das Monitoring-System Ausfallanalyse Seite 18

Herausforderung Oberflächen Abstraktion von der eingesetzten Plattform Hochgradige Individualität Unterschiedliche Paradigmen Modellierung des Layouts Layout ist das Herz einer Oberfläche Informationen häufig sehr reichhaltig Oberflächenfunktionalität Feldabhängigkeiten Databinding und Validierung Oberflächen bedingen sowohl Strukturinformationen als auch Ablauflogik Seite 19 Herausforderung Oberflächen Lösungsansätze M2M Transformationen Schematische GUI M2M Transformationen Inhalt, Struktur und Funktionalität der Oberfläche trennen Schrittweise zusammenführen Trotzdem schwierig Schematische GUI Schema der GUI vorgeben, beispielsweise CRUD Manuelles Anpassen der GUI zulassen ( Oberflächenarchitektur ) Kein reines PIM, sondern angereichertes PSM Eingeschränkte Anwendungsfelder Seite 20

Model Driven Architecture Agenda Praxisbeispiel Seite 21 Referenzprojekt - Kombiverkehr Der Kunde Kombiverkehr ist ein logistisches Dienstleistungsunternehmen für Speditionen und Transportunternehmen, das ein europaweites Netz für den Kombinierten Verkehr Schiene- Straße entwickelt, organisiert und vermarktet (Nr. 1 in Europa) Jährlich verlagert das Unternehmen rund 23 Millionen Tonnen Güter respektive rund 832.500 Lkw-Ladungen von der Straße auf die Schiene Täglich 120 Züge europaweit Kommanditisten: ca. 230 nationale/internationale Spediteure und die Stinnes AG Umsatzerlöse: 300 Mio. Euro Mitarbeiter: 165 (31.12.2004) Seite 22

Referenzprojekt - Kombiverkehr Die Aufgabenstellung Prozessverlagerungen und Prozessoptimierungen im Bereich Operations Research I I Planung und Steuerung des Transportnetzes I Angebotsplanung, Nachfrage-Verteilung, Planung und Optimierung der Zugkonfigurationen I Steuerung von Reservierungen und Buchungen zur optimalen Auslastung des Transportnetzes, Optimierung der Zugkonfiguration Operations und Handling I Beladeplanung, Optimierung der Ladekapazitäten, Auftragshandling I Auswirkungen auf Kunden und interne Organisation Entwicklung eines Kapazitätsmanagement-Systems für die Funktionsbereiche I I I I Buchung / Auslastung Reservierung / Kapazität Anlieferung / Verladung Ankunft / Abholung Seite 23 Warum MDA? Umfangreiches System Viele wiederkehrende Muster Geschäftslogik -> EVA Prinzip Optimierungsroutinen (Collector, Transformer, Solver) Schnittstellen Ziel: hohe Qualität homogener Code Einhaltung definierter Standards Ziel: Konzentration auf die Geschäftslogik Entwickler sollen sich nicht mit Beiwerk (z.b. Deployment-Deskriptoren) beschäftigen Reduktion der Komplexität (kein Expertenwissen über verwendete Bibliotheken notwendig) Ziel: Faster Time to Market mehr in kürzerer Zeit Seite 24

Warum AndroMDA? Unterstützung der Zielarchitektur (Spring / Hibernate) gute Dokumentation vorhanden (Beispielapplikationen, How-To s, Handbuch) Verfügbarkeit von freiem und kommerziellem Support breite Akzeptanz (AndroMDA ist mit oaw eines der meistgenutzten Generator-FWs) Erfahrungen aus einem vorangegangenem Projekt Seite 25 KMS Komponenten PC / Thin Client KMS Core KMS Interfaces Externe Systeme KMS Optimizer KMS DB Seite 26

Tools / Frameworks Modellierungstool: Together www.borland.com Generator: AndroMDA www.andromda.org IDE: Eclipse www.eclipse.org Backend: Spring www.springframework.org ORM: Hibernate www.hibernate.org Seite 27 Wirkungskreis des Generators Modell (annotiertes PIM) Services Entities Spring Generator (AndroMDA) Hibernate Software (KMS) GUI Services DAOs OR Mapping DDL Views, Trigger Seite 28

Implementierung der KMS Komponenten Große Anteile des serverseitigen Codes werden generiert I I I Service Interfaces und Basisklassen für der Implementierung (Spring) Konfigurationsdateien für die Kommunikation (Spring Konfiguration) Implementierung der Kommunikation (Spring mit HTTPInvoker) Die Implementierung der Business Logik erfolgt per Hand I I Implementieren der generierten Service Interfaces Bei Bedarf Zugriff auf Service Interfaces (anderer Server) Service Interfaces G G Service Implementierung Service Implementierung G Service Interfaces G KMS Core KMS Interfaces G = generiert Seite 29 Softwaretechnische Ansicht <<Service>> BookingService + createbooking(booking: Booking): void + loadbooking(key: int): Booking + findbooking(customerno: int): Booking <<interface>> BookingService BookingServiceBase BookingServiceImpl BookingServiceException applicationcontext.xml (Spring Konfiguration) PIM (Platform Independent Model) PSM (Platform Specific Model) Seite 30

Mengengerüst Use Cases : 40 Entwickler : 8 Anzahl Klassen : ~ 6300 Backend, generiert : ~ 2500 Backend, manuell : ~ 800 Frontend, manuell : ~ 3000 Entitäten : 200 Seite 31 Klassischer Implementierungssprozess ohne MDA create table Buchungen... <<deploy>> Der Anwender Framework: Spring startet die Transaktion über den Button Start. Persistenz: Hibernate Protokoll: HTTP, JMS DDL Requirements Architektur for (int i = 0; i <= 42; i++) { service.findall(); <<deploy>> DB } Java Server Designmodell Design Umsetzung Seite 32

Implementierungsprozess mit MDA Der Anwender startet die Transaktion über den Button Start. create table Buchungen... <<deploy>> Requirements Analysemodell <<generate>> DDL G DB <<generate>> for (int i = 0; i <= 42; i++) { service.findall(); } for (int i = 0; i <= + 42; i++) { <<deploy>> service.findall(); } Designmodell Java G Java Server Design Umsetzung G = generiert Seite 33 Model Driven Architecture Agenda Bewertung Seite 34

Vor- und Nachteile Vorteile Nachteile Mehr Effizienz Weniger Code zu schreiben Weniger Bugs Bugs im Architekturcode können zentral behoben werden Bessere Qualität Versionierung von Modelle nicht ganz unproblematisch Leistungsstarke Rechner erforderlich Hohe Anforderungen an die Modellierungstools Homogener Code Stringente Architektur Gute Akzeptanz bei Entwicklern Dokumentation Ist permanent up-to-date Modelle sind 1st class citizens und keine Schrankware Macht Technologien beherrschbar Entwickler müssen sich nicht mit allen Technologien im Detail auskennen Seite 35 Best practices Modell und Implementierung gleichzeitig einchecken Kontinuierliche Integration (z.b. CruiseControl / Continuum) Feedbackschleifen, Erweiterung des Generators um häufig verwendete Features Seite 36

Modelle in der Praxis konkurrierender Zugriff Single File Model: Flaschenhals Multi File Model: besser, handhabbar Teamserver (exklusiver Zugriff): teuer, aber vielleicht die beste Lösung Versionierung Branching / Merging: nahezu unmöglich Problem: Wartung & Weiterentwicklung Partitionierung Bildung von Komponenten / isolierteres Arbeiten möglich Verkürzung der Generatorläufe XMI korrektes XMI ist selten Tools unterstützen meist nur wenige Metamodelle Seite 37 Kritische Punkte Was ist mit Wartung / Weiterentwicklung? Die Mitarbeiter müssen qualifiziert sein / werden ansonsten wird die erstellte Software entstellt Archivierung der kompletten Entwicklungsumgebung Generator / Templates Modellierungstool Refactoring modellbasiertes Refactoring derzeit nicht möglich Refactoring des Codes kann zu ungewünschten Situationen führen Refactoring derzeit nur möglich als Kombination aus Code-Refactoring und manuellen Operationen im Modell Seite 38

Kosten / Nutzenvergleich Posten Kosten MDA Kosten traditionell Lizenzen Einarbeitungsaufwand UML-Tool Metamodell Prozess Frameworks Anpassung des Generators Entwicklung XMI Exporter Kosten für Entwicklung Einfacher Usecase Mittlerer Usecase Komplexer Usecase Umbau Domänenmodell Summe 8000 3200 6400 6400 6400 2000 2000 4000 x 20 8000 x 20 12000 x 10 2400 x 2 399200 0 0 0 0 16000 0 0 6000 x 20 11000 x 20 15500 x 10 8000 x 2 511000 Seite 39 Kosten / Nutzenvergleich 1200000 1000000 800000 600000 MDA traditionell 400000 200000 0 1/1/1 5/5/5 10/10/5 20/20/10 40/40/20 Seite 40

Break Even Analyse 300000 250000 200000 150000 Fixkosten MDA Ersparnis MDA 100000 50000 0 1/1/1 5/5/5 10/10/5 20/20/10 40/40/20 Seite 41 Q & A Seite 42