Génie logiciel des applications ubiquitaires Un sous-problème Composition dirigée par les modèles des applications à base de composants Objectifs : - Séparation des préoccupations Composition automatique non basée sur l’ordre de déclarations des compositions ou caractéristiques Détection des conflits de composition Indépendance des Plates-formes et adéquation aux plateformes Adéquation entre le domaine cible et les mécanismes de composition mis en place. Bonn, July 17, 2006
Contexte et démarche Les applications sont décrites comme des assemblages de composants Les “interactions” entre les composants sont explicites. Analyse des domaines d’applications cibles Modélisation du langage de composition Définition d’algorithmes de composition adapté Réalisation de prototypes pour valider le procédé si possible sur plusieurs cibles Bonn, July 17, 2006
Quelques domaines applicatifs Adaptation dynamique d’assemblages de composants hétérogènes par interactions logicielles (Environnement Noah) Construction d’assemblages de “devices” : (Integration des interactions dans l’environnement Wcomp) Intégration de services (sécurité, ….) indépendante plateforme dans des applications à composants (Thèse sur le système MicM) Vérification de sûreté des adaptations dynamiques d’assemblages de composants (Système SATIN) Composition et génération de composants d’IHMs sur la base des interactions entre composants métiers (Amusing et les travaux en cours) Fusion d’orchestrations de services (en cours) En rouge ce dont on parle les autres on laisse ? Bonn, July 17, 2006
Interactions logicielles pour l’adaptation dynamique des applications à base de composants Bonn, July 17, 2006
Interactions logicielles : pourquoi faire ? IHM WhereIs(« name ») ? This simple scenario illustrates some problems we want to solve. The demonstration corresponds to it. The different servers will be localised on my computer to avoid network problems. But we use it in different contexts in particular distributed plateform and manage communication beetwenn heterogenous components. This scenario is extracted from the scholar information system we are developping. The aim is to deploy an information system in schools integrating differents tools and devices. Here is a part of this system for persons localization. Ok at First, Localization LocalizationAdmin Detector Detector Bonn, July 17, 2006
Interactions logicielles : pourquoi faire ? WhereIs(« name ») ? Timetable Service IHM getInfo(« name ») Interactions <Lieu, ….> Localization LocalizationAdmin Detector Detector I don’t know Bonn, July 17, 2006
Interactions logicielles : pourquoi faire ? Scenario - ISL Language – – Life Cycle - Demonstration - Merging rules - Model applications timeTableService IHM Interactions Localization LocalizationAdmin Detector Detector Bonn, July 17, 2006
Interactions logicielles : pourquoi faire ? Scenario - ISL Language – – Life Cycle - Demonstration - Merging rules - Model applications timeTableService IHM Interactions Localization LocalizationAdmin Detector Detector Bonn, July 17, 2006
Interactions Logicielles: Modélisation et Expression séparée public DateAndPlace WhereIs(string login) DateAndPlace info= GetLastPlaceKnown(login); int NumberOfSecondsToExpire = Int32.Parse(System.Configuration.ConfigurationSettings.AppSettings["epub.services.localisation.expiration.seconds"]); { DateTime now = DateTime.Now; // check if it has expired if (info.IsDefined()) return new DateAndPlace(); if (tm.TotalSeconds > NumberOfSecondsToExpire) TimeSpan tm = now - info.Date; } return info; Default behavior interaction localization_Timetable(Localization LOC, Timetable TT){ LOC.WhereIs(string login) -> TTItem:=TT.GetInfo(login); { if (!RESULT.IsDefined()) RESULT:=LOC._call; { RESULT.SetPlace(TTItem.GetPlace()) if (TTItem.IsDefined()) } Interaction between Timetable and Localization interaction monitor_localisation(Localization LOC, Monitor MONITOR){ MONITOR.Log("LOCALISATION",login) LOC._call // LOC.WhereIs(string login) -> } Monitoring behaviour interaction cache(Timetable TT, Cache CACHE){ EDT.GetInfo(string login) -> if (!RESULT.IsDefined()) RESULT:=CACHE.GetInfo(login); if (RESULT.IsDefined()) RESULT:=EDT._call; { else } CACHE.Store(login,RESULT); delegate { CACHE.GetInfo(login) } Cache behaviour Bonn, July 17, 2006
ISL: Interaction Specification Language Modélisation et composition interaction localization_Timetable(Localization LOC, Timetable TT){ LOC.WhereIs(string login) -> RESULT:=LOC._call; if (!RESULT.IsDefined()) { TTItem:=TT.GetInfo(login); if (TTItem.IsDefined()) { RESULT.SetPlace(TTItem.GetPlace()) } } } Indépendance Langage et plateforme Description en sémantique naturelle TYPOL des opérateurs réactif A REVOIR… Fusion comportementale : Solution Formelle XML Bonn, July 17, 2006
Mises en oeuvre des interactions http://noah.essi.fr C# objecs Java objects Java RMI objects J2EE- EJB Jonas component .Net objects Fractal components Bonn, July 17, 2006
Interfaces Hommes-Machines et compositions Nos ambitions et nos pistes Bonn, July 17, 2006
Atelier de composition IHMs : problématiques Renderer Atelier de composition Bonn, July 17, 2006
Modèlisation, indépendance plateforme et composition IHM Abstraite : langage SUNML Projection dynamique <sunml> <interface id="FicheClient"> <structure> <dialog id="MainDialog" sequence="true"> <element id="Titre" type="string" editable="false" value="Fiche Client"/> <element id="LabelNom" type="string" editable="false" value="Nom : "/> <element id="ChampNom" type="string" editable="true" value=""/> … </dialog> <dialog id="Menu" sequence="true"> <link id="Recharger"> <element id="LabelBtR" type="string" editable="false" value="Recharger"/> </link> </structure> </interface> </sunml> Spécification de la composition et opérateurs : Architecture basée sur des modèles Bonn, July 17, 2006
Bonn, July 17, 2006
En résumé une démarche basée sur des modèles et guidée par les applications Algorithme de composition Expression séparée des “adaptations” Langage adapté Bonn, July 17, 2006
En résumé une démarche basée sur des modèles et guidée par les applications ISL et Algorithme : Langage adapté À la mise en oeuvre d’interactions Logicielles Expression séparée des “Interactions” Noah une mise en oeuvre multiplateforme Bonn, July 17, 2006
“assemblages de composants” En résumé une démarche basée sur des modèles et guidée par les applications Expression séparée Des “assemblages de composants” ISL4Wcomp : Extension d’ISL : Adaptation au monde des devices Wcomp : une mise en oeuvre par génération de composants multiplateforme Bonn, July 17, 2006
“adaptations” dynamiques En résumé une démarche basée sur des modèles et guidée par les applications Expression séparée Des “adaptations” dynamiques De composants Satin : Algo de Validation des propriétés de sûreté (preuves formelles) Plateformes multiples Bonn, July 17, 2006
Des orchestrations entre Services En résumé une démarche basée sur des modèles et guidée par les applications Mise en oeuvre de nouveaux algorithmes de composition Adaptés à la multiplicité des sélecteurs Expression séparée Des orchestrations entre Services Implémentations en cours Bonn, July 17, 2006
En résumé une démarche basée sur des modèles et guidée par les applications Mise en oeuvre de nouveaux algorithmes de composition Adaptés aux Composants d’IHMS Expression séparée Des Relations entre composants du Noyau fornctionnel et composants d’IHMs Implémentations en cours Bonn, July 17, 2006
Résultats and perspectives Une démarche qui renforce Separation of concerns Gestion de cohérence par fusion Mise en place de Prototypes dont certains sont diffusés Work in progress IHM Using interaction for Web service management : recherche (Faros) et usages dans le cadre SMNG Bonn, July 17, 2006