"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