vortrag im rahmen der vorlesung modellgetriebene ... · xcode 4.2.1 = geht, benötigt manuelle...
TRANSCRIPT
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
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
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!
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
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
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
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
8 von 24 MDSD | WS 11/12 | 26.01.2012
APPlause Project Wizard
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
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
11 von 24 MDSD | WS 11/12 | 26.01.2012
Elemente der Domäne
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
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
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
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
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
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
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“
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
20 von 24 MDSD | WS 11/12 | 26.01.2012
CustomApplauseDslNewProjectWizard.java GeneratorFragmentSelectionWizardPage.java
Android
Mobile Web
iPhone
Windows Phone 7
21 von 24 MDSD | WS 11/12 | 26.01.2012
Android
Mobile Web
iPhone
Windows Phone 7
CustomApplauseProjectCreator
execute()
22 von 24 MDSD | WS 11/12 | 26.01.2012
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
24 von 24 MDSD | WS 11/12 | 26.01.2012
Fragen? Anregungen?