Modellgetriebene Softwareentwicklung von mobilen Anwendungen WS 2014/15 Philipps-Universität Marburg
Organisation der LV Umfang: 6 SWS, 9 ECTS Punkte Veranstalter:, Daniel Strüber, Steffen Vaupel Kontakt: taentzer@informatik.uni-marburg.de, Raum D5434, Tel: 21532 {strueber,vaupel}@informatik.uni-marburg.de, Raum: D5432, Tel: 21511 Termine: VL: Mi 10 12 h, Raum: SR 04C37 VL: Mi 12 14 h, Raum: SR 04C37 UE: Mi 14 16h Raum: SR 04C37 2
Organisation der LV ab 5. Semester Voraussetzung: Grundvorlesungen in Praktischer Informatik Einführung in die Softwaretechnik Scheinkriterien: Übungsaufgaben Abschlussklausur / mündliche Prüfung Homepage der LV: www.uni-marburg.de/fb12/swt/lehre/mdd4ma1415 Kopien der Folien, Literaturhinweise, Übungen, Software 3
Lehrveranstaltungsstil Konzeptvermittlung in der Vorlesung Folienkopien sind auf der Homepage verfügbar, kleinere Abweichungen (insb. Korrekturen) sind möglich Beispiele häufig an der Tafel Zwischenfragen und Kommentare während der Vorlesung sind grundsätzlich erwünscht. Literatur häufig in Englisch Praktische Übungen, häufig am Rechner 4
Lernziele Verständnis des Paradigmas der modellgetriebenen Softwareentwicklung Modellgetriebenen Softwareentwicklung von konkreten mobilen Anwendungen Kenntnisse der Anwendungsentwicklung basierend auf Android Vertiefte Kenntnis eines Eclipse-basierten Ansatzes zur modellgetriebenen Entwicklung, konzeptionell und in praktischer Anwendung Verständnis für die Möglichkeiten und Grenzen der modellgetriebenen Softwareentwicklung Grundverständnis für die in der LV vorgestellten Werkzeuge, durch Übungen vertieft 5
Modellgetriebene SW-Entwicklung: Softwareentwicklung auf drei Ebenen mobile 6
Inhalt Einführung: Modellgetriebene Softwareentwicklung Grundideen, Motivation Anwendungsdomäne: mobile Anwendungen Entwicklung von Android-Anwendungen Einführung in Entwicklungsprinzipien Modellgetriebene Entwicklung Domänenspezifische Modellierung Sprachdefinition und Editoren Optimierung von Modellen Versionierung von Modellen Analyse von generiertem Code Zusammenfassung und Ausblick 7
Einführung in die modellgetriebene Softwareentwicklung von mobilen Anwendungen 15. Oktober 2014
Mobile Anwendungen 9
10
Entwicklung von mobilen Anwendungen Die Anwendung soll auf jeder relevanten Plattform verfügbar sein. Mehrfachentwicklung und anpassung an alle relevanten Plattformen. Die Plattformen entwickeln sich schnell. neue Technologien Die existierenden Anwendungen sollen neue Features möglichst bald nutzen. 11
Modellgetriebene Entwicklung von mobilen Anwendungen Modell? Generator 12
Iterative Softwareentwicklung Vorbereitung Nachbereitung Analyse (Anforderungsspezifikation) Evaluierung (Tests) Design (Lösungsmodell) Implementierung (Lösung) Codegenerierung 13
Modelle im SW-Entwicklungsprozess essentieller Teil des Entwicklungsprozesses zur Kommunikation mit den Kunden und anderen Entwicklern Zur Präzisierung von Anforderungen Zum Design des zu entwickelnden Systems verschiedenste Modellierungssprachen Anforderungen Modell abstrahiert konkretisiert zu realisierendes System 14
Prinzip der modellgetriebenen Softwareentwicklung domänenspezifisch Generator Modell Programm anwendungsspezifisch 15
MDD vergleichbar zu einer Autobestellung? Radio Dach Getriebe Sitze Motor 16
oder eher wie die Erstellung eines Fotokalenders? Drucken Fotografieren Binden fertige Kalender 17
Model Driven Architecture (MDA) Von der Object Management Group (OMG) entwickelt (2000) Spezifikation von MDA: http://www.omg.org/mda Motto: Model once, run anywhere. Modellierungssprache: UML Verschiedene Zielplattformen: Web Services.NET/C# J2EE/Java CORBA/C++ aus "OMG Model Driven Architecture" 18
Welche Art von mobilen Anwendungen betrachten wir? Geschäftsanwendungen mit rollenbasierten Varianten
Mobile Anwendungen: Domänenanalysis Welche Art von mobilen Anwendungen? Geschäftsanwendungen, z.b. Touristenführer, Überwachung von Maschinen Einbindung von Google Play Services und anderen Apps mehrere Arten von Benutzern (z.b. Datenverwalter und Endnutzer): Eine App pro Benutzerrolle. meist off-line benutzbar Projekt PIMAR: Platform independent mobile augmented reality 20
Modellierungsansatz (1) Modellierung und Generierung der App (2) Installation der modellierten App (3) Modellierung rollenbasierter App-Varianten 21
Wie entwickeln wir eine Infrastruktur für modellgetriebene Softwareentwicklung?
Überblick Welche Voraussetzungen müssen für die modellgetriebene Entwicklung von Anwendungssoftware erfüllt sein? Wann lohnt sich die Entwicklung einer Infrastruktur für modellgetriebenes Entwickeln in einer Domäne? Meinungen über modellgetriebene SW-Entwicklung 23
Iterative Softwareentwicklung Vorbereitung Nachbereitung Analyse (Anforderungsmodell) Test (Evaluierung) Design (Lösungsmodell) visuell MDD Implementierung (Lösung) textuell 24
Beispiel für eine MDD-Infrastruktur: PIMAR für mobile Anwendungen Domäne: geschäftliche mobile Anwendungen Modellierungssprache: domänenspezifisch Modelle enthalten Domänenwissen über Datenstrukturen, Verhalten, Oberfläche Codegenerator enthält Wissen über die Benutzung unterliegender Plattformen (z.b. OO- Konzepte, Android, ios, etc) Architektur von mobilen Anwendungen Frameworks und Bibliotheken: Android-Plattform: Java, Services (Google Play), etc. ios-plattform: C#, XCode, etc. 25
Wann lohnt es sich MDD- Infrastrukturen zu entwickeln? Viele ähnliche Anwendungen in derselben Domäne Anwendungen enthalten einen großen Teil von schematisch wiederkehrendem Code. Es ist zu erwarten, dass die Anwendung auf eine höhere Abstraktionsebene gehoben werden kann. Domänenspezifische Modellierungssprache ist vorhanden oder lässt sich aus vorhandenen Anwendungen ableiten. Es sollen mehrere Plattformen bedient werden. Technologieänderungen sind wahrscheinlich. Optional: Anwendungsentwickler verfügen über begrenztes Technologiewissen. 26
Entwicklerrollen in modellgetriebener Softwareentwicklung Anwendungsentwickler benutzt die MDD Infrastruktur entwickelt eine konkrete Anwendung in modellgetriebener Weise hat überwiegend Domänenwissen Infrastrukturentwickler benutzt Metawerkzeuge, um eine MDD-Infrastruktur zu entwickeln Modellierungssprache und Editoren Codegeneratoren hat hauptsächlich Technologiewissen Metawerkzeugentwickler entwickelt Spezifikationswerkzeuge für Modellierungssprachen Entwickelt z.b. Editorgeneratoren und Transformationssprachen hat Wissen über Sprach- und Werkzeugdesign 27
Verschränkung der Iterationen MDD-Infrastruktur Referenzanwendung(en) (Prototyp) generierte Anwendung Anwendung Referenzanwendungen initiieren die Entwicklung der domänenspezifischen Sprache. Entwickelte MDD-Infrastruktur generiert die Anwendung (weitgehend). Modellgetriebene Softwareentwicklung von mobilen Anwendungen 28
Entwicklung einer MDD-Infrastruktur Voraussetzung: Meta-Infrastruktur Definitionsmöglichkeit für die Modellierungssprache: Metamodellierung Definitionsmöglichkeit für die Generatoren: Template- Sprachen Frameworks für (verschiedene) Plattformen Definition der Modellierungssprache: Domänenanalyse: Welche Informationen sollen im Modell gehalten werden? Definition der Generatoren: Domänenanalyse: Welche Semantiken? Weitere MDD-Infrastrukturkomponenten 29
Entwicklung einer MDD-Infrastruktur anhand einer Referenzapplikation Zweigleisige Softwareentwicklung: eine konkrete Applikation MDD-Infrastruktur für die Entwicklung von Softwarefamilien MDD-Infrastruktur: Modellierungssprache (Metamodell, konkrete Syntax) Generator Zielplattformen Henne-oder-Ei -Problem Infrastruktur und Applikation werden verschränkt entwickelt 30
Analyse von Applikationscode Code einer Referenzanwendung analysieren individueller Code schematisch wiederkehrender Code separieren generischer Code Anwendungsmodell individueller Code schematisch wiederkehrender Code Plattform gen. Code 31
MDD-Infrastruktur- Entwicklungsprozess Iterative Softwareentwicklung verschränkte Entwicklung einzelner Applikationen und der MDD- Infrastruktur Entwicklung von ein oder mehreren konkreten Applikationen ohne MDD Bestimmung allgemeiner und spezifischer Anforderungen Entwicklung der MDD-Infrastruktur Entwicklung derselben Applikationen mit der MDD-Infrastruktur Analyse des Applikationscodes generischer Code (für alle Applikationen gleich) schematisch wiederkehrender Code ( bis auf wenige Information gleiche Codeteile) individueller Code (anwendungsspezifischer Teil) MDD generiert schematische Codeteile aus dem Applikationsmodell 32
Welche MDD-Infrastruktur wird extrahiert? Für eine generative Softwareentwicklung wird von einer oder mehreren Applikationen extrahiert: Metamodell für domänenspezifische Modellierungssprache Modelltransformationen: Transformationen zu Zwischenmodellen Generatoren: Model-zu-Code-Transformer Templates definieren Codefragmente aus der Applikation Benutzung von Plattformen 33
Modellgetriebene Softwareentwicklung Applikation MDD-Infrastruktur Domänenspezif. Design-Modell modelliert mit Editor Domänenspezifische Modellierungssprache transformiert in generischer und schematisch wiederkehrender Code individueller Code erzeugt Generator basiert auf basiert auf Modell-zu-Code Tr. (Generator Templates) basiert auf Infrastrukturkomponenten (Plattform) 34
Zusammenfassung Modellgetriebene Entwicklung: Softwareentwicklung auf einer höheren Abstraktionsebene Inhalt der LV: Entwicklung von mobilen Anwendungen Entwicklung einer Infrastruktur für modellgetriebene Entwicklung von mobilen Anwendungen Die Verwendung einer Infrastruktur zur modellgetriebenen Entwicklung ist mehr als die Einstellung einiger Parameter. Sie ist ein kreativer Akt. 35
Zusammenfassung Modellgetriebene Entwicklung bedeutet zweierlei: Entwicklung einer MDD-Infrastruktur Entwicklung einer Anwendung mit der MDD-Infrastruktur Entwicklung einer MDD-Infrastruktur: Entwicklung von Referenzapplikationen Analyse des Applikationscodes: Separierung in generischen, schematisch wiederkehrenden und individuellen Code Definition einer Modellierungssprache Definition von Generatoren 36
Ausblick: Softwareentwicklung auf drei Ebenen mobile 37