Vortrag im Rahmen der Vorlesung Modellgetriebene ... · Xcode 4.2.1 = geht, benötigt manuelle...

24
itemis APPlause Vortrag im Rahmen der Vorlesung Modellgetriebene Softwareentwicklung/Architekturen Dozenten: Prof. Dr. Martin Buchheit & Bernhard Merkle WS 2011/2012 Referent: Florian Kalisch, Denis Radjenovic

Transcript of Vortrag im Rahmen der Vorlesung Modellgetriebene ... · Xcode 4.2.1 = geht, benötigt manuelle...

Page 1: Vortrag im Rahmen der Vorlesung Modellgetriebene ... · Xcode 4.2.1 = geht, benötigt manuelle Anpassung Xcode 3.2.6 Android API v4.0, geht nicht API v2.1 Windows Phone lässt sich

itemis APPlause

Vortrag im Rahmen der Vorlesung

Modellgetriebene Softwareentwicklung/Architekturen

Dozenten: Prof. Dr. Martin Buchheit & Bernhard Merkle

WS 2011/2012

Referent: Florian Kalisch, Denis Radjenovic

Page 2: Vortrag im Rahmen der Vorlesung Modellgetriebene ... · Xcode 4.2.1 = geht, benötigt manuelle Anpassung Xcode 3.2.6 Android API v4.0, geht nicht API v2.1 Windows Phone lässt sich

2 von 24 MDSD | WS 11/12 | 26.01.2012

Einführung

itemis APPlause

◦ Funktionsweise / Ergebnisse

Analyse der Domänenarchitektur

◦ Domäne / Mapping Konzepte / Generierungsprozess / APPlause Projekt Wizard

Eigenes Beispiel mit APPlause

Fazit & Ausblick

Page 3: Vortrag im Rahmen der Vorlesung Modellgetriebene ... · Xcode 4.2.1 = geht, benötigt manuelle Anpassung Xcode 3.2.6 Android API v4.0, geht nicht API v2.1 Windows Phone lässt sich

3 von 24 MDSD | WS 11/12 | 26.01.2012

Entwicklung mobiler Anwendungen heute: ◦ EINE Idee für eine mobile Anwendung (App)

◦ VIELE Plattformen auf dem Markt (z.B. iOS, Android, Windows Phone 7, Blackberry usw.)

◦ Frage: Für welche Plattform entscheide ich mich?

◦ Antwort: Am Besten für so viele Plattformen wie möglich!

Page 4: Vortrag im Rahmen der Vorlesung Modellgetriebene ... · Xcode 4.2.1 = geht, benötigt manuelle Anpassung Xcode 3.2.6 Android API v4.0, geht nicht API v2.1 Windows Phone lässt sich

4 von 24 MDSD | WS 11/12 | 26.01.2012

Probleme bei der Entwicklung für verschiedene Plattformen: ◦ unterschiedliche Entwicklungsplattformen

Mac OS X oder Windows

◦ unterschiedliche Entwicklungsumgebungen

Eclipse, Xcode, Visual Studio

◦ unterschiedliche Programmiersprachen

C#, Objective-C, Java usw.

Lösung: ◦ MDSD -> zumindest für den Programm-Code

Page 5: Vortrag im Rahmen der Vorlesung Modellgetriebene ... · Xcode 4.2.1 = geht, benötigt manuelle Anpassung Xcode 3.2.6 Android API v4.0, geht nicht API v2.1 Windows Phone lässt sich

5 von 24 MDSD | WS 11/12 | 26.01.2012

Opensource Projekt von itemis

Projekt-Website:

◦ https://github.com/applause/applause

APPlause ist ein vorkonfiguriertes Xtext Projekt und kein Plug-In oder eigenständige Anwendung

basiert auf Eclipse v3.6 und Xtext v1.0.2

Installation erfolgt durch einen simplen Import in den Eclipse-Workspace

Page 6: Vortrag im Rahmen der Vorlesung Modellgetriebene ... · Xcode 4.2.1 = geht, benötigt manuelle Anpassung Xcode 3.2.6 Android API v4.0, geht nicht API v2.1 Windows Phone lässt sich

6 von 24 MDSD | WS 11/12 | 26.01.2012

Unterstützte Plattformen:

Google App Engine ◦ Python v2.6

Apple iOS ◦ Xcode v3.1

Android ◦ Eclipse API v2.1

Windows Phone 7 ◦ VisualStudio 2010, API v7.5

Page 7: Vortrag im Rahmen der Vorlesung Modellgetriebene ... · Xcode 4.2.1 = geht, benötigt manuelle Anpassung Xcode 3.2.6 Android API v4.0, geht nicht API v2.1 Windows Phone lässt sich

7 von 24 MDSD | WS 11/12 | 26.01.2012

Starten einer eigenen Eclipse-Instanz für den Modelleditor

File->New->Other = select Project Wizard

Page 8: Vortrag im Rahmen der Vorlesung Modellgetriebene ... · Xcode 4.2.1 = geht, benötigt manuelle Anpassung Xcode 3.2.6 Android API v4.0, geht nicht API v2.1 Windows Phone lässt sich

8 von 24 MDSD | WS 11/12 | 26.01.2012

APPlause Project Wizard

Page 9: Vortrag im Rahmen der Vorlesung Modellgetriebene ... · Xcode 4.2.1 = geht, benötigt manuelle Anpassung Xcode 3.2.6 Android API v4.0, geht nicht API v2.1 Windows Phone lässt sich

9 von 24 MDSD | WS 11/12 | 26.01.2012

Google App Engine: ◦ http://hs-furtwagen-mytest.appspot.com/

iOS ◦ Xcode 4.2.1 = geht, benötigt manuelle Anpassung

◦ Xcode 3.2.6

Android ◦ API v4.0, geht nicht

◦ API v2.1

Windows Phone ◦ lässt sich mit VS2010 kompilieren aber nicht unter

einer VM anzeigen

◦ hat noch viel manuelle Anpassung benötigt

Page 10: Vortrag im Rahmen der Vorlesung Modellgetriebene ... · Xcode 4.2.1 = geht, benötigt manuelle Anpassung Xcode 3.2.6 Android API v4.0, geht nicht API v2.1 Windows Phone lässt sich

10 von 24 MDSD | WS 11/12 | 26.01.2012

Beschreibung der Domäne ◦ Adressiert werden sogenannte Datengetriebene

Anwendungen

Auslesen von Daten

Navigation durch diese

◦ Manipulation aktuell nicht unterstützt

◦ als Datenquellen dienen Daten im XML-Format

Page 11: Vortrag im Rahmen der Vorlesung Modellgetriebene ... · Xcode 4.2.1 = geht, benötigt manuelle Anpassung Xcode 3.2.6 Android API v4.0, geht nicht API v2.1 Windows Phone lässt sich

11 von 24 MDSD | WS 11/12 | 26.01.2012

Elemente der Domäne

Page 12: Vortrag im Rahmen der Vorlesung Modellgetriebene ... · Xcode 4.2.1 = geht, benötigt manuelle Anpassung Xcode 3.2.6 Android API v4.0, geht nicht API v2.1 Windows Phone lässt sich

12 von 24 MDSD | WS 11/12 | 26.01.2012

Mapping Konzepte tabbarApplication APPlauseSample {

button {

title="Applause"

icon="trophy.png"

view= CommitList(

allCommitsByRepository("applause/applause")

)

}

button {

title= "Peter"

icon= "person.png"

view= UserDetails(

userData("peterfriese"))

}

button {

title= "Heiko"

icon= "person.png"

view= UserDetails(userData("hbehrens"))

}

}

Entity

Data Provider

Tab bar

Tab bar button

Table view

View title

Table cell

Page 13: Vortrag im Rahmen der Vorlesung Modellgetriebene ... · Xcode 4.2.1 = geht, benötigt manuelle Anpassung Xcode 3.2.6 Android API v4.0, geht nicht API v2.1 Windows Phone lässt sich

13 von 24 MDSD | WS 11/12 | 26.01.2012

Mapping Konzepte type String mapsTo "String"

entity Commit {

String id

String url

String message

User committer

}

entity User {

String name

String login

String language

String location

String repos

String followers

String company

}

entity Repository {

String description

String watchers

String name

String owner

}

Entity

Data Provider

Tab bar

Tab bar button

Table view

View title

Table cell

Page 14: Vortrag im Rahmen der Vorlesung Modellgetriebene ... · Xcode 4.2.1 = geht, benötigt manuelle Anpassung Xcode 3.2.6 Android API v4.0, geht nicht API v2.1 Windows Phone lässt sich

14 von 24 MDSD | WS 11/12 | 26.01.2012

Mapping Konzepte contentprovider allCommitsByRepository(String path)

returns Commit[]

fetches XML

from (

"http://github.com/api/v2/xml/commits/list/" path

"/master“

)

selects "commits.commit"

contentprovider userData(String login)

returns User

fetches XML

from ("http://github.com/api/v2/xml/user/search/" login)

selects "users.user"

contentprovider allRepositoriesByUser(String login)

returns Repository[]

fetches XML

from ("http://github.com/api/v2/xml/repos/show/" login)

selects "repositories.repository"

Entity

Data Provider

Tab bar

Tab bar button

Table view

View title

Table cell

Page 15: Vortrag im Rahmen der Vorlesung Modellgetriebene ... · Xcode 4.2.1 = geht, benötigt manuelle Anpassung Xcode 3.2.6 Android API v4.0, geht nicht API v2.1 Windows Phone lässt sich

15 von 24 MDSD | WS 11/12 | 26.01.2012

Mapping Konzepte

tableview CommitList(Commit[] commits) {

title= "Commits"

section {

cell Subtitle foreach commits as c {

text= c.committer.name

details= c.message

action= UserDetails(

userData(c.committer.login)

)

}

}

}

Entity

Data Provider

Tab bar

Tab bar button

Table view

View title

Table cell

Page 16: Vortrag im Rahmen der Vorlesung Modellgetriebene ... · Xcode 4.2.1 = geht, benötigt manuelle Anpassung Xcode 3.2.6 Android API v4.0, geht nicht API v2.1 Windows Phone lässt sich

16 von 24 MDSD | WS 11/12 | 26.01.2012

User Interface initiiert Generierung mit Hilfe der plattformspezifischen Generatoren

Problem: ◦ User Interface muss wissen welche Generatoren zur

Verfügung stehen

Lösung: ◦ User Interface und Generatoren sind als Plug-Ins

implementiert

Page 17: Vortrag im Rahmen der Vorlesung Modellgetriebene ... · Xcode 4.2.1 = geht, benötigt manuelle Anpassung Xcode 3.2.6 Android API v4.0, geht nicht API v2.1 Windows Phone lässt sich

17 von 24 MDSD | WS 11/12 | 26.01.2012

User Interface bietet Extension Points buildstrategy und mobileplattform

Generatoren registrieren sich mit eigenen Extensions buildstrategy und mobileplatform an den Extension Points des User Interface

Page 18: Vortrag im Rahmen der Vorlesung Modellgetriebene ... · Xcode 4.2.1 = geht, benötigt manuelle Anpassung Xcode 3.2.6 Android API v4.0, geht nicht API v2.1 Windows Phone lässt sich

18 von 24 MDSD | WS 11/12 | 26.01.2012

Generator „Android“

<?xml version="1.0" encoding="UTF-8"?>

<?eclipse version="3.4"?>

<plugin>

<extension

point="org.applause.lang.ui.buildstrategy">

<buildstrategy

class="org.applause.lang.generator.android.

builder.AndroidBuildStrategy">

</buildstrategy>

</extension>

<extension

point="org.applause.lang.ui.mobileplatform">

<mobileplatform

name="Android"

projectNameSuffix="Android"

templateProject="templateproject/project.zip">

</mobileplatform>

</extension>

</plugin>

plugin.xml „Android“

Page 19: Vortrag im Rahmen der Vorlesung Modellgetriebene ... · Xcode 4.2.1 = geht, benötigt manuelle Anpassung Xcode 3.2.6 Android API v4.0, geht nicht API v2.1 Windows Phone lässt sich

19 von 24 MDSD | WS 11/12 | 26.01.2012

erzeugt gewünschte plattformspezifische Projekte inklusive Beispielmodell

nutzt die Wizard-Funktionalität von Xtext

ist unterteilt in zwei Bereiche: ◦ Benutzeroberfläche

CustomApplauseDslNewProjectWizard.java

GeneratorFragmentSelectionWizardPage.java

◦ Projektgenerator

CustomApplauseProjectCreator.java

Page 20: Vortrag im Rahmen der Vorlesung Modellgetriebene ... · Xcode 4.2.1 = geht, benötigt manuelle Anpassung Xcode 3.2.6 Android API v4.0, geht nicht API v2.1 Windows Phone lässt sich

20 von 24 MDSD | WS 11/12 | 26.01.2012

CustomApplauseDslNewProjectWizard.java GeneratorFragmentSelectionWizardPage.java

Android

Mobile Web

iPhone

Windows Phone 7

Page 21: Vortrag im Rahmen der Vorlesung Modellgetriebene ... · Xcode 4.2.1 = geht, benötigt manuelle Anpassung Xcode 3.2.6 Android API v4.0, geht nicht API v2.1 Windows Phone lässt sich

21 von 24 MDSD | WS 11/12 | 26.01.2012

Android

Mobile Web

iPhone

Windows Phone 7

CustomApplauseProjectCreator

execute()

Page 22: Vortrag im Rahmen der Vorlesung Modellgetriebene ... · Xcode 4.2.1 = geht, benötigt manuelle Anpassung Xcode 3.2.6 Android API v4.0, geht nicht API v2.1 Windows Phone lässt sich

22 von 24 MDSD | WS 11/12 | 26.01.2012

Page 23: Vortrag im Rahmen der Vorlesung Modellgetriebene ... · Xcode 4.2.1 = geht, benötigt manuelle Anpassung Xcode 3.2.6 Android API v4.0, geht nicht API v2.1 Windows Phone lässt sich

23 von 24 MDSD | WS 11/12 | 26.01.2012

Pro ◦ APPlause ist im Rahmen der Domäne produktiv

einsetzbar

◦ die Generatoren sind gut strukturiert

◦ der APPlause Projekt Wizard erspart viel Arbeit

◦ APPlause kann als Referenzprojekt für eigene Entwicklung mit Xtext verwendet werden

Con ◦ fehlende Dokumentation

◦ abweichende Benutzeroberflächen in den generierten Anwendungen

Page 24: Vortrag im Rahmen der Vorlesung Modellgetriebene ... · Xcode 4.2.1 = geht, benötigt manuelle Anpassung Xcode 3.2.6 Android API v4.0, geht nicht API v2.1 Windows Phone lässt sich

24 von 24 MDSD | WS 11/12 | 26.01.2012

Fragen? Anregungen?