====== Sujet de stage de Recherche de Rahma Daikhi, en Master ====== Le Master IFI de l'UNS a été obtenu en Septembre 2014 avec la mention "Assez Bien". Grâce à ces résultats, le sujet se prolonge avec le [[https://www.tigli.fr/doku.php?id=recherche:masters:rocher_gerald|projet de recherche de Gérald Rocher]] en 2014-2015 ====== Raisonnement Sémantique pour la Composition Réactive de Services ====== === Résumé : === Dans l'informatique ambiante, les applications logicielles nécessitent de s’adapter dynamiquement à leur contexte d’exécution face à la diversité des situations (évolution des services, changements de l’environnement physique). Dans ce projet, nous souhaitons mettre en œuvre un mécanisme de sélection sémantique de services basé sur un ensemble de services annotés. Ce mécanisme se repose sur une comparaison sémantique de services. Il pourra ensuite être intégré au sein des schémas d’adaptation dynamique des applications logicielles. Abstract: In ubiquitous computing, software applications need to dynamically adapt to their execution context facing the diversity of situations (services evolution, physical environment changes). In this project, we want to implement a semantic selection mechanism of services based on a set of annotated services. This mechanism is based on a semantic comparison of services. Then, it can be integrated into patterns of dynamic adaptation of software applications. ===== Prototype Logiciel ===== === HowTo : Installation Complète === == Prototype en date du 13-10-14 : == Il s'agit du prototype de peuplement de la base de connaissance. Le prototype incluant la sélection sémantique de service n'est pas opérationnel. * ** Installation de WComp** * Installation de {{http://www.icsharpcode.net/opensource/sd/download/#SharpDevelop3x|Sharpdevelop version 3.2}} * Installer la distribution SharpWComp 3.2 (patch sur Sharpdevelop) (pas publique en date du 18-09-14, à récupérer sur le svn : https://trolen.polytech.unice.fr/svn/Wcomp) * Récupérer le code développer (voir clef USB) reprenant toute l'arborescence de SharpWcomp + AADesigner modifié, à compiler et exécuter sous Sharpdevelop. Sharpdevelop de Dev, lance alors Sharpdevelop/WComp (SharpDevelop avec les sources WComp compilées déployées de SharpWcomp et de AADesigner). Reste alors à ouvrir les containers avec les bon assemblages .wcc pour les tests. * **"Installation" de Conquer** * Télécharger netbeans version JDK 7u67 with netbeans 8.0.1 * Ouvrir la solution de conquer sous NetBeans (voir clef USB) * **Lancement application complète** - Exécuter le projet WCompAddIn depuis SharpDevelop - Dans le nouveau Sharpdevelop ouvrir 2 container (à binder avec respectivement les noms : Appli (port control : 3000, port functional 3001), Weaver (port control : 3100, port functional 3101) - Charger (import) weaver-bdc.wcc (SharpWcomp3\src\Beans\AADesigner-Vincent) - Lancer UPnP Wizard Designer connecté avec l'Appli_structural_X - Lancer AA Designer connecté avec l'Appli_structural_X l'Appli_functional_X Weaver_structural_X Weaver_functional_X - Tester la sélection des AA dans l'AA Designer en exécutant le fichier switch_light.aa (changer l'extension) {{:recherche:masters:switch_light.rar|}} * **__Remarques__ :** - Il faut toujours s'assurer que les composants soient connectés (dans le container Appli et dans le container Weaver). On vérifie à l'aide de l'outil device spy en copiant l'adresse uri du composant dans le device spy et le mettre dans l'uri du composant (voir "propriétés" du composant). - Pour le conquer, n'oubliez pas de garder "/desc.xml" à la fin de l'adresse uri lors de modification. **Scénario d'illustration** Notre idée pourra être trouvée dans plusieurs domaines tels que le domaine de santé, le domaine des habitats de futur, etc. Afin d’illustrer notre solution, nous allons prendre comme exemple un scénario dans le domaine des habitats de futur. Nous allons mettre en scène la personne « Bob ». Dans ce scénario, nous allons décrire comment notre application va répondre au besoin d’Alice. Cette application offre plusieurs services : activer le système du réveil, allumer le téléviseur, ouvrir les volets de la chambre, activer le chauffage ou le climatiseur, déclencher la cafetière, etc. Bob vit en colocation avec une autre personne. Il veut contrôler le système d’éclairage dans sa suite. Il utilise un interrupteur mobile qui peut éteindre ou allumer une lampe spécifique. Par exemple, Bob veut allumer la lampe de sa chambre à coucher. Dans ce cas, l’application active le système d’éclairage qui se trouve dans la chambre d’Bob en choisissant l’interrupteur de Bob et la lampe qui se trouve dans la chambre d’Bob. == Démonstration 1: Peuplement et enrichissement de la Base de connaissance== * Vérifier le peuplement de la base de connaissance lors l'apparition des services pour dispositifs à travers le console du Netbeans dans lequel s'affiche les triplets RDF qui viennent d'être récupérer dans la base de connaissance sous forme de "conquer add("sujet_x","prédicat_x","objet_x")". * Vérifier l'accroissement de l'ontologie en exécutant des requêtes SPARQL dans l'interface graphique conquer. Par exemple, sélectionner le Persets: "Services" et appuier sur le boutton run {{:recherche:masters:run.png?15|}} * {{:recherche:masters:démo.avi}} === Démonstration 2 : Sélection sémantique de services dans le tisseur d'AA === * A partir d'un pointcut composé de requêtes SPARQL * Vers la Base de connaissance peuplée précédemment * Lors de l'apparition des services pour dispositifs dans l'environnement d'exécution, chaque dispositif découvert possède un bean proxy. Ces beans sont instanciés pour participer dans les schémas d'adaptation. {{:recherche:masters:demo_apparition_des_services_screen_stream.avi|}} * Les annotations de chaque dispositif découvert vont être récupérer dans la base de connaissance. Chaque annotation est insérée sous forme d'un triplet rdf{{:recherche:masters:ajout_des_triplets_rdf.avi|}} * Si bob veut sélectionner la lampe qui se trouve dans la chambre à coucher, il suffit simplement d'indiquer la localisation de la lampe à l'aide du langage SPARQL.les règles de selection de service vont interroger la base de connaissance sur les services pertinents et qui sont disponible. L'interrogation de la base de connaissance se fait à l'aide des requêtes SPARQL. {{:recherche:masters:selection_de_service_screen_stream.avi|}} === Patch du code source (base SVN) === * SharpWCompSemantic:{{:recherche:masters:sharwcompsemanticlastupdate.rar|}} * La solution Conquer :[[https://trolen.polytech.unice.fr/svn/UPnP/Project_Continuum/Conquer/]] === Présentation et Rapport final === * Présentation finale :{{:recherche:masters:presentationfinale.pptx|}} * Rapport final :{{:recherche:masters:rapportfinal.pdf|}}