Maroun Koussaifi, Smart Modeling for softw@re Research and Technology (IRIT-SM@RT), Institut de recherche en informatique de Toulouse (IRIT), Université Toulouse 1 Capitole (UT1), Université Fédérale Toulouse Midi-Pyrénées-Université Fédérale Toulouse Midi-Pyrénées-Université Toulouse - Jean Jaurès (UT2J)-Université Toulouse III - Paul Sabatier (UT3), Université Fédérale Toulouse Midi-Pyrénées-Centre National de la Recherche Scientifique (CNRS)-Institut National Polytechnique (Toulouse) (Toulouse INP), Université Fédérale Toulouse Midi-Pyrénées-Université Toulouse 1 Capitole (UT1), Université Fédérale Toulouse Midi-Pyrénées, Systèmes Multi-Agents Coopératifs (IRIT-SMAC), Université Paul Sabatier - Toulouse III, Jean-Paul Arcangeli, Jean-Michel Bruel, Université Toulouse 1 Capitole (UT1)-Université Toulouse - Jean Jaurès (UT2J)-Université Toulouse III - Paul Sabatier (UT3), Université Fédérale Toulouse Midi-Pyrénées-Université Fédérale Toulouse Midi-Pyrénées-Centre National de la Recherche Scientifique (CNRS)-Institut National Polytechnique (Toulouse) (Toulouse INP), Université Fédérale Toulouse Midi-Pyrénées-Université Toulouse 1 Capitole (UT1)-Université Toulouse - Jean Jaurès (UT2J)-Université Toulouse III - Paul Sabatier (UT3), Université Toulouse III Paul Sabatier (UT3 Paul Sabatier), and STAR, ABES
Ambient intelligence aims to provide to human users applications and services that are personalized and adapted to the current situation. The ambient environment which surrounds the human consists of a set of connected objects and software components that are bricks used for the construction of applications by composition. The availability of these components can vary dynamically, in case of mobility for example. In addition, their appearance or disappearance is usually unanticipated. Moreover, in these dynamic and open environments, the user needs are not stable nor always well defined. To build these applications and provide the user with "the right applications at the right time", our team explores an original approach called "opportunistic software composition": the idea is to build applications on the fly by assembling software components present in the environment at the time, without relying on explicit user needs or predefined applications models. Here, it is the availability of the components that triggers opportunistically the on-the-fly building of applications. It is controlled by an intelligent system, called opportunistic composition engine, which decides on the "right" compositions to be made without user input. In such a way, the applications "emerge" dynamically from the ambient environment. Thus, emerging applications can be unexpected or unknown to the user. At the center of the system, the latter must be informed of these applications. On the first hand, she/he must be able to control them, i.e., accept or reject them, and if she/he has the required skills, modify them or eventually build applications herself/himself by assembling software components present in the ambient environment. However, in the control tasks, the user must be assisted as well as possible. On the other hand, in order for the opportunistic composition engine to build relevant assemblies in the absence of explicit needs, it must receive information from the user. In this thesis, we propose an approach based on Model Driven Engineering (MDE) in order to put the user "at the center of the loop". The objective is to present the emerging applications to the user, to assist him in his interventions and to extract useful feedback data to provide to the "intelligent" composition engine. Our solution is based on a metamodel for assembling software components, on different domain-specific languages (DSL) that support application descriptions, and on a graphical editor for editing applications and capturing user feedback. Different methods for model transformations are used to generate structural and semantic application descriptions for different users, from the applications models build by the intelligent engine. In addition, the descriptions can be easily adjusted to a particular human, by changing or adapting the DSL and the model transformations to the user's profile. Unlike the traditional use of MDE where tools and techniques are used by engineers to develop software and generate code, the focus in our approach is on the end users. The entire solution has been implemented and works coupled with the engine. That is to say, our solution is able to intercept the applications models built by the engine, to transform them into presentable models that can be understood and modified by the user, and finally to capture the user feedback and give it back to the engine to update its knowledge., L'intelligence ambiante vise à offrir à un utilisateur humain des applications et des services personnalisés et adaptés à la situation courante. L'environnement ambiant, dans lequel cet humain est plongé, est composé d'un ensemble d'objets connectés et de composants logiciels qui sont des briques de base pour la construction d'applications par composition. La disponibilité de ces composants peut varier dynamiquement, en cas de mobilité par exemple. Ceux-ci peuvent apparaître ou disparaître de manière non anticipée. De plus, dans ces environnements dynamiques et ouverts, le besoin de l'utilisateur humain n'est pas stable ni toujours bien défini. Pour construire des applications dans un tel contexte, et fournir à l'utilisateur "les bonnes applications au bon moment", notre équipe explore une approche originale appelée "composition logicielle opportuniste" : l'idée est de construire des applications à la volée par assemblage de composants logiciels présents dans l'environnement sur le moment, sans se baser sur des besoins explicites ni sur des schémas de construction prédéfinis. C'est l'opportunité qui déclenche la construction des applications à la volée. Elle est contrôlée par un système intelligent, appelé moteur de composition opportuniste, qui doit décider des "bonnes" compositions à effectuer sans contribution explicite de l'utilisateur. Ainsi, les applications "émergent" dynamiquement. Les applications émergentes peuvent être imprévues ou inconnues de l'utilisateur. Au centre du système, ce dernier doit être en informé. Il doit pouvoir les contrôler, c'est-à-dire les accepter ou les rejeter, et s'il a les compétences requises, les modifier ou même construire lui-même des applications en assemblant des composants logiciels présents dans l'environnement ambiant. Dans les tâches de contrôle, l'utilisateur doit être assisté au mieux. D'autre part, pour que le moteur de composition opportuniste construise des assemblages pertinents en l'absence de besoins explicites, il doit recevoir des informations de l'utilisateur. Ceci ne doit cependant pas entraîner, pour l'utilisateur, une surcharge d'information ou d'opérations à effectuer. Dans cette thèse, nous proposons une approche basée sur l'ingénierie dirigée par les modèles (IDM) afin de mettre l'utilisateur "au centre de la boucle". Il s'agit de lui présenter les applications émergentes, de l'assister dans son contrôle et d'extraire des données de feedback utiles à fournir au moteur de composition "intelligent". Notre solution repose sur un métamodèle d'assemblage de composants logiciels, des langages spécifiques à un domaine (DSL) qui supportent la description des applications, un éditeur graphique qui permet d'éditer les applications et de capturer le feedback de l'utilisateur. Différentes transformations de modèle permettent l'interfaçage avec le moteur de composition et la génération de différentes formes de descriptions structurelles et sémantiques des applications pour des utilisateurs différents. En outre, les descriptions peuvent être facilement ajustées à un humain particulier, en changeant ou en adaptant les DSL et les transformations de modèle au profil de l'utilisateur. Dans notre approche, contrairement à l'utilisation classique de l'IDM où les outils et les techniques sont utilisés par les ingénieurs pour développer des logiciels et générer du code, le focus est sur les utilisateurs finaux qui prennent la place des ingénieurs. L'ensemble de la solution a été implémentée et fonctionne de manière couplée avec le moteur de composition opportuniste : notre solution prend en entrée les applications proposées par le moteur, les transforme en des modèles présentables, compréhensibles et modifiables par l'utilisateur, et enfin capture le feedback de l'utilisateur pour le transmettre au moteur pour mettre à jour sa connaissance.