Creëer je eigen DSL tools met Eclipse ― De Android Challenge Lex Heerink, Peter Ebben, Jaap Reitsma, Maarten Steen Telematica Instituut
De aanleiding • Freeband A-MUSE project Specificatie en ontwerp van mobiele diensten • Model gebaseerde ontwikkeling staat centraal •
• Open Handset Alliance introduceert Android Nieuw, veelbelovend platform voor mobiele apps • Android Challenge •
• Android als casus
The Android Developer Challenge will award $10 million to developers who build great apps for Android.
Geen killer app … • … maar ontwikkelstraat voor killer apps … • … volgens MDD filosofie •
Het proces 1. Kennisopbouw • Android documentatie • Prototype applicatie 2. Metamodel definiëren 3. Applicatiemodel definiëren 4. Code templates definiëren 5. Code genereren 6. Itereren 7. Applicatie editor genereren 8. Itereren
Kennisopbouw Android documentatie
prototype applicatie
MDD Android metamodel metamodel
Android app model app model
Android code code Legenda meta model
code templates app model editor code engine
Instrumenten app model
code
Kennisopbouw: het domein van Android • Android SDK Features o.a. Internet, telefonie, camera, GPS, BT, … • Emulator ondersteuning •
• Belangrijkste applicatie concepten Views (schermen), Activities (taken) en Data • Relatie tussen schermen en taken • Starten van nieuwe taken •
• Voorbeelden van toepassingen
Weer informatie Mobiele reisgids Navigeren met plaatjes
Eclipse als platform voor de ontwikkelstraat • Open-source IDE •
primair voor Java, uitbreidbaar modellen
Eclipse Modelling Framework (EMF) creëren en beheren van modellen
templates
«IMPORT «IMPORT"http://www.telin.nl/android"» "http://www.telin.nl/android"» «IMPORT «IMPORT"http://www.eclipse.org/emf/2002/Ecore"» "http://www.eclipse.org/emf/2002/Ecore"» «IMPORT «IMPORT"http://www.eclipse.org/emf/2002/GenModel"» "http://www.eclipse.org/emf/2002/GenModel"» «EXTENSION «EXTENSIONxpt::common::Naming» xpt::common::Naming» «REM» «REM» Generates GeneratesananXML XMLelement elementfor fora aspecific specificview, view,including includingoptional optionalnamespace namespace declaration, declaration,view viewproperties, properties,layout layoutproperties properties(if(ifspecified) specified)and andoptional optional child childviews. views. «ENDREM» «ENDREM» «DEFINE «DEFINEView(boolean View(booleanisTopLevelView) isTopLevelView)FOR FORandroid::view::View-» android::view::View-» <«EXPAND <«EXPANDViewName::ViewName-» ViewName::ViewName-» «IF «IFisTopLevelView-» isTopLevelView-» xmlns:android="http://schemas.android.com/apk/res/android" xmlns:android="http://schemas.android.com/apk/res/android" «ELSE-» «ELSE-» «IF «IFname name!=!=null null&& &&name.length() name.length()>>0-» 0-» android:id="@+id/«viewIdentifier(this)»" android:id="@+id/«viewIdentifier(this)»" «ENDIF-» «ENDIF-» «ENDIF-» «ENDIF-» «EXPAND «EXPANDViewProperties::ViewProperties-» ViewProperties::ViewProperties-» «IF «IFlayoutParameters layoutParameters!=!=null-» null-» «EXPAND «EXPANDLayoutProperties::LayoutProperties LayoutProperties::LayoutPropertiesFOR FORlayoutParameters-» layoutParameters-»
codegeneratie (Xpand) genereren van code uit modellen
editor configuratie Graphical Modelling Framework (GMF) genereren van grafische model editor
Creëren van een Android metamodel • Op basis van de kennisopbouw • Beschreven in Ecore (EMF)
Het Het opstellen opstellen van van een een goed goed metamodel metamodel is is complex complex Vaak Vaak zijn zijn meerdere meerdere iteraties iteraties nodig nodig Onze Onze aanpak: aanpak: •• klein klein beginnen beginnen •• stapsgewijs stapsgewijs uitbreiden uitbreiden
Een eenvoudige toepassing • Navigeren door lijst van contacten • Bij selectie bellen
• MDD vereist een applicatiemodel Tree editor Æ beschikbaar maar lastig in gebruik • Grafische editor Æ niet beschikbaar maar prettiger •
Een grafische editor voor Android modellen • Genereren ipv bouwen • Met behulp van GMF GMF
1. MetaModel
2. Grafische representatie
4. Mapping
3. Tool Palette
Het grafisch applicatiemodel van de toepassing
View •
Specifieren van de layout • Naam:
Activiteit •
Specificeren van de acties • Verwijst naar View • Ophalen uit lijst van contacten • Specificeren van actie bij selectie
AndroMate: de ontwikkelstraat voor Android Constant per applicatie
Opstellen metamodel
code templates model editor
Specificeren applicatiemodel
Code generatie
application model Invullen gaten (5 regels code voor onze applicatie)
code applicatie
Voor elke applicatie opnieuw
Het gevolgde ontwikkelproces (kwalitatief) • Veranderingen aan het metamodel sijpelen door •
code template, grafische editor, modellen
Domein study
tijd
Metamodelleren
feedback
Code templates Editor Modelleren Code voorstudie
bouwen van de ontwikkelstraat
Conclusies en ervaringen • Eclipse is goed uitgerust voor MDD EMF voor modellen, GMF voor grafische model editor, Xpand voor codegeneratie • Nieuwe technologie Æ kinderziektes •
• MDD geeft harde link tussen requirements en code •
Staat dichter bij domein experts dan traditioneel ontwerptraject
• Zorg voor stabiele metamodellen •
Veranderingen propageren door in modellen, templates, editor en code
• Productiviteitsstijging in ontwikkelomgeving Rudimentaire grafische editor vrij snel operationeel • Schatting: O(10) sneller dan zelfbouw •
Ervaring rijker (Eclipse en MDD), illusie armer (geen prijs)