Code Generieren mit UML2



Ähnliche Dokumente
Werkzeugunterstützung für UML Profiles. Verteidigung des Großen Belegs Andreas Pleuß

Motivation Grundlagen Technologien Manipulation Ecore Genmodell Demo Persistenz Notification Ausblick GMF Fazit / Quellen

Software- und Systementwicklung

Thema 5 Domain Specific Languages

Modellgetriebene Softwareentwicklung: Zusammenfassung und Ausblick. 7. Februar 2013

Modellgetriebene Softwareentwicklung. Gabriele Taentzer WS 2012/2013 Philipps-Universität Marburg

SEW Übung EMFText. 1 Aufgabe. 2 Domänenbeschreibung. 3 Installation von Eclipse/EMFText. 4 Schritt-für-Schritt Anleitung. 4.

Generierung von Steuerungsprogrammcode für SPS und μc aus Petri-Netz-Modellen

Comelio GmbH - Goethestr Berlin. Kurskatalog

Definition von domänenspezifischen Sprachen mit Xtext: Einführung

Integration von Model-Driven Development und formaler Verfikation in den Softwareentwicklungsprozess

Faktor-IPS UML-Integration Tutorial

Inhaltsverzeichnis. 2.2 Grundlagen der UML Zusammenfassung... 53

Model Driven Development im Überblick

Implementierung einer Unterstützung von Versionsverwaltung in einem Plug-In für verteilte Paarprogrammierung

Modellbasiertes Testen mit UTP

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

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

Modellgetriebene Softwareentwicklung: Zusammenfassung und Ausblick. 11. Februar 2015

Generisch entwickelte Software-Werkzeuge anpassbar wie ein Chamäleon

Modellgetriebene Softwareentwicklung

Web Engineering-Seminar Methoden zur Web Modellierung: Object-oriented Hypermedia Method (OO-H)

Notationen zur Prozessmodellierung

UML 2.0 als Architekturbeschreibungssprache? Seminar: Architekturbeschreibungssprachen Manuel Wickert

Requirements Engineering I

Poseidon for UML. Einführung. Andreas Blunk

Unified Modeling Language 2

Model Driven Architecture (MDA)

Modellgetriebene Entwicklung eingebetteter Systeme mit Eclipse

WhiteStarUML Tutorial

Templatebasierter CDA-Generator mit ART-DECOR. Vortrag im Rahmen der HL7 Austria Jahrestagung 2017, Wien Dipl.-Inform. Med.

Eclipse in der Java-Entwicklung

UML (Unified Modelling Language) von Christian Bartl

Modellierung und Programmierung 1

Regelbasierte Entwicklung betrieblicher Informationssysteme

Master Projekt SoSe Computergestützte Generierung und Validierung von Softwaremodellen. Rene Meis Nazila Gol Mohammadi Prof. Dr.

Systemmodellierung mit SysML - Stereotypen und Profile

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

Aktuelle Fortschritte von MDAbasierten Entwicklungsansätzen im Bereich Fahrerassistenzsysteme

Wir machen dann mal Digital Humanities Software - ein Erfahrungsbericht

Generischer Modellvergleich mit EMF Compare

Techniken der Projektentwicklung

Model Driven Architecture

Eclipse Modeling Framework Modellgetriebene Softwareentwicklung Prof. Andreas Schmidt

Die Unified Modeling Language UML

Unified Modelling Language

Sonnenfinsternis in der Technischen Redaktion

Fachforum 5: Systems Engineering Modellgetriebene Entwicklung von Schrittketten G. KRAFT Maschinenbau GmbH 06. Dezember 2017 Paderborn

Model Driven Architecture Praxisbeispiel

Geschäftsprozessmodellierung mittels Software- Services auf Basis der EPK

Installation von Zope, Plone, exam auf OSS

Inhalt. " DiaGen Historie und Beschreibung. " Architektur eines DiaGen-Editors. " Hypergraphen. " DiaGen-Editoren Komponenten

Lehrstuhl Informatik 4

Studienarbeit. Mohammad Athar Januar Verantw. Betreuer : Prof. Dr. Walter F. Tichy Betr. Mitarbeiter : Dipl.-Inform. Marc Schanne

Enterprise Architect, AdV-Tools. Länder-Workshop der AdV zur GeoInfoDok 7 Erfurt,

Grundlagen der UML-Modellierung. Modellierung. Elena Paslaru Seminar Praktische Modellierung SS

Einführung in die Programmierung

Vorteile einer Tool gestützten Modernisierung von Forms und Reports

Realtime Studio Professional. ARTiSAN. Eine Visuelle Softwareentwicklungsumgebung zur Erstellung von Echtzeitanwendungen

Konzeption und Realisierung eines logikbasierten Anfragewerkzeugs für UML-Modelle

Insight 2011 Power Workshop kh Whiteboard Diagramm: Modellzusammenhänge visualisieren. Nürnberg,

Modellbasierte Softwareentwicklung mit Sicherheitseigenschaften und UMLsec

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

PROJEKT (WS 2010/2011 SS 2011) TESTAUTOMATISIERUNG

Im Mathe-Pool startet man Eclipse am besten aus einer Shell heraus, und zwar indem man im Home- Verzeichnis den Befehl

Methode zur Entwicklung sicherheitskritischer eingebetteter Systeme mittels deterministischer UML-Modelle

Visual Studio 2010 Jetzt auch für Architekten

Modell-basierte Entwicklung mit der Timing Definition Language (TDL)

Entwicklung eines Werkzeugs zur Visualisierung der SWD/GND. Dr.-Ing. Jan F. Maas Hildesheim, den 1. August 2012

Der Einsatz von Open Source Tools für Safety und Security

4. Mentorium. UML-Modellierung (Lösungshinweise)

MDA-Praktikum, Einführung

Vortrag von: Ilias Agorakis & Robert Roginer

Comparing Software Factories and Software Product Lines

Institut für Informatik Betriebliche Informationssysteme Graph-basiertes Reengineering

Anwendungen für das rechnergestützte QM selbst entwickeln. CAQ & Anforderungen der Anwender. Beispiel Reklamationsmanagement

Inhaltsverzeichnis. 1 Der SQL Server 2008 stellt sich vor Die grafischen Tools des SQL Server Eine neue Datenbank erstellen 87

Analyse und Entwurf von Softwaresystemen mit der UML

Wer ich bin Christoph Knauf

Grundlagen von MOF. Alexander Gepting 1

Super. Sub1. Sub2 State2. Sub3. Sub4. Super. State2. Sub4

UML Modellierung und Model Driven Architecture (MDA) für Java mittels Rational Software Architect (RSA)

Komponentenorientierte Softwareentwicklung eclipse und Komponenten

Jochen Bauer

Inhalt. 1 Einführung 17. Strukturdiagramme. 2 Klassendiagramm 37

Eclipse Tutorial.doc

Transkript:

Code Generieren mit UML2

Über uns Philipp Auersperg Mitbegründer der Bluedynamics seit 20 Jahren in der objktorientierten Softwareentwicklung Seminare für Beratungsfirmen über UML Initiator des ArchGenXML Projektes (Vorgänger von AGX) seit den Anfangszeiten von Plone in der Community aktiv Robert Niederreiter Seit 2005 selbstständiger Software Entwickler Mitglied der BlueDynamics Alliance Intitiator des AGX Projekts hat maßgeblich bei der Entwicklung von ArchGenXML mitgewirkt BlueDynamics Alliance Kooperation von 8 Firmen der DACH Region

Begriffsklärung Plone Content Types Archetypes Dexterity (Designierter Nachfolger von AT) UML ArchGenXML Python Eggs Buildout

Geschichte & Lessons Learned 2003 startet Vorgängerprojekt ArchGenXML mit dem aus UML1 Diagrammen Plone Produkte mit Archetypes generiert werden können ( Produktive Faulheit ) ArchGenXML verbreitet sich schnell, die Funktionalität wird ständig erweitert, ist aber auf Plone-Archetypes fixiert Mit Python Eggs, GenericSetup, und Dexterity kommt ArchGenXML aufgrund seiner statischen Strukturen an seine Grenzen in Sachen Erweiterbarkeit 2008 startet AGX, einem erweiterbaren Ansatz basierend auf UML2

Geburtsstätte von ArchGenXML

Motivation Boilerplate Code erstellen braucht Zeit Copy & Paste ist fehleranfällig Statische Templategeneratoren wie Zopeskel sind unflexibel und erzeugen oft nicht lauffähigen Code Best-Practice Code

Vorteile Grafische Dokumentation der Entitäten Niedrige Einstiegshürde für Plone Ein- und Umsteiger Prozesse und Strukturen können in UML elegant gemeinsam mit dem Kunden erarbeitet werden Generatoren können gut an aktuellen Best-Practice Standards angepasst werden. Update der Software durch erneutes generieren des Modells Dadurch wenig oder nur geringfügige Handarbeit notwendig, lästiger Fitzelkram beim Projektsetup bleibt erspart

Nachteile Kollaboration erfordert von allen Kontributoren den Einsatz ähnlicher Tools (zumindest einen UML2- konformen Editor) UML Modelle können in der Versionsverwaltung nicht zusammengeführt werden, dadurch keine parallele Bearbeitung des Modells möglich - zeitliche Abstimmung der Beteiligten erforderlich

UML2 und UML-Profile Die Unified Modelling Language (UML) ist eine grafische Modellierungssprache zur Spezifikation, Konstruktion und Dokumentation von Software-Teilen und anderen Systemen Die UML2 ist selbst im UML2-Metamodell durch Metaklassen beschrieben Mit UML-Profilen kann man das UML2-Metamodel erweitern, um die Semantik einer bestimmten Anwendungsdomäne zu formalisieren

Einfaches Modell-Beispiel

Stereotypen Die Erweiterung des UML2-Metamodells erfolgt über Stereotypen Die Stereotypen werden im UML-Profil definiert Ein Stereotyp spezifiziert, wie eine bereits im UML2- Metomodell definierte Metaklasse für eine Anwendungsdomäne erweitert werden kann Ein Stereotyp kann Eingenschaften (Tagged Values) besitzen

AGX und UML-Profile AGX besteht aus einer reihe von Generatoren Diese Generatoren sind über ein UML-Profile an die jeweilige Anwendungsdomäne gebunden Jeder Generator ist verantwortlich, den generierten Code um seine anwendungsspezifischen Fragmente zu erweitern Beim Erstellen von UML-Modellen kann man nun durch Anwenden ein oder mehrerer UML-Profile das Modell um einzelne Anwendungsdomänen erweitern Das Steuern der Generatoren erfolgt über die Anwendung der Stereotypen auf Modell-Elemente, die in den UML- Profilen spezifiziert sind

Anwendung von AGX Grundsätzlich zwei Möglichkeiten AGX als Kommandozeilentool benötigt lediglich UML2-Tool AGX als Eclipse-Plugin Eclipse Indigo Eclipse Modeling Tools Papyrus UML Editor AGX stellt Wizard zur Verfügung Generiert auf Knopfdruck lauffähigen Code

AGX Eclipse Wizard Stellt eine Auswahl von Modell-Vorlagen zur Verügung Python Egg Plone Product Dexterity Product Dexterity Example

Auswahlkriterien für UML Editor Papyrus ist Open Source Konsistente UML2 Unterstützung Eclipse Integration Aktives Projekt Papyrus befindet sich in der Inkubations-Phase und wird somit Teil des offiziellen Eclipse- Projekts Ist über Eclipse Modeling Edition installierbar

Abhängigkeiten der Generatoren Dexterity Zope Component Architecture Plone pyegg Buildout

Projekt und Modell einrichten Aufruf des Modell-Wizards

Der Modell-Wizard Modellvorlage auswählen

Dexterity Modell-Vorlage Das frisch erstellte Modell ist bereit zum Bearbeiten

Modell erweitern Erstellen eines Packages im Python Egg

UML Package wird Python Package Durch Anwenden des Stereotyps <<pypackage>> wird das UML Package ein Python Package

Contenttype-Klasse anlegen Durch Anwenden des Stereotyps <<content_type>> wird die UML Klasse zum Contenttype

Generator ausführen Über das Kontextmenü der UML-Datei wird der Generator gestartet und der Sourcecode generiert

Ausblick Implementierung weiterer Generatoren Generator-Generator Workflows SqlAlchemy Buildout (vom Deployment-Diagramm) Pyramid etc... Bedienungskomfort verbessern Automatische Installation von AGX über das Eclipse-Plugin

Resourcen http://agx.me http://github.com/bluedynamics/agx.dev http://bluedynamics.eu

Nerds Are Artists Donations welcome