User Tools

Site Tools


research:doforreal

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Next revisionBoth sides next revision
research:doforreal [2010/08/04 12:29] – small stijnmresearch:doforreal [2010/08/04 13:55] – separately stijnm
Line 1: Line 1:
 ====== Distributed Objects for Real ====== ====== Distributed Objects for Real ======
  
-In the past few years, researchers at the Software Languages Lab have performed a number of experiments to discover how to facilitate the development of so-called __Mo__bile +Over the past yeara number of researchers at the Software Languages Lab have been involved in experiments designed to uncover new programming abstractions to facilitate the development of mobile RFID-enabled applications.  
-__R__FID-__ena__bled (Morena) applications. +
  
-Over the past year, we have developed two opposing programming models to represent RFID tags in an application.  Both cater to different kinds of Morena applicationsas we shall illustrate below.+During these experiments, we have approached the development of such applications from two opposing perspectiveswhich are briefly described below.
  
-== Volatile Data Clouds ==+===== Volatile Data Clouds ===== 
 +<note>The volatile data clouds model can be considered a special case of [[research:recap]] specifically applied to the domain of mobile RFID-enabled applications.</note>
  
 The //volatile data clouds// model considers RFID tags to be data containers whose presence or absence can be used to steer the application.  Therefore, it focusses on designing a general means to represent the collection of currently visible tags. The //volatile data clouds// model considers RFID tags to be data containers whose presence or absence can be used to steer the application.  Therefore, it focusses on designing a general means to represent the collection of currently visible tags.
Line 12: Line 12:
 Since the collection is implicitly tied to the environment and changes frequently in response to events emitted by the RFID reader, //change// is at the very heart of the model.  To permit application developers to respond to and propagate these changes without having to explicitly register a plethora of observers, we borrow concepts from [[research:rp|reactive programming]]. Since the collection is implicitly tied to the environment and changes frequently in response to events emitted by the RFID reader, //change// is at the very heart of the model.  To permit application developers to respond to and propagate these changes without having to explicitly register a plethora of observers, we borrow concepts from [[research:rp|reactive programming]].
  
-When programing with reactive values that represent the collection of visible tags, the programming language needs to provide the following support.  First of all, support is needed for //reactive collections//, such that operations such as ''size'' and ''contains'' result in a reactive value that changes when the collection changes.  This necessitates the introduction of reactive programming support in the programming language.  Reactive programming has been successfully incorporated in various languages including Scheme, Java.+Concretely, the collection of visible tags is modeled as a //reactive collection//. In order to test for the presence of a particular tagone can invoke the ''contains'' method of the reactive collection, which results in a new dependent reactive value.  That value is transparently updated whenever the collection changes.  This automatic propagation of changes to a reactive collection of RFID tags is a determining factor in the expressiveness of applications that use the volatile data cloud metaphor.
  
-Furthermore, such collections should provide //memoized iteration// constructs (e.g. ''map:'').  Hence, when mapping function //f// over a source collection //s//, a memoized ''map:'' produces a derived collection //d// by simply mapping //f// over the current elements of //s// If at any later point in time, new element //a// is added to //s//the update will not cause the derived collection to be computed anew.  Instead, //d// is extended with a single new element, to wit //f(a)//.  Similarly, when an element //r// is removed, only the value //f(r)// is removed from //d//.+Another important aspect is efficiently detecting when interesting patterns occur in reactive tag collection.  A pattern of interest can be the presence of a particular (kind of) tagbut should extend to combinations of interesting tags.  To detect such 
 +occurrenceswe make use of [[research:patterns|pattern matching rules]] which can be applied to any reactive collection.  This technique allows building RFID applications using a declarative programming style
  
-Most importantly, the programming language should provide support to detect interesting patterns as they occur in a reactive collection.  A pattern of interest can be the presence of a particular (kind of) tag, but should extend to combinations of interesting tags.  Therefore, we propose a model which uses //pattern matching rules// to detect changes of interest in the application's environment.  An application could for instance specify a rule which triggers when the tags that represent the user's keys and coat are detected simultaneously.  Such a rule could be used to remember that the user is likely to have left his keys in one of the pockets of his coat.+===== Tags Objects =====
  
-== Tags Objects ==+<note> 
 +The tag objects model represents RFID tags as full-blown objects, which introduces a natural mechanism to deal with **mutable tag data**.  More information as well as videos of our experiments can be found [[research:rfid|here]].   
 +</note>
  
-While the //volatile data clouds// model considers RFID tags as containers of data which is to be filtered and interpreted by the application, the //tag objects// model interprets them to be full-blown objects.  Applications can interact with these objects and e.g. invoke methods on them.  In this case, the tag contains a marshalled object representation which is implicitly unmarshalled to provide a live object which applications can interact with.+While the //volatile data clouds// model considers RFID tags to be containers of data which is to be filtered and interpreted by the application, the //tag objects// model conceived them as hosts for full-fledged objects.   
 + 
 +Applications can interact with these objects and e.g. invoke methods on them.  In this case, the tag contains a marshalled object representation which is implicitly unmarshalled to provide a live object which applications can interact with.
  
 When treating tags as objects, it is important to deal with the ephemeral nature of the connection between the mobile application and any particular tag.  A first problem to be tackled is how applications detect new tags as they come into range.  This is addressed by the introduction of a semantic //service discovery// mechanism, which allows applications to be notified when an interesting tag appears.  The use of a service discovery mechanism also provides an implicit mechanism to disregard tags which contain objects that are irrelevant to the application.  For instance, an application can choose to only discover objects of type ''Book'' or ''Ingredient'' When treating tags as objects, it is important to deal with the ephemeral nature of the connection between the mobile application and any particular tag.  A first problem to be tackled is how applications detect new tags as they come into range.  This is addressed by the introduction of a semantic //service discovery// mechanism, which allows applications to be notified when an interesting tag appears.  The use of a service discovery mechanism also provides an implicit mechanism to disregard tags which contain objects that are irrelevant to the application.  For instance, an application can choose to only discover objects of type ''Book'' or ''Ingredient''
Line 30: Line 35:
 Within the tag object model, we have conducted initial experiments on how to use ad hoc //replication strategies// which could allow continued use of a tag object even when the tag is temporarily unreachable.  When the tag becomes reachable again, updates can be synchronized.  With such a custom replication strategy in place, it can in principle be possible to treat tag objects as "local objects"; objects which can be addressed with both asynchronous and synchronous messages.  Within the tag object model, we have conducted initial experiments on how to use ad hoc //replication strategies// which could allow continued use of a tag object even when the tag is temporarily unreachable.  When the tag becomes reachable again, updates can be synchronized.  With such a custom replication strategy in place, it can in principle be possible to treat tag objects as "local objects"; objects which can be addressed with both asynchronous and synchronous messages. 
  
-== Comparison ==+===== Comparison =====
  
 Having implemented both models, it remains unclear whether one of the models presented in this paper is to be preferred over the other.  As it stands, both models have shown to cater to different kinds of applications.  Moreover, when analysing the strengths and weaknesses of each of the models, they have shown to be largely complementary. Having implemented both models, it remains unclear whether one of the models presented in this paper is to be preferred over the other.  As it stands, both models have shown to cater to different kinds of applications.  Moreover, when analysing the strengths and weaknesses of each of the models, they have shown to be largely complementary.
Line 40: Line 45:
 In all likelihood, a programming model that fully leverages the advantages of a world teeming with tagged objects will incorporate elements of both models presented here.  In all likelihood, a programming model that fully leverages the advantages of a world teeming with tagged objects will incorporate elements of both models presented here. 
  
-== Further Reading ==+===== Further Reading =====
  
 * Distributed Objects for Real. Stijn Mostinckx, Andoni Lombide Carreton, Kevin Pinte, Wolfgang De Meuter. Technical report, 2010, Vrije Universiteit Brussel [[|pdf]] * Distributed Objects for Real. Stijn Mostinckx, Andoni Lombide Carreton, Kevin Pinte, Wolfgang De Meuter. Technical report, 2010, Vrije Universiteit Brussel [[|pdf]]
research/doforreal.txt · Last modified: 2010/08/04 17:34 by tvcutsem