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. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.
Contents • Mobile code in Ambient Intelligence • Trends that lead to mobile code • Technical difficulties • Progressive application streaming • Interesting research topics • Speculations • Conclusions
Mobile code in Ambient Intelligence • In Ambient Intelligence • The location of the user changes • Software must adapt to the device/environment • Software must adapt to the available resources • Not all software is available beforehand • Connections can be disconnected • Software must be available for a lot of users at the same time • Services/software or parts of services/software have to migrate between different devices
Trends that lead to mobile code Informationoverload Diversificationof users The number and the different types of users grows steadily The amount of information on the internet continues to grow Personalisationof information Interpose between a user and one or more Internet Services to reduce information overload A lot of websites allready provide personalised access to information Complex filtering,metasearch etc. No uniform interface for information, but personalised presentation and access Complex techniques for searching and organising information Personalisation of the server Personalisation of proxy sites
Trends that lead to mobile code Limited bandwidth Mobileusers More and more users are on the move while using their devices There is still a big difference between backbones and client networks Avoid largetransfers Disconnected operation Sending lots of information over a limited bandwidth takes too long... Personalisation of the proxy sites
Trends that lead to mobile code Servers cannot keep up with requests from the users, and users want to use the same information filtering on different servers Dynamically install client software for optimal interaction Mobile code becomes a necessity: some personalisation and services do not work with disconnections (e.g. monitoring) Impossible to saveeverything on the server Sending mobile codeto the server Sending mobile codeto the user
Trends that lead to mobile code • From: • David Kotz and Robert S. Gray. Mobile code: The future of the Internet. In Proceedings of the Workshop “Mobile Agents in the Context of Competition and Cooperation (MAC3)" at Autonomous Agents '99, pages 6-12, Seattle, Washington, USA, May 1999 • In Ambient Intelligence we need more than just personalisation of services!
Technical difficulties • How to start the code as fast as possible when arriving at the user? • How to avoid to migrate large pieces of code at the same time? • How to avoid network overload with large numbers of simultaneous users? • How to get “something” to a user that only connects for a short time?
Progressive Application Streaming • Can be compared to audio and videostreaming • Start to play as soon as a first part arrives • Everyone can connect to a stream, whenever they want • Code is divided in parts • Parts start as soon as they arrive and as fast as possible • Load the following parts in parallel • “Something” happens, even if not all the code has been transferred • Repeating important parts in the stream (to solve dependency problems) • New form of mobile code, using a push model / broadcasting
Broadcasting • Using cable: e.g. interactive television • Wireless: e.g. shopping center • Network: using multicasting • Usually not supported on the network • Can be simulated using peer to peer filesharing techniques (e.g. Bittorrent) • Following animation shows how peer to peer techniques avoid server overload
Interesting research topics • What do we send, and when? • Classes/objects, methods, features, components? • Do we have to implement them specifically? • How do we divide an existing program in parts? • How much do we put in a part? How do we make software progressive?
Dynamic What is used first? What are the dependencies? 7 4 5 2 6 3 1
Dynamic Send the GUI first, then progressively add functionality 7 4 5 2 6 3 Frame
Dynamic Sending parts with high coupling together 7 4 5 2 6 3 1
Dynamic Divide big elements in smaller parts 7a 7b 4 5 2 6 3 1
Parallelisation of code Asynchronous method calls and communication 7 4 5 2 6 3 1
Putting into a stream How to map the parts onto a repeating stream? Which one are important? 7 4 5 2 6 3 1
Static Using Reverse Refactoring Parent inheritedMethod() Child Child
Static Child inheritedMethod() Child inheritedMethod()
Feature extraction - Aspects • Detecting aspects in programs, for example: • Logging code everywhere in the program • Extract logging code into an aspect • Send the logging aspect together with the first part of the program That part can immediately use the aspect code, and the aspect code will be available when the following parts arrive
Discovering patterns • Just as with design patterns, discovering “migration patterns” • Searching for repeating patterns in code, for which a standard transformation applies • Using optimising compiler techniques based on certain patterns to optimise streaming Looking for a middleroad between “good” and “bad” code to have better migration conditions
Other research topics • What to do when migration gets interrupted? • How to react when a part arrives/disappears? • How to coordinate parts at arrival? • How do we know which part can start immediately? Does it have dependencies? • How to react on new versions of software using older parts? How do we react on new parts? • How do we know we can delete a part from the device?
Conclusions • Mobile code is necessary in an Ambient Intelligence environment • New mobile code technique using push model / broadcasting • Progressive Application Streaming gets code to the user as fast as possible, avoids overload on the network and large transfers • Need for models/techniques/patterns for creating programs or dividing programs into parts • Need for a platform to coordinate and react to migrated parts of a program