Membres du Jury :
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.