Title: DomainSpecific Modelling Language for Navigation Applications on S60 Mobile Phones
1Domain-Specific Modelling Language for Navigation
Applications on S60 Mobile Phones
2Outline
- Motivation for End-User Driven Development
- Solution for End-User Driven Development
- DSML for Navigation Applications on S60
- Implementation
- DSML
- Illustration of the use of the language
- Summary
- Future work
3End-User Driven Development- Motivation
- Open source?
- Enables a possibility to modify application
- Enables developing multiple variants
- Why not?
- Modifying requires to study the existing source
code - Don't have time and/or interest
- Variants not satisfying enough?
4End-User Driven Development- Solution
- Background
- Domain-Specific Modelling Languages (DSMLs)
provide a possibility for very rapid, iterative
and incremental software development - 5-10 times production gains compared to
traditional software development means witnessed
in industrial setups. - Approach
- Domain-Specific Modelling Languages
- Code generators
- Domain-specific frameworks
- and release these as open source and/or open
models - Objectives
- Languages that enable rapid development of
applications/prototypes - New business opportunities e.g. in mass
customisation - Etc.
5Navigation Applications for S60- Starting Point
6Navigation Applications for S60- Relation to
Other Languages and Frameworks
7Navigation Applications for S60- NavApp Framework
8Navigation Applications for S60- First Example
1/4
9Navigation Applications for S60- First Example
2/4
10Navigation Applications for S60- First Example
3/4
11Navigation Applications for S60- First Example
4/4
- class NavigationApplicationClass6_28897(NavAppInne
rs.NavAppInners) - def start_running(self)
- self.classVariables()
- stateself.Start6_29026
- self.call_stack.append(self.Start6_29026)
- while(self.running)
- state, add_to_stackstate()
- if add_to_stack
- self.call_stack.append(state)
- self.update_canvas()
- def classVariables(self)
- self.destination_location""
- self.start_location""
- pass
- def NavAppStaticView6_29029(self)
- self.Keys6_29224()
- return(self.SelectCondition6_29576, False)
def CoordinateLocation6_29416(self) self.start
_location self.get_cursor_position() self.set_
last_location() self.Navigate6_31628() def
Keys6_29241(self) keys keys.append(EKeyHa
sh, self.Zoom6_29236) self.set_keys(keys,
False) self.OptionsNode6_29304() def
Keys6_29224(self) keys keys.append(EKeySt
ar, self.Zoom6_29231) self.set_keys(keys,
False) self.Keys6_29241() def
Navigate6_29355(self) self.navigate(None,None)
self.update_canvas()
def Navigate6_31628(self) startNode
self.start_location tags tags"addressStree
t"self.destination_location stopNode
Node.Node(tagstags) callbacks callbacks.ap
pend("show_progress_in_text") callbacks.append("
show_progress_in_route") self.navigate(startNode
, stopNode, callbacks, "BFS") self.StartLocator6
_29400() def OptionsNode6_29304(self) mainmen
u (u"Navigate", ((u"Navigate to destination",
self.Query6_29342),(u"Stop navigating",
self.Navigate6_29355))) self.set_main_menu(main
menu) def Query6_29342(self) self.destination
_location appuifw.query(u"Choose destination",
'text', u"destination_location") self.Coordinate
Location6_29416() def StartLocator6_29400(self)
self.start_locator() self.update_canvas()
def Zoom6_29236(self) self.zooming(-1) self.
update_canvas() def Zoom6_29231(self) self.zo
oming(1) self.update_canvas() def
Note6_29084(self) appuifw.note(u"You are at
the destination", 'info') return(self.Wait6_3247
4, False) def SelectCondition6_29576(self) if
(self.destination_location self.get_current_st
reet(self.get_cursor_position())) return(self.
Note6_29084, False) return(self.Wait6_29597,
False) def Start6_29026(self) return(self.Nav
AppStaticView6_29029, False)
12Navigation Applications for S60- Second Example
1/2
13Navigation Applications for S60- Second Example
2/2
14End-User Driven Development and NavApp
- Currently, not that straightforward to use
- Notation is what it is?
- Solution-space elements should be abstracted -gt
easier to use - However, it is a lot easier and faster to develop
applications vs. manually writing the source code - Still, my mom probably wouldn't be interested in
it - (actually, she wouldn't be in any case)
15What Next?
- 1.0 version of the framework and language
- Support for multi-person positioning
- Multi-player positioning games
- Social dimension
- Open source?
- Open models??
16Questions