"Modellieren geht über Codieren": Willkommen zu SE-Vertiefung! (c) schmiedecke 14 SE3-1-Einführung 1



Ähnliche Dokumente
Was ist EMF? Wie wird EMF eingesetzt? Was ist ecore? Das Generatormodell Fazit

Beispielhaft MDSD in der Praxis. Dr. Shota Okujava

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

Einführung in modellgetriebene Softwareentwicklung. 24. Oktober 2012

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

Model Driven Development im Überblick

Es war einmal... "StudyING: Welten bewegen - Welten gestalten"

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

Model Driven Architecture Praxisbeispiel

Copyright 2014 Delta Software Technology GmbH. All Rights reserved.

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

Visuelle DSLs Trends in der Softwaretechnik: Domänenspezifische Sprachen (Seminar WS 2010/11) Thorsten Arendt

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

Eine Anwendung mit InstantRails 1.7

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

DSL Entwicklung und Modellierung

Vortrag von: Ilias Agorakis & Robert Roginer

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

Einführung in Eclipse und Java

WhiteStarUML Tutorial

Programmieren ohne Programmierer Das GeneSEZ Generator Framework. Gerrit Beine

i n g e n i e u r b ü r o f ü r s o f t w a r e t e c h n o l o g i e w w w. v o e l t e r. d e Metamodellbasierte Codegenerierung in Java

Domänenspezifisch entwickeln mit UML (Vortrag mit Demo)

Jochen Bauer

Informatik für Schüler, Foliensatz 21 Objektorientierte Programmierung

Thema 2 Acceleo-MTL- Sprachmittel

Formale Sprachen und Grammatiken

Objektorientierte Programmierung OOP

Language Workbench. Aktuelle Themen der Softwaretechnologie. Vortrag von: Arthur Rehm Steven Cardoso. Betreut von: Prof. Dr.

Software Engineering II

Software Systems Engineering

Grundlagen von Python

Objektorientierte Programmierung für Anfänger am Beispiel PHP

2. ERSTELLEN VON APPS MIT DEM ADT PLUGIN VON ECLIPSE

Forschungsprojekt SS 2009

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

Wochenbericht. Firas Zoabi. Studienprojekt A: SIMPL. 28. Dezember 2009 I M P

Softwaretechnologie -Wintersemester 2013/ Dr. Günter Kniesel

Softwareentwicklungsprozess im Praktikum. 23. April 2015

Kapitelübersicht. Was ist So#waretechnik? Historische Entwicklung der So9waretechnik Prinzipien, Methoden, Werkzeuge. Was bedeutet Objektorien+erung?

Das Metamodell der UML und in FUJABA. Vortrag von Alexander Geburzi

Software-Engineering 2. Software-Engineering 2. Entwicklungsumgebungen (IDE) IT works. Klaus Mairon

Modellbasierte Softwareentwicklung mit EMF

Einführung in die Programmierung für NF

WebService in Java SE und EE

Willkommen zur Vorlesung. Objektorientierte Programmierung Vertiefung - Java

GI-Technologien zur Umsetzung der EU-Wasserrahmenrichtlinie (WRRL): Wissensbasen. Teil 1: Einführung: Wissensbasis und Ontologie.

Fachdidaktik der Informatik Jörg Depner, Kathrin Gaißer

UML-DSLs effizient eingesetzt. Insight 07, Klaus Weber

Projektseminar Modellbasierte Softwareentwicklung SoSe2014

Einführung in PHP. (mit Aufgaben)

4. AuD Tafelübung T-C3

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

Python SVN-Revision 12

Definition von visuellen Alphabeten basierend auf Meta Object Facilities (MOF) 23. Oktober 2012

Grammatiken. Einführung

Übungen zur Softwaretechnik

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

Grundbegriffe der Informatik

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

Praktikum Software Engineering

SMART Newsletter Education Solutions April 2015

Arbeiten mit UMLed und Delphi

Modellbasierte Softwareentwicklung

Software-Engineering im Sommersemester 2014

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

Wie richten Sie Ihr Web Paket bei Netpage24 ein

Ein mobiler Electronic Program Guide für Android

Vorgetragen von. Sanaz Mostowfi Anna Polovets Mandy Neumann

! " # $ " % & Nicki Wruck worldwidewruck

Diplomarbeit. Konzeption und Implementierung einer automatisierten Testumgebung. Thomas Wehrspann. 10. Dezember 2008

EMF-GMF-Tutorial: Petrinet

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

Seamless Model-based Engineering of a Reactive System

Datenanalyse - Schnittstellendesign

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

Softwarequalität: Zusammenfassung und Ausblick. 17. Juli 2013

Prozessbewertung und -verbesserung nach ITIL im Kontext des betrieblichen Informationsmanagements. von Stephanie Wilke am

Business Intelligence Praktikum 1

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

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

Java: Vererbung. Teil 3: super()

Vom Konzept direkt ins Cockpit: Optimierte HMI-Entwicklung mittels automatischer Codegenerierung

Neue Funktionen in Innovator 11 R5

Grundzüge der Programmierung. Konzepte der objektorientierten Programmierung (oop) OBJEKTE - KLASSEN

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

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

Selbstbestimmtes Lernen. Proinformatik III Objektorientierte Programmierung. Format. Inhalt. Buzzwords

Der Kopf ist rund, damit das Denken die Richtung

So erstellen Sie nützliche Beschreibungen zu Ihren Tradingdaten

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

4D Server v12 64-bit Version BETA VERSION

Interaktive Medien Richtlinien für das Codieren Version vom 18. Juni 2014

Einführung in die Java- Programmierung

DSLs mit Xtext entwerfen , A. Arnold

5. Abstrakte Klassen. Beispiel (3) Abstrakte Klasse. Beispiel (2) Angenommen, wir wollen die folgende Klassenhierarchie implementieren:

SEA. Modellgetriebene Softwareentwicklung in der BA

Version 0.3. Installation von MinGW und Eclipse CDT

Programmieren Formulierung eines Algorithmus in einer Programmiersprache

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

Transkript:

"Modellieren geht über Codieren": Willkommen zu SE-Vertiefung! (c) schmiedecke 14 SE3-1-Einführung 1

Dürfen wir uns vorstellen? Ilse Schmiedecke Diplom an der TU Berlin 1976 (!!!) Forschungsarbeiten in Formalen Sprachen, Compiler-Generierung und Softwarespezifikation Lehrveranstaltungen in Programmierung & Software Engineering Datenbanken HCI schmiedecke@beuth-hochschule.de www.schmiedecke.info (c) schmiedecke13 SE1-1-Einführung 2

Dürfen wir uns vorstellen? Marc-Florian Wendland - Diplom (2007) und Master (2009) an der TFH/BHT Berlin -Software Engineering (jeweils mit Auszeichnung) - Seit 2009 Wissenschaftlicher Mitarbeiter im Fraunhofer Institut FOKUS Forschungsschwerpunkte: - Modellierung und Metamodellierung - Effiziente Qualitätssicherung komplexer, software-intensiver Systeme - Modellbasiertes Testen und Testautomatisierung - Standardisierungsarbeiten u.a. bei der OMG und ETSI http://www.fokus.fraunhofer.de/de/sqc/kontakt/unser_team/wend land_marc-florian/index.jsp (c) schmiedecke13 SE1-1-Einführung 3

1. MODELLE (c) schmiedecke 14 SE3-1-Einführung 4

Was ist ein Modell? Following Stachowiak s definition A view on a real world concept (even of another model), An abbreviation of the thing it represents, by omitting irrelevant details for a given context, and Pragmatic in the sense of being appropriate for the given context. Dörner added validity Validity, otherwise they would not represent the correct illustration and would not be pragmatic (c) schmiedecke 14 SE3-1-Einführung 5

Beispielmodell MindMap Vereinfachte Modellierungssprache "Ecore" (c) schmiedecke 14 SE3-1-Einführung 6

Softwaremodell vs. Programmtext Modell visuell abstrakt gut les- und verstehbar kompakt Gesamtstruktur gut erkennbar Programm textuell vollständig, ausführbar zeilenweise zu "erlesen" (decodieren) viel Text Gesamtstruktur schwer erkennbar abstrahiert von der Technik (Plattform) funktionert auf einer bestimmten Plattform (c) schmiedecke 14 SE3-1-Einführung 7

Software Engineering und Modelle Was kann man mit Modellen anfangen? Modelle zur Abstraktion und Kommunikation Ausführung von Modellen Codegenerierung aus Modellen Erstellen eigener Codegeneratoren Modellierungssprache mit eigenen Ausdrucksmitteln Erstellung passender Codegeneratoren (c) schmiedecke 14 SE3-1-Einführung 8

Ausführung von Modellen Programmtext ist ausführbar: Es gibt Werkzeuge zur Verarbeitung und Ausführung Editor, Compiler, Interpreter... Können Modelle ausführbar sein? Laufzeitverhalten eines Klassenmodells? Aufbau und Veränderung einer Objektstruktur Ausführungsmöglichkeiten: äquivalenter ausführbarer Code (z.b. Java) Editor zum interaktiven Aufbau eines Objektmodells vollständige Programmumgebung für das Modell (c) schmiedecke 14 SE3-1-Einführung 9

Das Modell als EMF-Baumstruktur (XMI) (c) schmiedecke 14 SE3-1-Einführung 10

EMF generiert daraus Java-Code: Interface es wird auch eine "Impl" generiert << Live-Vorführung Modellcode >> Ecore-Modell Code (c) schmiedecke 14 SE3-1-Einführung 11

Was leistet der Java-Code? Die Javaklassen bilden die Modellstruktur ab durch Einbinden in ein Programm kann man damit die Objektstrukturen erzeugen, z.b.: this.subtopics.add(new Topic()); Das entspricht der Ausführung des Modells. (c) schmiedecke 14 SE3-1-Einführung 12

Vom Modell zum interaktiven Objekteditor Aus einem Ecore-Modell lässt sich im EMF auch ein interaktiver Objekteditor generieren... Das Editieren einer Objektstruktur ist eine Ausführung des Modells << Live-Vorführung>> Ecore-Modell Objekteditor (c) schmiedecke 14 SE3-1-Einführung 13

Vom Modell zum ineraktiven Objekteditor Modell Objektsttruktur im Editor (c) schmiedecke 14 SE3-1-Einführung 14...auch eine Modell- Ausführung

Modell oder Programm? abstraktes Objektmodell bleibt Modell der direkt korrespondierende Javacode bleibt auch Modell Für ein produktives Programm fehlt die Konkretisierung der Plattform der Benutzerschnittstelle der Zielarchitektur der Persistenz... SE-taugliche Codegeneratoren ergänzen diese Aspekte Modell + Plattform- und Codevorgaben produktiver Code (c) schmiedecke 14 SE3-1-Einführung 15

Der Mega-Schritt: Vom Java-Modell... (c) schmiedecke 14 SE3-1-Einführung 16

... zur CRUD-Web-App (c) schmiedecke 14 SE3-1-Einführung 17

CRUD-Generator mit Zielplattform JavaWeb Java2JavaWeb -Generator(in Netbeans) erzeugt aus einem Modell mit 6 Klassen eine vollständige CRUD-Web-Applikation mit über 60 Dateien Ist das gut??? realistisch! Präsentation und Persistenz brauchen viel mehr Code als die reine Fachlogik viel technischer "Boiler Plate Code" immer fast identisch, aber auf die Modellklassen abgestimmt; super-fehlerträchtig! Generieren! (c) schmiedecke 14 SE3-1-Einführung 18

2. CODEGENERIERUNG (c) schmiedecke 14 SE3-1-Einführung 19

Korrespondierender Code Naive Transformation Ecore nach Java Transformation vom Modell zum Code public class Topic { String description; Date start; Date end; Priority priority; List<Topic> subtopics; public class MindMap { String title; Date created; String author; List<MapElement> elements; public Topic() { super(); } (c) schmiedecke 14 SE3-1-Einführung 20 } } public MindMap() { super(); }

Model2Code verbal Für jede Klasse (EClass) eine Datei mit dem Klassennamen ein Klassenkopf "public class..." ein geschweiftes Klammernpaar innerhalb der Klasse für jedes Attribut (EAttribute)... für jede Referenz (EReference) für jede Operation (EOperation) (c) schmiedecke 14 SE3-1-Einführung 21

Model2Code mit Acceleo Acceleo (von Obeo) Schablonensprache für M2T Liest Modell (in XMI) erlaubt das "Navigieren" durch das Modell (Punktnotation) ermöglicht die Untersuchung der Modellelemente (mit OCL) ermöglicht die Ausgabe von Text in Dateien (c) schmiedecke 14 SE3-1-Einführung 22

Beispiel Ecore2Java mi Acceleo (c) schmiedecke 14 SE3-1-Einführung 23

Generierter Code (c) schmiedecke 14 SE3-1-Einführung 24

Beispiel UML2Java mit Acceleo (c) schmiedecke 14 SE3-1-Einführung 25

Generierter Code (c) schmiedecke 14 SE3-1-Einführung 26

3. METAMODELLE (c) schmiedecke 14 SE3-1-Einführung 27

In EMF sind alles Bäume... Modellbaum Objektbaum (c) schmiedecke 14 SE3-1-Einführung 28

Abstrakte Syntax revisited Modelle und Objektstukturen (Modellinstanzen) haben eine gemeinsame "Bauart": abstrakte oo-syntax Was sind die Elemente einer abstrakten oo-syntax? Klassen / Objekte Referenzen Attribute Methoden Es gibt eine gemeinsame Sprache zur Beschreibung von Modellen und Modellinstanzen (c) schmiedecke 14 SE3-1-Einführung 29

Ecore in Ecore (vereinfacht) (c) schmiedecke 14 SE3-1-Einführung 30

Der Acceleo-Parameter Eine abstrakte oo-syntax ist auch zur Definition von Modellierungssprachen geeignet. Metamodelle können in Ecore definiert werden Damit Acceleo die Modellierungssprache kennt, wird das Metamodell (als XMI-Datei) als Header-Parameter übergeben. (c) schmiedecke 14 SE3-1-Einführung 31

Modell-Ebenen Ein Modell, mit dem man ein Modell beschreiben kann, ist ein Metamodell (oder dessen Modellierungssprache) Ebene Inhalt Beispielsprache M3 Meta-Metamodell M2 Metamodell M1 Modell M0 Code/DS Def. der Metasprache Def. der Modellierungssprache Def. des fachlichen Modells Def. der Ausführung Ecore Ecore (c) schmiedecke 14 SE3-1-Einführung 32

4. DAS EMF (c) schmiedecke 14 SE3-1-Einführung 33

OMG OO hat neue Wege geöffnet, Systeme, Komponenten, Systemzusammenhänge etc. abstrakt als Modelle zu beschreiben. Arbeit mit Modellen erfordert gemeinsame semantische Basis Die OMG (Object Management Group) leistet diese Arbeit seit 25 Jahren (c) schmiedecke 14 SE3-1-Einführung 34

OMG-Spezifikationen Über 150 Spezifikationen In wenigen Jahren einen Standard für industrielle Softwareentwicklung geschaffen Klingende Namen wie CORBA, BPMN, DDS... Programmiersprachen wir Java, C++, Python... Grundlegendes Konzept zur Software-Modellierung Spezifikationen für Modellierungssprachen und Modellwerkzeuge (c) schmiedecke 14 SE3-1-Einführung 35

OMG-Modellierungs-Spezifikationen UML OCL MOF XMI SysML... (c) schmiedecke 14 SE3-1-Einführung 36

Eclipse Modeling Framework Implementierung der Modellierungsspezifikationen Eclipse als Basis Menge von Plugins zur Modellierung und Modellbearbeitung alle arbeiten auf XMI-Modellen "From a model specification described in XMI, EMF provides tools and runtime support to produce a set of Java classes for the model, a set of adapter classes that enable viewing and command-based editing of the model, and a basic editor." (c) schmiedecke 14 SE3-1-Einführung 37

Ist das praxisrelevant? Codegenerierung unbedingt Sprachdefinition DSL unbedingt... und vieles ist noch in der F&E-Schiene, es kommt bestimmt! Werkzeugkette: EMF ist die anerkannte Referenzimplementierung (kostenlose) echte Alternativen fehlen noch einziges hinreichend universelles Werkzeug, das das gesamte Potenzial der Spezifikation abdeckt. (c) schmiedecke 14 SE3-1-Einführung 38

5. SEMESTERÜBERBLICK (c) schmiedecke 14 SE3-1-Einführung 39

Unser Thema in diesem Semester Domänenspezifische Modellierung: "Wie entwirft man eine Modellierungssprache für einen bestimmten Aufgabenkontext?" UML-Erweiterungen DSLs Codegenerierung: "Wie kann man daraus plattformspezifischen Code generieren?" Acceleo alternative Model2Text-Schablonensprachen? (c) schmiedecke 14 SE3-1-Einführung 40

Was bringt das Semester? Übungen Semesterarbeit alles in Gruppen Übungen bringen Zulassung zur Semesterarbeit. Semesterarbeit-Praxis bis zum Semesterende (bringt m.e., fließt in die Note ein) Semesterarbeit-Text bis 2 Wochen vor Semesterbeginn (ergibt die Note) (c) schmiedecke 14 SE3-1-Einführung 41

Übungsplan Zunächst erste Schritte mit Ecore und Acceleo (Modellierungs- und Trafosprache einfach) Dann UML und Acceleo (komplexere Modellierungssprache) Dann UML erweitern und mit Acceleo verarbeiten Dann DSLs definieren und mit Acceleo verarbeiten Ab Semestermitte Semesterarbeit: Modellgetriebene Entwicklung an einer konkreten Aufgabe eigenes Metamodell eigener Generator (c) schmiedecke 14 SE3-1-Einführung 42

Lern- und Selbstlernaufgaben Modellierung EMF - Eclipse Modeling Framework MOF / ECORE für Metamodelle UML im Detail! Transformation Acceleo MTL-Impelementierung (Model Templating Language) OCL Object Constraint Language und eine konkrete Zielarchitektur, z.b. Android (c) schmiedecke 14 SE3-1-Einführung 43

Zu schwierig? "If someone ever wants to get brainsick and/or feel defeated, the easiest way is to try to comprehend the UML metamodeling approach which is used by OMG to describe UML." Kirill Fakhroutdinov on www.uml-diagrams.org/uml-meta-models.html (c) schmiedecke 14 SE3-1-Einführung 44

Das waren die schwierigen Konzepte ganz einfach erklärt. Der Rest ist Technik