1 / 16

Domain-Specific Modelling Language for Navigation Applications on S60 Mobile Phones

Domain-Specific Modelling Language for Navigation Applications on S60 Mobile Phones. Janne Merilinna. Outline. Motivation for End-User Driven Development Solution for End-User Driven Development DSML for Navigation Applications on S60 Implementation DSML

doris
Télécharger la présentation

Domain-Specific Modelling Language for Navigation Applications on S60 Mobile Phones

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Domain-Specific Modelling Language for Navigation Applications on S60 Mobile Phones Janne Merilinna

  2. Outline • 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

  3. End-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?

  4. 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. End-User Driven Development- Solution

  5. Navigation Applications for S60- Starting Point

  6. Navigation Applications for S60- Relation to Other Languages and Frameworks

  7. Navigation Applications for S60- NavApp Framework

  8. Navigation Applications for S60- First Example 1/4

  9. Navigation Applications for S60- First Example 2/4

  10. Navigation Applications for S60- First Example 3/4

  11. Navigation Applications for S60- First Example 4/4 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([EKeyHash, self.Zoom6_29236]) self.set_keys(keys, False) self.OptionsNode6_29304() def Keys6_29224(self): keys=[] keys.append([EKeyStar, 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["addressStreet"]=self.destination_location stopNode = Node.Node(tags=tags) callbacks=[] callbacks.append("show_progress_in_text") callbacks.append("show_progress_in_route") self.navigate(startNode, stopNode, callbacks, "BFS") self.StartLocator6_29400() def OptionsNode6_29304(self): mainmenu = [(u"Navigate", ((u"Navigate to destination", self.Query6_29342),(u"Stop navigating", self.Navigate6_29355)))] self.set_main_menu(mainmenu) def Query6_29342(self): self.destination_location = appuifw.query(u"Choose destination", 'text', u"destination_location") self.CoordinateLocation6_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.zooming(1) self.update_canvas() def Note6_29084(self): appuifw.note(u"You are at the destination", 'info') return(self.Wait6_32474, False) def SelectCondition6_29576(self): if (self.destination_location == self.get_current_street(self.get_cursor_position())): return(self.Note6_29084, False) return(self.Wait6_29597, False) def Start6_29026(self): return(self.NavAppStaticView6_29029, False) class NavigationApplicationClass6_28897(NavAppInners.NavAppInners): def start_running(self): self.classVariables() state=self.Start6_29026 self.call_stack.append(self.Start6_29026) while(self.running): state, add_to_stack=state() 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)

  12. Navigation Applications for S60- Second Example 1/2

  13. Navigation Applications for S60- Second Example 2/2

  14. End-User Driven Development and NavApp • Currently, not that straightforward to use • Notation is what it is…☺ • Solution-space elements should be abstracted -> 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)

  15. What Next? • 1.0 version of the framework and language • Support for multi-person positioning • Multi-player positioning games • Social dimension • Open source? • Open models??

  16. Questions

More Related