APAM: An environment for the development and the runtime of ubiquitous applications
ApAM : Un environnement pour le développement et l'exécution d'applications ubiquitaires
Résumé
The goal of ubiquitous environments and applications is to simplify our interaction with interconnected software and hardware entities, and to allow the exploitation of the information that they gather and generate. The behavior of ubiquitous applications depends on the state and the availability of the software and hardware entities that compose the ubiquitous environment in which they are constantly evolving, as well as, the preferences and locations of users. Developing and executing ubiquitous applications is a difficult challenge that our approach attempts to address with the creation of the ApAM execution environment. Knowing that the execution environment is unpredictable, we believe that ubiquitous applications require a large amount of flexibility in choosing the components that compose the application, and that the composition should be automated. We propose an abstract and implicit description of the composition, where components and bindings are not explicitly described. This allows to incrementally building an application at runtime. The ApAM execution platform implements the mechanisms to achieve incremental composition and uses them to provide ubiquitous applications with the resilience and adaptability necessary to face unpredictable changes that originate in the execution environment. Resilience is a core property of our approach because it allows developers to easily build applications without the need to either describe nor predict the multiple adaptations required to support environmental disturbances which the applications will encounter. Our proposal offers the means of developing and executing applications with a high level of resilience in regards to their continuously evolving context. This is possible thanks to the mechanisms described in this dissertation that allow building and changing, at runtime, ubiquitous applications. These mechanisms are generic but can be extended or specialized in order to solve domain or application-specific issues.
Simplifier notre interaction avec les entités informatiques interconnectées de notre environnement et faciliter l'exploitation des informations générées par celles-ci est l'objectif des environnements et des applications ubiquitaires. Le comportement des applications ubiquitaires dépend de l'état et de la disponibilité des entités (logiciels ou dispositifs) qui composent l'environnement ubiquitaire dans lequel elles évoluent, ainsi que des préférences et localisations des utilisateurs. Développer et exécuter des applications ubiquitaires est un véritable défi que notre approche essaie de relever au travers de l'environnement d'exécution ApAM. Considérant que l'environnement d'exécution est imprévisible, nous partons du principe qu'une application ubiquitaire doit disposer d'une grande flexibilité dans le choix de ses composants et que cette composition doit être automatique. Nous proposons une description abstraite et implicite de la composition (où les composants et les liens entre eux ne sont pas décrits explicitement), ce qui permet de construire l'application incrémentalement pendant la phase d'exécution. La plate-forme d'exécution ApAM implémente ces mécanismes de composition incrémentale et s'en sert pour conférer aux applications ubiquitaires la capacité de " résister " et de s'adapter aux changements imprévisibles de l'environnement d'exécution. Cette propriété dite de résilience est au coeur de notre approche car elle permet aux programmeurs de développer " simplement " des applications " résilientes " sans avoir à décrire les diverses adaptations à réaliser et même sans connaître toutes les perturbations de l'environnement auxquelles elles seront soumises. Notre proposition offre le moyen de développer et d'exécuter des applications ayant un haut niveau de résilience vis-à-vis des évolutions de leur contexte d'exécution, grâce à des mécanismes automatiques capables de construire et de modifier à l'exécution l'architecture logicielle des applications ubiquitaire. Les mécanismes fournis sont génériques mais peuvent être étendus et spécialisés pour s'adapter plus finement à certaines applications ou à des domaines métiers spécifiques.
Loading...