APPLause - Florian Kalisch

Werbung
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

Einführung

itemis APPlause
◦ Funktionsweise / Ergebnisse

Analyse der Domänenarchitektur
◦ Domäne / Mapping Konzepte /
Generierungsprozess / APPlause Projekt Wizard

Eigenes Beispiel mit APPlause

Fazit & Ausblick
MDSD | WS 11/12 | 26.01.2012
2 von 24

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!
MDSD | WS 11/12 | 26.01.2012
3 von 24

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
MDSD | WS 11/12 | 26.01.2012
4 von 24

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
MDSD | WS 11/12 | 26.01.2012
5 von 24

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
MDSD | WS 11/12 | 26.01.2012
6 von 24


Starten einer eigenen Eclipse-Instanz für den
Modelleditor
File->New->Other = select Project Wizard
MDSD | WS 11/12 | 26.01.2012
7 von 24

APPlause Project Wizard
MDSD | WS 11/12 | 26.01.2012
8 von 24

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
MDSD | WS 11/12 | 26.01.2012
9 von 24

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
MDSD | WS 11/12 | 26.01.2012
10 von 24

Elemente der Domäne
MDSD | WS 11/12 | 26.01.2012
11 von 24

Mapping Konzepte
Entity
Data Provider
Tab bar
tabbarApplication APPlauseSample {
button {
title="Applause"
icon="trophy.png"
view= CommitList(
allCommitsByRepository("applause/applause")
)
}
button {
title= "Peter"
icon= "person.png"
view= UserDetails(
userData("peterfriese"))
}
Tab bar button
Table view
View title
button {
title= "Heiko"
icon= "person.png"
view= UserDetails(userData("hbehrens"))
}
Table cell
}
MDSD | WS 11/12 | 26.01.2012
12 von 24

Mapping Konzepte
type String mapsTo "String"
entity Commit {
Entity
Data Provider
Tab bar
String id
String url
String message
User committer
}
entity User {
String
String
String
String
String
String
String
Tab bar button
Table view
View title
name
login
language
location
repos
followers
company
}
entity Repository {
String
String
String
String
Table cell
description
watchers
name
owner
}
MDSD | WS 11/12 | 26.01.2012
13 von 24

Mapping Konzepte
Entity
Data Provider
Tab bar
Tab bar button
Table view
View title
Table cell
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"
MDSD | WS 11/12 | 26.01.2012
14 von 24

Mapping Konzepte
Entity
Data Provider
Tab bar
tableview CommitList(Commit[] commits) {
title= "Commits"
section {
Tab bar button
cell Subtitle foreach commits as c {
text= c.committer.name
details= c.message
action= UserDetails(
userData(c.committer.login)
)
}
Table view
View title
Table cell
}
}
MDSD | WS 11/12 | 26.01.2012
15 von 24


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
MDSD | WS 11/12 | 26.01.2012
16 von 24


User Interface bietet Extension Points
buildstrategy und mobileplattform
Generatoren registrieren sich mit eigenen
Extensions buildstrategy und mobileplatform
an den Extension Points des User Interface
MDSD | WS 11/12 | 26.01.2012
17 von 24
Generator „Android“
plugin.xml „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>
MDSD | WS 11/12 | 26.01.2012
18 von 24

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
MDSD | WS 11/12 | 26.01.2012
19 von 24
CustomApplauseDslNewProjectWizard.java
GeneratorFragmentSelectionWizardPage.java
Android
Mobile Web
iPhone
Windows Phone 7
MDSD | WS 11/12 | 26.01.2012
20 von 24
Android
Mobile Web
iPhone
Windows Phone 7
CustomApplauseProjectCreator
execute()
MDSD | WS 11/12 | 26.01.2012
21 von 24
MDSD | WS 11/12 | 26.01.2012
22 von 24

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
MDSD | WS 11/12 | 26.01.2012
23 von 24
Fragen? Anregungen?
MDSD | WS 11/12 | 26.01.2012
24 von 24
Herunterladen