Projet de fin d'études

Dimension: px
Commencer à balayer dès la page:

Download "Projet de fin d'études"

Transcription

1 Projet de fin d'études Gestion de ressources en environnement pervasif Brice Chardin DPt. Télécommunications Services & Usages 23/06/2008 Encadrants : Frédérique Laforest Jean-Marc Petit Yann Gripay

2 Remerciements Je remercie les membres de l'équipe SIP et du LIRIS que j'ai eu l'occasion de rencontrer au cours de ce PFE. En particulier : Mes encadrants Yann Gripay, Frédérique Laforest et Jean-Marc Petit, pour l'aide et les nombreux conseils qu'ils m'ont donnés tout au long de ce projet. Liya Zeng pour le travail effectué lors de son projet de fin d'étude, dont je me suis inspiré. Les personnes avec qui j'ai partagé le bureau : Romain Cuenot, Eric Dubreuil, Quang-Trung Nguyen, Ny Haingo Andrianarisoa, Romuald Thion et Julien Gossa pour l'ambiance conviviale qui y régnait. i

3 Table des matières 1 Introduction Contexte Le projet SoCQ Le PFE Analyse du cahier des charges Architecture Choix des technologies et des outils UPnP OSGi & Felix Maven Eclipse Organisation Gestion des ressources Objectifs Architecture Service SoCQ Gestionnaires de ressources locaux Gestionnaire de ressources global Contrôleur du gestionnaire de ressources global Conclusion Gestion des tables Objectifs Architecture Gestionnaire de tables Catalogue Tables TableProxy Objets Future Commandes Binding Patterns Gestionnaire de listes de services Contrôleur de tables Conclusion Expérimentations Conclusion References Annexes Interface ISoCQService Classe SoCQServiceDescription Classe Tuples Spécifications UPnP pour la gestion des ressources ii

4 1 Introduction 1.1 Contexte Les environnements informatiques tendent à évoluer vers ce qu'on appelle des systèmes pervasifs [1]. Contrairement à l'utilisation contemporaine de l'informatique où l'utilisateur interagit consciemment avec un appareil dans un but précis, un système pervasif implique plusieurs dispositifs informatiques, sans nécessairement que l'utilisateur en ait conscience. Ces systèmes, généralement destiné à des applications de la vie quotidienne, incluent de petits et peu coûteux dispositifs de traitement en réseau, intégrés et distribués dans l'environnement. L'axe Systèmes d'information communicants du Laboratoire d'informatique en Image et Systèmes d'information (LIRIS) possède une équipe traitant de ces systèmes pervasifs : l'équipe SIP (Systèmes d'information Pervasifs). Un des projets de cette équipe s'intéresse à obtenir une vision homogène des services et des données. Il s'agit du projet SoCQ : Service-oriented Continuous Queries [2,3,4]. 1.2 Le projet SoCQ Le projet SoCQ a pour objectif de proposer un cadre (framework) permettant de faciliter le développement d'applications dans un environnement pervasif. En adoptant une approche inspirée des bases de données, ce framework donne une représentation homogène des sources de données hétérogènes de l'environnement. Ces sources de données, qui peuvent être des relations dynamiques, des flux de données ou des services, sont représentées sous forme de tables relationnelles. Les applications utilisant ce framework sont alors définies avec un langage de type SQL. Pour illustrer le fonctionnement de SoCQ, on considère un scénario simple de surveillance de températures dans différentes zones. Ce scénario implique les ressources suivantes : des capteurs de température qui fournissent un flux de valeurs de température relevées dans différents lieux, et un service d'envoi de messages instantanés. La traduction de ce scénario pour SoCQ se compose de deux éléments : la description des ressources (catalogue) et la description de l'application (requête). Le catalogue est un ensemble de tables, qui correspondent à des relations (RELATION) ou des flux (STREAM) La description des ressources de ce scénario dans un langage de description de données est la suivante : CREATE STREAM Temperature ( Area CHAR, Temperature REAL ) CREATE RELATION Employee ( Name STRING(20), Address STRING(50), Messenger SERVICE, Message STRING(20) VIRTUAL, Sent CHAR VIRTUAL ) 1

5 CREATE RELATION Surveillance ( Area CHAR, Manager STRING(20), Threshold REAL, AlertMessage STRING(20) ) On remarque un style similaire aux create de tables en SQL classique. Néanmoins, deux notions nouvelles apparaissent : - Les STREAM Température représente le flux de températures provenant des différents capteurs répartis dans l'environnement. Il contient les localisations des capteurs (Area) et les valeurs des températures (Temperature). Contrairement à une relation, les tables de type flux ne stockent pas les données. - Les attributs VIRTUAL et SERVICE Employee est une table relationnelle contenant des attributs virtuels. Ces attributs n'auront de valeur attribuée qu'au cours du traitement de la requête. Elle contient les noms des employés (Name), leurs adresses de messagerie (Address), l'identifiant du service de messagerie à utiliser (Messenger), qui est un attribut de type servcie, et deux attributs virtuels correspondant au message à envoyer (Message) et à la confirmation de l'envoi du message (Sent). Surveillance est une table relationnelle classique dont chaque occurrence décrit une localisation à surveiller (Area), le nom du responsable de la zone (Manager), le seuil de température (Threshold) et le message d'alerte à envoyer (AlertMessage). Dans ce scénario, on souhaite envoyer un message au responsable d'une zone lorsque la température dans celle-ci dépasse un certain seuil. La requête SoCQ permettant de répondre à ce besoin est la suivante : SELECT Area, Manager, Threshold, Temperature, Sent FROM Temperature T, Surveillance S, Employee E WHERE S.Manager = E.Name AND S.Area = T.Area AND S.Threshold < T.Temperature AND E.Message = S.AlertMessage SoCQ compare en continu les températures, arrivant sur le flux, avec les seuils enregistrés dans la relation Surveillance. Si les valeurs sont supérieures aux seuils, SoCQ fait appel au service de messagerie pour envoyer le message correspondant. Le moteur d'exécution de requêtes SoCQ est développé parallèlement par l'équipe SoCQ, et est utilisé pour certains tests (voir section 5). Par ce langage déclaratif de haut niveau, SoCQ permet de faciliter le développement d'application pervasives. Au lieu d'écrire du code Java spécifique, le développeur peut se concentrer sur l'application. 2

6 1.3 Le PFE Ce projet de fin d'études "Gestion de ressources en environnement pervasif" s'intègre dans le projet SoCQ. Ce PFE a pour but de fournir une gestion de ressources pour tester et évaluer l'outil SoCQ. Cela se décompose en plusieurs parties : - Définir un modèle de service pour le système SoCQ. - Effectuer la liaison entre les tables et les services. - Gérer des tables relationnelles étendues avec les services, en vue d'une utilisation par le moteur d'exécution de requêtes SoCQ. - Implémenter et tester le système. Ce projet constitue une brique nécessaire au fonctionnement du projet SoCQ. Il permet de simplifier le développement du moteur SoCQ, mais également des services fournis par les différents éléments du système pervasif associé. Le travail demandé comprend la rédaction de spécifications, le développement et le test de la gestion de tables, de la gestion de ressources et de quelques services, notamment ceux impliqués par le scénario présenté dans la section

7 2 Analyse du cahier des charges 2.1 Architecture L'architecture de ce projet (voir fig.1) est composée de deux parties. La première s'occupe de la gestion des ressources, tandis que la deuxième concerne la gestion du catalogue de tables mis à disposition du moteur SoCQ Les ressources pouvant être réparties sur le réseau, cette deuxième partie est également composée de deux sous-parties : un gestionnaire de ressources global, centralisé, et un ou plusieurs gestionnaires de ressources locaux. Fig.1 : Architecture globale de l'outil SoCQ Un service au sens SoCQ est une entité externe possédant des méthodes, des flux et des propriétés. Cette entité peut être le service lui-même, ou servir de proxy pour un service externe. Par exemple, le scénario de surveillance de température utilise deux services : un service de capture de 4

8 température qui gère un capteur branché sur la même machine, et un service de messagerie qui sert de proxy, communiquant avec le serveur de messagerie. Les gestionnaires des ressources locaux s'occupent de la découverte de services au niveau local et de la mise à disposition de ces services pour le gestionnaire de ressources global. Le gestionnaire de ressources global met à disposition du gestionnaire de tables l'ensemble des ressources du système, en masquant les problèmes réseaux. Il s'occupe de la découverte et de l'invocation à distance. Ce gestionnaire de ressources est associé à un contrôleur servant à visualiser et tester les services. Ce contrôleur de ressources n'est pas nécessaire au bon fonctionnement du système. Le moteur SoCQ sert à exécuter les requêtes fournies par un développeur d'applications pervasives. Il a pour cela besoin du gestionnaire de tables, qui lui propose un ensemble de tables relationnelles (le catalogue), et sert d'intermédiaire avec le gestionnaire de ressources global. Un contrôleur de tables est associé au gestionnaire de tables. Il permet l'administration du catalogue du gestionnaire de tables. 2.2 Choix des technologies et des outils UPnP Le protocole réseau utilisé pour la gestion des ressources dans ce PFE est UPnP [6]. En effet, les systèmes pervasifs utilisant de nombreux dispositifs de traitement en réseau, UPnP permet la découverte automatique de ces éléments, ainsi que l'invocation à distance des méthodes proposés par les services. De plus, ce protocole permet la notification d'évènements, utilisé pour les flux de données. Il aurait également été possible d'utiliser RMI [7] ou CORBA [8], mais UPnP permet la découverte automatique, ce qui simplifie le développement de la partie réseau du gestionnaire de ressources. Ce protocole est de plus indépendant du langage de développement OSGi & Felix OSGi [7] est un ensemble de spécifications pour une plateforme de déploiement et d'exécution pour les applications Java. OSGi fournit une architecture orientée services permettant aux composants de se découvrir entre eux dynamiquement. Les applications peuvent alors être composées de composants réutilisables et coopératifs appelés bundles, qui sont des archives Java avec des métadonnées spécifiques. Apache Felix [9] est une implémentation open-source du framework OSGi et d'une partie des services standards selon la spécification OSGi R4. Un de ces services standards, UPnP Service, permet de faire le lien entre un périphérique UPnP et le registre de services OSGi, notamment en gérant les dépendances entre bundles, ce qui facilite le développement du gestionnaire de ressources pour le projet SoCQ Maven Maven [10] est un outil open-source de complilation pour les projets Java. Maven utilise une approche déclarative, où le contenu et la structure du projet sont décrits par un Project Object 5

9 Model (POM). Maven permet en particulier d'obtenir facilement des bundles OSGi, c'est la raison pour laquelle cet outil est utilisé pour ce projet Eclipse Eclipse IDE [11] est un environnement de développement libre. Grâce à son architecture développée autour de la notion de plugins, Maven et Felix peuvent être intégrés à l'ide, ce qui facilite le développement et débogage des bundles. 2.3 Organisation Ce projet de fin d'études dure un total de dix semaines et demie. L'organisation du travail est présentée dans le tableau suivant : Imprégnation du sujet et lecture de documentations S14 S15 S16 S17 S18 S19 S20 S21 S22 S23 S24 S25 S26 Conception des gestionnaires de ressource Développement et tests des gestionnaires de ressource Conception du gestionnaire de tables Développement et tests du gestionnaire de tables Rédaction du mémoire Préparation de la soutenance et Packaging Soutenance Les livrables sont : - Les spécifications du gestionnaire de ressources, fin semaine Les sources du gestionnaire de ressources, fin semaine Les spécifications du gestionnaire de tables, fin semaine Les sources du gestionnaire de tables, fin semaine 23. Cependant, la plupart des livrables, notamment les spécifications, ont évolué en fonction des remarques des encadrants grâce à des réunions hebdomadaires, et ont été livrés en version finale après les dates prévues initialement. Une première présentation du gestionnaire de ressources a été effectuée au milieu de la semaine 19. Des pré-soutenances sont également prévues en début de semaine 26. 6

10 3 Gestion des ressources 3.1 Objectifs Les services étant répartis dans l'environnement, le rôle des gestionnaires de ressources est de centraliser l'accès à ces services pour que le gestionnaire de tables s'affranchisse des problèmes réseau. 3.2 Architecture La découverte de services par les gestionnaires de ressources locaux s'effectue au niveau d'osgi, chaque service doit donc proposer un proxy ou bien être lui-même sous forme d'un bundle OSGi (voir exemple fig.2). Fig.2 : illustration de l'architecture choisie pour la gestion de ressources 7

11 3.3 Service SoCQ Un service au sens SoCQ est une entité possédant des méthodes, des flux et des propriétés. Tout service doit implémenter l'interface ISoCQService (voir annexe 1) et ainsi permettre de récupérer sa description (voir annexe 2), de s'abonner/désabonner à ses flux et d'invoquer ses méthodes. Exemples : Le service de température et le service de messagerie utilisés dans l'exemple possèdent les descriptions suivantes (pour le format des signatures, voir annexe 2) : Service de capture de température Service de messagerie Méthodes gettemperature::r sendmessage:ss:b Flux Propriétés temperature::sr location:s version:s protocol:s Le service de capture de température possède une méthode, gettemperature, n'ayant pas de paramètres d'entrée et renvoyant un réel. Il propose également un flux, non paramétrable, composé d'une chaîne de caractère (la localisation) et d'un réel (la température). Ses deux propriétés, location et version, sont des chaînes de caractères. Le service de messagerie ne possède pas de flux, mais propose la méthode sendmessage, dont les paramètres d'entrée sont le nom d'utilisateur et le message à envoyer. Ce service n'a qu'une propriété, protocol, correspondant au protocole utilisé par ce service. Les flux proposés sont des flux de Tuples (voir annexe 3). Ces flux sont paramétrables, c'est-à-dire que des paramètres peuvent être fournis lors de l'abonnement au flux, en accord avec sa signature. Un tuple est une collection ordonnée d'objets, il correspond à une ligne dans une relation. Par exemple, on pourrait imaginer développer un service de messagerie instantanée sur ce modèle. Ce service proposerait un flux qui demande comme paramètres d'entrée un login et un mot de passe. Le flux contiendrait alors les messages destinés à cet utilisateur. La signature d'un tel flux est messages:ss:s. 3.4 Gestionnaires de ressources locaux Le gestionnaire de ressources local recherche localement, dans son framework OSGi, les services compatibles SoCQ ; et effectue la conversion dans le protocole réseau utilisé entre les gestionnaires de ressources, UPnP. La figure 3 présente le diagramme de classes du gestionnaire de ressources local. La classe SoCQDiscoveryAgent permet de découvrir les nouveaux ISoCQServices se déclarant auprès du framework OSGi. Cet agent notifie le LocalRM (Local Resource Manager) par les méthodes registersocqservice(isocqservice service) et unregistersocqservice(isocqservice service). 8

12 Fig.3 : Diagramme de classes du gestionnaire de ressources local Lorsqu'un nouveau service SoCQ est disponible, le LocalRM crée un nouvel objet SoCQUPnPDevice, (voir annexe 4) représentant un périphérique au sens UPnP. L'API UPnP de Felix permet d'effectuer le lien entre cet objet et le protocole réseau UPnP. Un périphérique au sens UPnP correspond à un service au sens SoCQ. Un bundle proposant plusieurs services SoCQ sera donc converti en autant de périphériques UPnP. Un des avantages d'upnp est qu'il est possible de développer des gestionnaires de ressources locaux sous d'autres langages que java. Il suffit que ces gestionnaires de ressources respectent les spécifications UPnP propres à la gestion de ressources pour SoCQ (voir annexe 4). 9

13 3.5 Gestionnaire de ressources global Le gestionnaire de ressources global a pour rôle de découvrir les Services SoCQ UPnP mis à disposition par les gestionnaires de ressources locaux. Il sert également à effectuer la conversion inverse des gestionnaires de ressources locaux, c'est-à-dire convertir les périphériques UPnP en proxys de services SoCQ. La figure 4 présente le diagramme de classes du gestionnaire de ressources global. Fig.4 : Diagramme de classes du gestionnaire de ressources global 10

14 Le gestionnaire de ressources global est composé de trois parties: - La découverte de services UPnP compatibles SoCQ, effectuée par l'objet UPnPDiscoveryAgent - La création d'un objet SoCQUPnPService implémentant l'interface ISoCQService. Cet objet sert de proxy pour l'invocation des méthodes proposées par cette interface - La gestion des ISoCQServices, effectuée par un GlobalRM (Global Resource Manager). La classe UPnPDiscoveryAgent permet de découvrir les nouveaux SoCQUPnPDevices sur le réseau. A chaque découverte, cet agent crée un SoCQUPnPService implémentant l'interface ISoCQService, qui permet d'appeler les actions UPnP correspondant aux méthodes de l'interface ISoCQService. Une fois ce service créé, l'agent notifie la GlobalRM par l'appel de la méthode registersocqservice(isocqservice service) (respectivement unregistersocqservice(isocqservice service) si le périphérique UPnP disparaît). Le GlobalRM gère une liste de ces proxys de services SoCQ et les rend accessibles par les méthodes définies par l'interface IGlobalRM. 3.6 Contrôleur du gestionnaire de ressources global Le contrôleur fournit une interface graphique au gestionnaire de ressources global. Il permet de visualiser la liste des services présents dans l'environnement ainsi que leur description (fig.5). Il permet également d'invoquer leurs méthodes (fig.6), s'abonner / désabonner à leurs flux (fig.8) et récupérer la valeur de leurs propriétés (fig.9). Dans les captures d'écrans des figures 5, 8 et 9, le service concerné est un service de capture de température virtuel. Pour la figure 6, il s'agit du service de messagerie instantanée. Fig.5 : Interface du contrôleur du gestionnaire de ressources La figure 5 présente l'interface du contrôleur du gestionnaire de ressources. Sur la gauche se trouve la liste des identifiants de services du gestionnaire de ressources global. Lorsqu'un service est sélectionné, sa description s'affiche au centre. 11

15 Fig.6 : Invocation de méthodes des services. Sur la figure 6, on a d'abord invoqué la méthode gettemperature du service 1 (capture de température), puis la méthode sendmessage du service 2 (service de messagerie). On observe dans la partie inferieur du contrôleur les résultats de ces invocations. Le résultat de l'invocation de la méthode sendmessage avec les paramètres visibles sur la figure 6 est présenté figure 7. C'est un client de messagerie Jabber ouvert en tant que qui a reçu le message "Hello world!" envoyé par le service de messagerie. Fig.7 : Résultat de l'invocation de la méthode sendmessage. Sur la figure 8, le contrôleur s'est abonné au flux de température des services 1 et 2, correspondant respectivement à des capteurs de température virtuels dans le bureau et sur le toit. On voit dans les traces les différents tuples reçus pour les deux flux. Sur la figure 9, la propriété location du service 1 est sélectionnée. On peut ainsi visualiser sa valeur. 12

16 Fig.9 : Visualisation des propriétés. Fig.8 : Abonnement à des flux de température. 3.7 Conclusion L'aspect réseau était la difficulté de cette partie, d'une part parce qu'upnp est particulièrement contraignant en terme de développement, mais surtout parce que l'implémentation du service UPnP proposé par Felix n'est pas très explicite pour la gestion des erreurs, et possède quelques bugs. La partie gestion des ressources de ce projet représente un volume de 3140 lignes de code (57 classes Java) pour les gestionnaires de ressources et le contrôleur, et de 434 lignes (8 classes Java) pour les exemples de services de capture de température et de messagerie. 13

17 4 Gestion des tables 4.1 Objectifs Le gestionnaire de tables a pour but de fournir un catalogue de tables. Il doit s'occuper de l'accès concurrent à ce catalogue, et des opérations sur les services. Une table est un ensemble de tuples correspondant à un schéma. Dans SoCQ, les attributs d'une table peuvent être réels, c'est-à-dire que la donnée associée est stockée, ou virtuels, dans ce cas, la donnée ne possède qu'une existence logique au niveau du gestionnaire de tables et ne peut être complétée que lors de l'exécution d'une requête. Les attributs virtuels sont utilisés lors de l'invocation de binding patterns. Un binding pattern est une règle associée à une table qui décrit la relation entre les attributs de cette table et une méthode d'un service. Par exemple : On considère la table Employee suivante, dont les attributs Message et Envoyé sont virtuels et sont représentés par le caractère '*'. L'attribut Service contient l'identifiant du service à utiliser lors de l'invocation du binding pattern. Ce service possède la méthode : Boolean envoyermessage(string message, String adresse). Nom Adresse Service de messagerie Message (v) Envoyé (v) Brice 1 * * Yann 1 * * Le binding pattern permet d'associer la méthode envoyermessage à cette table. Il définit la correspondance entre les attributs Message et Adresse de cette table et le paramètre d'entrée message et adresse de la méthode envoyermessage, et celle entre l'attribut Envoyé et le paramètre de retour de cette méthode. L'attribut correspondant à l'identifiant du service à utiliser est également défini par le binding pattern. Il s'agit ici de l'attribut Service de messagerie. Le gestionnaire de tables permet les opérations suivantes : - création / suppression d'une table - lecture d'une table - ajout / suppression d'un tuple dans une table - invocation d'un binding pattern associé à une table 4.2 Architecture Le gestionnaire de tables, le gestionnaire de ressources global et le moteur SoCQ sont des modules du même framework (OSGi). 14

18 Fig.10 : diagramme de déploiement du gestionnaire de tables Le gestionnaire de ressources permet d'accéder à l'ensemble des services du système. Il s'occupe de la découverte et de l'invocation à distance. Le contrôleur de tables fournit une interface graphique pour visualiser et administrer le catalogue. Le moteur SoCQ s'occupe de l'exécution des requêtes SoCQ. 4.3 Gestionnaire de tables La figure 11 présente le diagramme de classes du gestionnaire de tables. Le gestionnaire de tables possède un catalogue de tables. Pour résoudre les problèmes de concurrence sur ce catalogue, l'accès à celui-ci est effectué uniquement par le thread principal du gestionnaire de tables. Pour cela, on utilise un système de commandes asynchrones. Les différentes commandes disponibles ainsi que leur fonctionnement sont détaillés dans la section Lors de l'appel d'une méthode du gestionnaire de tables, une commande, correspondant à l'action demandée, est ajoutée dans une file interne. Dans son thread principal, le gestionnaire de tables peut alors exécuter cette commande. A la fin de l'exécution, l'appelant est notifié. La figure 12 présente la séquence utilisée pour la création d'une table. 15

19 Fig.11 : diagramme de classes du gestionnaire de tables. Fig.12 : diagramme de séquence de la création d'une table par l'intermédiaire d'une commande 16

20 Dans un souci d'optimisation de l'exécution, en particulier pour le moteur SoCQ, un autre mode d'accès au catalogue est prévu : le thread principal du gestionnaire de tables passe la main à un exécuteur de requêtes et lui donne un accès direct et exclusif au catalogue. Pour cela, le gestionnaire de tables appelle la méthode execute() de l'exécuteur de requêtes en lui donnant la référence du catalogue. Gestionnaire de tables donne la main aux exécuteurs de requêtes exécute les commandes en attente Les méthodes du catalogue et des tables sont synchrones. Elles possèdent leurs équivalents en appels asynchrones par l'utilisation du système de commandes. S'il s'agit d'une méthode du catalogue, la méthode asynchrone correspondante est fournie directement par le gestionnaire de tables. S'il s'agit d'une méthode d'une table, un proxy TableProxy est utilisé (voir 4.3.3) Catalogue Le catalogue permet de : - Récupérer la liste des tables. - Récupérer un objet table. - Créer une table en fournissant son schéma de relation et ses binding patterns si nécessaire. - Supprimer une table Tables Une table est représentée par un schéma. Ce schéma décrit les attributs de la table. Ces attributs possèdent un nom, un type java (un objet Class) et une information booléenne indiquant s'il s'agit d'un attribut virtuel. Les tuples d'une table ne sont pas toujours stockés par le gestionnaire de table. S'il s'agit d'une table représentant un flux, les tuples sont transmis aux lecteurs mais ne sont pas conservés. Pour être compatible avec tous les types de tables (relation ou flux), la lecture utilise une file d'événements (liste FIFO) comme intermédiaire (voir fig.13). Lecteur Evènements Fig.13 : lecture d'une table Table 17

21 S'il s'agit d'une table représentant une relation, la lecture entraîne une phase d'initialisation de la file avec les tuples déjà présents dans la table. La file est ensuite actualisée en fonction des modifications effectuées (ajout ou suppression de tuples) jusqu'au désabonnement de la lecture. S'il s'agit d'une table représentant un flux, seuls les tuples du flux dont l'arrivée est postérieure à l'abonnement seront ajoutés dans la file, car le gestionnaire de table ne stocke pas les flux. Et ce jusqu'au désabonnement de la lecture. Pour une table de type flux, il ne peut y avoir que des ajouts. Les opérations suivantes sont également disponibles sur une table : - Lecture du contenu stocké d'une table (Abonnement avec une file d'évènements). - Désabonnement de la lecture. La table arrête alors de mettre à jour la file correspondante. - Ajout de tuples - Suppression de tuples - Invocation de binding patterns TableProxy Les méthodes des tables présentées précédemment ne sont utilisables que si on a accès direct et exclusif au catalogue. Dans le cas contraire, lors de l'invocation asynchrone de la méthode gettable() du gestionnaire de tables, celui-ci renvoie un objet TableProxy qui sert de proxy pour l'invocation des méthodes d'une table. Lors de l'appel d'une méthode, le TableProxy ajoute la commande correspondante dans la file de commandes du gestionnaire de tables Objets Future Lors des invocations asynchrones, le retour de la méthode est un objet Future<V>. Cet objet, utilisant les types génériques <V> [12] et inspiré de l'interface Future<V> [13] fourni par Java, permet de notifier l'appelant lorsque la commande a été exécutée. Les méthodes utilisables par l'appelant sont : public Boolean isdone(); public V get()throws Exception; La méthode isdone() permet de vérifier si la commande a achevé son exécution, tandis que get() permet d'attendre si nécessaire la fin de cette exécution. C'est également le seul moyen de récupérer l'objet V, résultat de l'exécution de la commande. Les méthodes utilisables par le gestionnaire de tables sont : public void executioncomplete(v value); public void setexception(exception e); Elles permettent de notifier l'objet Future de la fin de l'exécution de la commande. Si l'exécution s'est déroulée normalement, l'objet V est fourni, sinon une Exception, donnée par l'appel de la méthode setexception, est levée par la méthode get() Commandes Lors de l'exécution asynchrone d'une méthode, des commandes sont utilisées pour mettre en file d'attente cette exécution. Les commandes possibles sont les suivantes : 18

22 Fig.14 : diagramme de classes du package commands Ces commandes représentent les méthodes du catalogue ou des tables. Elles renvoient un objet Future qui représente le résultat de cette exécution asynchrone. Voici un exemple d'utilisation : On considère la méthode suivante : Future<ITable> gettable(int key) L'objet souhaitant récupérer la table utilise le code suivant : Future<ITable> futuretable = tablemanager.getfuturetable(1); //Une commande est ajoutée dans la file de commandes du TableManager ITable table = futuretable.get(); La méthode get() bloque jusqu'à ce que la table soit disponible. Lorsque le TableManager va exécuter la commande, celle-ci va mettre à jour l'objet futuretable en appelant : futuretable.executioncomplete(uneitable); Il est également possible d'évite de bloquer sur la méthode get(). Pour cela, on peut utiliser le code suivant : Future<ITable> futuretable = tablemanager.getfuturetable(1); actions.. if( futuretable.isdone() ) { 19

23 //On sait que la table est disponible ITable table = futuretable.get(); } else { actions.. } Binding Patterns Un binding pattern permet de faire la correspondance entre des attributs d'une table et des paramètres d'une méthode d'un service. Il permet également de savoir quel attribut correspond à un identifiant de service, et de connaitre la méthode à invoquer. L'appel de la méthode invoke() d'un binding pattern est asynchrone, cette méthode utilise donc également un objet Future<Tuple[]> pour effectuer la notification. On peut reprendre l'exemple du paragraphe 4.1 : Nom Adresse Service Message (v) Envoyé (v) Brice 1 * * Yann 1 * * Soit un binding pattern correspondant à la méthode Boolean envoyermessage(string adresse, String message). Si on souhaite invoquer ce binding pattern sur le premier tuple de la table, l'appel de la méthode invoke() sera le suivant : /* On possède un Tuple tuple correspondant à la ligne 1. * Ce tuple est complété en attribuant une valeur aux attributs virtuels * correspondant aux paramètres d'entrée de la méthode. * tuple = { "Brice", 1, "Ceci est un message" } */ Future<Tuple[]> futuretuples = bindingpattern.invoke(tuple); /* cela va invoquer la méthode du service possédant l'identifiant 1 * envoyermessage( "Ceci est un message") */ Tuple[] result = futuretuples.get(); result contiendra un seul Tuple, qui lui-même contiendra un seul élément booléen correspondant au résultat de l'invocation de la méthode envoyermessage() Gestionnaire de listes de services Le gestionnaire de listes de services est un composant du gestionnaire de tables. Il permet au moteur SoCQ ou au contrôleur de tables de créer des tables contenant des identifiants de services présents dans l'environnement. Il se charge également de maintenir à jour ces tables. Chaque table est associée à une SoCQServiceDescription (voir annexe 2) permettant de sélectionner les services en fonction des méthodes, flux et propriétés qu'ils possèdent. La table contient un tuple pour chaque service respectant ces critères. Les seuls attributs réels contenus dans ces tables sont les propriétés de la SoCQServiceDescription fournie. Les valeurs de ces attributs sont complétées avec la valeur de la propriété pour chaque 20

24 service. La table peut contenir d'autres attributs, mais ceux-ci doivent être virtuels car le gestionnaire de listes de services ne peut pas attribuer arbitrairement une valeur à ceux-ci. Une table créée par le gestionnaire de listes de services peut également posséder un ou plusieurs binding patterns. Par exemple, la table suivante contient des identifiants de service pour des capteurs de température, possédant les propriétés Localisation et Version. Un binding pattern correspondant à la méthode gettemperature() peut être associé à cette table, d'où la présence de l'attribut virtuel Température. 4.4 Contrôleur de tables ID Service Localisation Version Température (v) 1 Bureau 0.1 * 3 Bureau 0.1 * 4 Couloir 0.1 * Le contrôleur de tables fournit une interface graphique pour l'administration du catalogue du gestionnaire de tables. Il permet de visualiser la liste des tables (fig.15), de visualiser le contenu d'une table (fig.15 à 18) et de créer une table (fig.19 et 20). Fig.15 : Interface du contrôleur du gestionnaire de tables. Sur la figure 15, on observe sur la gauche la liste des tables présentes dans le catalogue du gestionnaire de tables. Leur nom et leur identifiant sont affichés. En sélectionnant une table, on peut visualiser son contenu. Ici il s'agit de la table surveillance. Fig.16 : Visualisation d'une table avec des attributs virtuels. La table Employee montrée sur la figure 16 possède deux attributs virtuels : l'attribut Message et l'attribut Sent. Cette table possède également un binding pattern, mais le contrôleur ne permet pas de le visualiser. 21

25 Fig.17 : Table associée à un gestionnaire de listes de services. La figure 7 montre la table TemperatureServices. Cette table est définie comme étant associée à la description du capteur de température du tableau section 3.3. Pour rappel : on cherche donc un service possédant la méthode gettemperature::r, le flux temperature::sr et les propriétés Location:s et Version:s. Au moment de la capture d'écran pour la figure 17, aucun service de capture de température n'est lancé. Fig.18 : Table associée à un gestionnaire de listes de services, services lancés. Deux services de captures de température sont lancés, et la table TemperatureServices est mise a jour par le gestionnaire de listes de services, avec les identifiants des services et les valeurs des propriétés présentes dans la description. Le contrôleur du gestionnaire de tables permet également de créer une table. Cette création de table fait appel à un parseur développé par ailleurs au sein du projet. Sur la figure 19, on va demander la création d'une table avec l'instruction suivante : CREATE RELATION marelation (unnom STRING, unchiffre INTEGER); Fig.19 : Création de table. On observe le résultat figure 20 : la table est créée. Fig.20 : Résultat de la création de table. Cependant, le contrôleur du gestionnaire de tables est encore à une phase préliminaire de développement. Par exemple, il ne permet pas encore d'invoquer des binding patterns, ou de mettre à jour des tuples dans une table. 22

26 4.5 Conclusion L'accès concurrent aux tables était la difficulté de cette partie. L'architecture du gestionnaire de tables a été en grande partie conçue autour de cet aspect. Une fois le fonctionnement du gestionnaire de table défini, le développement n'a pas présenté de difficultés particulières. La partie gestion des tables de ce projet représente un volume de 2163 lignes de code (36 classes Java) pour le gestionnaire de tables et son contrôleur. 23

27 5 Expérimentations Cette partie concerne l'exécution de la requête présentée dans le scénario de l'introduction : SELECT Area, Manager, Threshold, Temperature, Sent FROM Temperature T, Surveillance S, Employee E WHERE S.Manager = E.Name AND S.Area = T.Area AND S.Threshold < T.Temperature AND E.Message = S.AlertMessage Un prototype du moteur SoCQ a été développé au sein du projet SoCQ pour pouvoir exécuter cette requête. Le système comporte : - Le moteur SoCQ - Le gestionnaire de tables - Le contrôleur du gestionnaire de tables - Le gestionnaire de ressources global - Un gestionnaire de ressources local - Deux services de capture de température virtuels - Un service de messagerie - Les bundles OSGi nécessaires au fonctionnement du système : o La librairie smack [14] pour le service de messagerie o Le service UPnP de Felix Le serveur de messagerie Jabber [15] est installé sur une autre machine du réseau local. Tous ces éléments sont présents sous forme de bundle OSGi. Pour cette expérimentation, ceux-ci sont installés sur le même framework. Les tables suivantes sont créées lors d'une phase d'initialisation : - MessageServices Cette table utilise un gestionnaire de listes de services pour récupérer l'identifiant de service correspondant à un service de messagerie. - TemperatureServices De même, cette table utilise un gestionnaire de liste de services pour récupérer les identifiants de services correspondant aux services de capture de température. 24

28 - Employee Cette table est créée statiquement, puis complétée par une requête SoCQ annexe qui récupère dynamiquement l'identifiant de service contenu dans la table MessageServices. Un binding pattern correspondant à la méthode envoyermessage est associé à cette table. - Surveillance Cette table est créée et complétée de manière statique. - Temperature Cette table est crée de manière statique. Elle est initialement vide mais par un opérateur SoCQ spécifique, on y associe les flux de température des services inscrits dans la table TemperatureServices. Après quelques secondes d'exécution, la table possède les tuples suivants : Les capteurs de température sont des capteurs virtuels. On peut choisir la température courante grâce à un curseur. L'interface est présentée figure 21. Fig.21 : Interface d'un capteur de température virtuel. 25

29 Lorsqu'on augmente la température du capteur virtuel associé à la localisation Toit, on obtient la table suivante : La température dépassant le seuil défini dans la table Surveillance (27 C), la requête commande l'execution du binding pattern de la table Employee avec le message correspondant de la table surveillance. La figure 22 présente le résultat de cette exécution. Fig.22 : Résultat de l'invocation du binding pattern. Le résultat de la requête est enregistré dans une table Results. Après avoir également augmenté la température virtuelle du bureau on obtient le résultat présenté figure 23 : 26

30 Fig.23 : résultat de la requête. Cette expérimentation permet de vérifier le bon fonctionnement du système dans son ensemble car elle fait appel à quasiment toutes les fonctionnalités du gestionnaire de tables ainsi que des gestionnaires de ressources. 27

1. QCM (40 points) (1h)

1. QCM (40 points) (1h) Examen 1ère session 2012-2013 page 1 NSY 102 - AISL IPST-CNAM Intranet et Designs patterns NSY 102 Vendredi 26 Avril 2013 Durée : 3 heures Enseignants : LAFORGUE Jacques 1. QCM (40 points) (1h) Mode d'emploi

Plus en détail

Projet M1 : Application P2P Hybride avec RMI

Projet M1 : Application P2P Hybride avec RMI Projet M1 : Application P2P Hybride avec RMI Applications Réparties 2008-2009 Université Paris VIII / Parcours SRM / M1 Sujet : Le but de ce projet est d'implémenter une application de partage de fichiers

Plus en détail

Avant de programmer en Java DOS Set Path=C:\JDK\bin Path=C:\JDK\bin C:\JDK\bin Set Path=%Path%;C:\JDK\bin C:\JDK\bin C:\JDK\

Avant de programmer en Java DOS Set Path=C:\JDK\bin Path=C:\JDK\bin C:\JDK\bin Set Path=%Path%;C:\JDK\bin C:\JDK\bin C:\JDK\ Exercices corrigés de programmation OO Java Préparés par : Mlle Imene Sghaier Année Académique : 2006-2007 Premiers Pas I. Avant de programmer en Java Le JDK de Sun (Java Development Kit) est l outil essentiel

Plus en détail

Rapport d'architecture

Rapport d'architecture Romain Alexandre Cécile Camillieri Rapport d'architecture 1 / 12 Table des matières I) Description du projet p. 3 1) Canaux de communication p. 3 2) Diagrammes de cas d'utilisation p. 3 II) Gestion des

Plus en détail

Projet de fin d études

Projet de fin d études INSA de Lyon Département Télécommunications services & usages / LIRIS Projet de fin d études Gestion de données dans des environnements pervasifs 21/12/2007 Version 1 : 28/11/2007 Version 2 : 11/12/2007

Plus en détail

Plan. Environnement Client/Serveur. Cours 6 Rappels Java (suite) Appel de méthode à distance. Utilité. static

Plan. Environnement Client/Serveur. Cours 6 Rappels Java (suite) Appel de méthode à distance. Utilité. static Plan Environnement Client/Serveur Cours 6 Rappels Java (suite) Appel de méthode à distance kn@lri.fr http://www.lri.fr/~kn 1 Rappels sur les systèmes d'exploitations / Communication par mémoire partagée

Plus en détail

GRAILS L'ARCHITECTURE GRAILS

GRAILS L'ARCHITECTURE GRAILS GRAILS L'ARCHITECTURE GRAILS Grails est un serveur d'application web basé sur le langage Groovy, et le framework Spring. Il est édité par la société : SpringSource. Une application Grails se décompose

Plus en détail

Fonctionnement du serveur Z39.50

Fonctionnement du serveur Z39.50 Fonctionnement du serveur Z39.50 Table des matières 1 Configuration du serveur...2 1.1 Comportement du serveur...2 1.2 Configuration de la traduction z39.50 -> base de données...2 1.3 Configuration du

Plus en détail

Annexe : La Programmation Informatique

Annexe : La Programmation Informatique GLOSSAIRE Table des matières La Programmation...2 Les langages de programmation...2 Java...2 La programmation orientée objet...2 Classe et Objet...3 API et Bibliothèque Logicielle...3 Environnement de

Plus en détail

Cours 1 : Introduction Générale + Objet I

Cours 1 : Introduction Générale + Objet I Organisation du cours Équipe pédagogique DUT Informatique S3 - Programmation Java Jean-Claude MARTIN MARTIN@LIMSI.FR Cours 1 : Introduction Générale + Objet I Jean-Claude MARTIN (Responsable, Cours, TD

Plus en détail

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile Dans ce TP, vous apprendrez à définir le type abstrait Pile, à le programmer en Java à l aide d une interface

Plus en détail

Projet ASR Encadrement : Sébastien LERICHE Réalisation : Rachid DAOU et Saber LAABIDI MALKI

Projet ASR Encadrement : Sébastien LERICHE Réalisation : Rachid DAOU et Saber LAABIDI MALKI DECOUVERTE ET SIGNALISATION MULTI-ECHELLE Projet ASR Encadrement : Sébastien LERICHE Réalisation : Rachid DAOU et Saber LAABIDI MALKI Sommaire 1- Présentation du projet... 3 1.1- Le contexte... 3 1.2-

Plus en détail

Projet de Veille Technologique

Projet de Veille Technologique Projet de Veille Technologique Programmation carte à puce - JavaCard Ing. MZOUGHI Ines (i.mzoughi@gmail.com) Dr. MAHMOUDI Ramzi (mahmoudr@esiee.fr) TEST Sommaire Programmation JavaCard Les prérequis...

Plus en détail

Compte-rendu de projet de Système de gestion de base de données

Compte-rendu de projet de Système de gestion de base de données Compte-rendu de projet de Système de gestion de base de données Création et utilisation d'un index de jointure LAMBERT VELLER Sylvain M1 STIC Université de Bourgogne 2010-2011 Reponsable : Mr Thierry Grison

Plus en détail

DUT Informatique Module JAVA Apprentis Département Informatique 2008 / 2009. Travaux Pratiques n o 7 : RMI

DUT Informatique Module JAVA Apprentis Département Informatique 2008 / 2009. Travaux Pratiques n o 7 : RMI iut ORSAY DUT Informatique Département Informatique 2008 / 2009 Travaux Pratiques n o 7 : RMI Nom(s) : Groupe : Date : Objectifs : savoir créer des applications client-serveur mettant en jeu des machines

Plus en détail

Présentation générale des Web Services

Présentation générale des Web Services Présentation générale des Web Services Vue Globale Type d'architecture reposant sur les standards de l'internet Alternative aux architectures classiques : Client/serveur n/tiers Orientée services permettant

Plus en détail

Listes et arbres binaires

Listes et arbres binaires Des structures de données dynamiques Listes, Listes ordonnées Arbres binaires, arbre binaires de recherche Listes chaînées Utile si le nombre d éléments n est pas connu à l avance et évolue beaucoup. Permet

Plus en détail

Programmabilité du réseau avec l'infrastructure axée sur les applications (ACI) de Cisco

Programmabilité du réseau avec l'infrastructure axée sur les applications (ACI) de Cisco Livre blanc Programmabilité du réseau avec l'infrastructure axée sur les applications (ACI) de Cisco Présentation Ce document examine la prise en charge de la programmabilité sur l'infrastructure axée

Plus en détail

Création d un WebService. Tp WinDev Numéro 13

Création d un WebService. Tp WinDev Numéro 13 Tp WinDev Numéro 13 Objectifs : Création d un WebService Paramétrage d un serveur Web, Création du Service Web, Création du client consommateur, Approche XML, SOAP Outils : Un serveur d application Ce

Plus en détail

Systèmes distribués. Les Sockets

Systèmes distribués. Les Sockets Systèmes distribués Plusieurs technologies existent : Les sockets Les remote procedure call (RPC) Remote Method Invocation (RMI) Les Sockets L'utilisation des Sockets nécessite De gérer le codage et le

Plus en détail

Modèle client-serveur

Modèle client-serveur Modèle client-serveur Daniel Hagimont IRIT/ENSEEIHT 2 rue Charles Camichel - BP 7122 31071 TOULOUSE CEDEX 7 Daniel.Hagimont@enseeiht.fr http://hagimont.perso.enseeiht.fr Remerciements Michel Riveill 1

Plus en détail

TME 5 plateforme OSGi

TME 5 plateforme OSGi UPMC Paris Universitas Master d'informatique M1/STL/CPS 1 TME 5 plateforme OSGi Frédéric Peschanski 26 mars 2008 Ce sujet de TME est un tutoriel à la technologie OSGi, une plateforme industrielle pour

Plus en détail

Cours de Génie Logiciel

Cours de Génie Logiciel Cours de Génie Logiciel Sciences-U Lyon Diagrammes UML (2) http://www.rzo.free.fr Pierre PARREND 1 Avril 2005 Sommaire Les Diagrammes UML Diagrammes de Collaboration Diagrammes d'etats-transitions Diagrammes

Plus en détail

Management of Data Sources and Services in Pervasive Environments

Management of Data Sources and Services in Pervasive Environments Yann Gripay LIRIS UMR 5205 CNRS Bat Blaise Pascal +33/0 472 43 88 99 yann.gripay@liris.cnrs.fr Management of Data Sources and Services in Pervasive Environments Frédérique Laforest LIRIS UMR 5205 CNRS

Plus en détail

Le client/serveur repose sur une communication d égal à égal entre les applications.

Le client/serveur repose sur une communication d égal à égal entre les applications. Table des matières LES PRINCIPES DE BASE... 1 Présentation distribuée-revamping...2 Présentation distante...3 Traitements distribués...3 données distantes-rd...4 données distribuées-rda distribué...4 L'ARCHITECTURE

Plus en détail

Présentation du projet:

Présentation du projet: : Le but du projet est de réaliser le fonctionnement d'un jeu d échec valide. Plus spécifiquement, il consiste à implémenter l'organisation générale du jeu, et le suivi des règles du mouvement des pièces.

Plus en détail

Projet Viticulture - TP 4 : Projet H2O de traitement des eaux en viticulture BTS Services informatiques aux organisations

Projet Viticulture - TP 4 : Projet H2O de traitement des eaux en viticulture BTS Services informatiques aux organisations Projet Viticulture TP 4 : projet H2O Description du thème Partie 1 : bases de données locales SQLite Partie 2 : projet H2O stockage local Partie 3 : bases de données distantes Partie 4 : projet H2O synchronisation

Plus en détail

Projet Active Object

Projet Active Object Projet Active Object TAO Livrable de conception et validation Romain GAIDIER Enseignant : M. Noël PLOUZEAU, ISTIC / IRISA Pierre-François LEFRANC Master 2 Informatique parcours MIAGE Méthodes Informatiques

Plus en détail

Chapitre 4. Le modèle de composants : les services

Chapitre 4. Le modèle de composants : les services Chapitre 4 Le modèle de composants : les services 1 Les services "A Service is an application component that can perform long-running operations in the background and does not provide a user interface."

Plus en détail

Introduction à JDBC. Accès aux bases de données en Java

Introduction à JDBC. Accès aux bases de données en Java Introduction à JDBC Accès aux bases de données en Java Eric Cariou Université de Pau et des Pays de l'adour Département Informatique Eric.Cariou@univ-pau.fr 1 Introduction JDBC : Java Data Base Connectivity

Plus en détail

Un chat en C# Extrait de Wikipédia

Un chat en C# Extrait de Wikipédia Un chat en C# Un chat utilise un mécanisme de communication entre deux applications distantes. Il existe plusieurs solutions pour faire communiquer deux applications ; nous allons, ici, utiliser le protocole

Plus en détail

Cours IHM-1 JavaFX 7 - FXML SceneBuilder Jacques BAPST

Cours IHM-1 JavaFX 7 - FXML SceneBuilder Jacques BAPST Cours IHM-1 JavaFX 7 - FXML SceneBuilder Jacques BAPST jacques.bapst@hefr.ch I/F procédurales déclaratives Avec JavaFX, les interfaces peuvent être créées de deux manières : Procédurale : en écrivant du

Plus en détail

Informatique / Programmation

Informatique / Programmation Informatique / Programmation Programmation orientée objet avec Java 07 : Chaînes de caractères Jacques Bapst jacques.bapst@hefr.ch Chaînes de caractères (String) En Java les chaînes de caractères sont

Plus en détail

Sage CRM. 7.2 Guide de Portail Client

Sage CRM. 7.2 Guide de Portail Client Sage CRM 7.2 Guide de Portail Client Copyright 2013 Sage Technologies Limited, éditeur de ce produit. Tous droits réservés. Il est interdit de copier, photocopier, reproduire, traduire, copier sur microfilm,

Plus en détail

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère L'héritage et le polymorphisme en Java Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère En java, toutes les classes sont dérivée de la

Plus en détail

Créer le modèle multidimensionnel

Créer le modèle multidimensionnel 231 Chapitre 6 Créer le modèle multidimensionnel 1. Présentation de SSAS multidimensionnel Créer le modèle multidimensionnel SSAS (SQL Server Analysis Services) multidimensionnel est un serveur de bases

Plus en détail

RMI. Remote Method Invocation: permet d'invoquer des méthodes d'objets distants.

RMI. Remote Method Invocation: permet d'invoquer des méthodes d'objets distants. RMI Remote Method Invocation: permet d'invoquer des méthodes d'objets distants. Méthode proche de RPC. Outils et classes qui rendent l'implantation d'appels de méthodes d'objets distants aussi simples

Plus en détail

Symfony 2. 1.Définition de symfony 2. 2.Installation. 3.Structure. 4.Symfony et les commandes

Symfony 2. 1.Définition de symfony 2. 2.Installation. 3.Structure. 4.Symfony et les commandes Symfony 2 Sommaire : 1.Définition de symfony 2 2.Installation 3.Structure 4.Symfony et les commandes 5.Le fonctionnement : le routeur (les url), les bundles, twig(templates) 6.L architecture de symfony2

Plus en détail

Interactions audio sur le site web du LIA Documentation Technique

Interactions audio sur le site web du LIA Documentation Technique 2007 Interactions audio sur le site web du LIA Documentation Technique Projet 13 - IUP Avignon Master1 TAIM 28/05/2007 2 Projet 13 : Interactions audio sur le site web du LIA Sommaire Composants de l'application...

Plus en détail

Gestion d une école. FABRE Maxime FOUCHE Alexis LEPOT Florian

Gestion d une école. FABRE Maxime FOUCHE Alexis LEPOT Florian Gestion d une école FABRE Maxime 2015 Sommaire Introduction... 2 I. Présentation du projet... 3 1- Lancement de l application... 3 Fonctionnalités réalisées... 4 A. Le serveur... 4 1 - Le réseau... 4 2

Plus en détail

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris :

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris : Développement d un client REST, l application Vélib 1. Présentation L application présentée permet de visualiser les disponibilités des vélos et des emplacements de parking à la disposition des parisiens

Plus en détail

JDBC. Daniel Tschirhart : Programmation Java V1.35 1.1

JDBC. Daniel Tschirhart : Programmation Java V1.35 1.1 JDBC Daniel Tschirhart : Programmation Java V1.35 1.1 JDBC JDBC est l'acronyme de Java DataBase Connectivity et désigne une API définie par Sun pour permettre un accès aux bases de données avec Java Accès

Plus en détail

Développement d un client REST, l application Vélib

Développement d un client REST, l application Vélib Développement d un client REST, l application Vélib Description du thème Propriétés Description Intitulé long Formation concernée Matière Présentation Application en C# qui utilise un service REST informant

Plus en détail

Modèle client-serveur

Modèle client-serveur Modèle client-serveur Daniel Hagimont IRIT/ENSEEIHT 2 rue Charles Camichel - BP 7122 31071 TOULOUSE CEDEX 7 Daniel.Hagimont@enseeiht.fr http://hagimont.perso.enseeiht.fr 1 Plan Principes généraux Modèle

Plus en détail

PRODIGE V3. Manuel utilisateurs. Consultation des métadonnées

PRODIGE V3. Manuel utilisateurs. Consultation des métadonnées PRODIGE V3 Manuel utilisateurs Consultation des métadonnées Pour plus d'information sur le dispositif : à remplir par chaque site éventuellement 2 PRODIGE V3 : Consultation des métadonnées SOMMAIRE 1.

Plus en détail

Architecture Logicielle

Architecture Logicielle Architecture Logicielle Chapitre 3: UML pour la description et la documentation d une architecture logicielle Année universitaire 2013/2014 Semestre 1 Rappel L architecture d un programme ou d un système

Plus en détail

Plugin Payment-OnLine

Plugin Payment-OnLine Plugin Payment-OnLine Le plugin "Payment-Online" est un plugin technique dont l'objectif est de faciliter l'utilisation du paiement en ligne dans des applications Lutèce. Il se compose d'une librairie

Plus en détail

ORACLE TUNING PACK 11G

ORACLE TUNING PACK 11G ORACLE TUNING PACK 11G PRINCIPALES CARACTÉRISTIQUES : Conseiller d'optimisation SQL (SQL Tuning Advisor) Mode automatique du conseiller d'optimisation SQL Profils SQL Conseiller d'accès SQL (SQL Access

Plus en détail

Java 7 Les fondamentaux du langage Java

Java 7 Les fondamentaux du langage Java 184 Java 7 Les fondamentaux du langage Java 1.1 Les bibliothèques graphiques Le langage Java propose deux bibliothèques dédiées à la conception d'interfaces graphiques. La bibliothèque AWT et la bibliothèque

Plus en détail

ECLIPSE. Une courte introduction

ECLIPSE. Une courte introduction Laboratoire d'analyse et d'architecture des Systèmes ECLIPSE Une courte introduction Résumé: Quelques notions de bases sont rapidement décrites. Mots clés: Eclipse, Version, Exemples, IDE, Plug-ins, Rich

Plus en détail

Chapitre 10. Les interfaces Comparable et Comparator 1

Chapitre 10. Les interfaces Comparable et Comparator 1 Chapitre 10: Les interfaces Comparable et Comparator 1/5 Chapitre 10 Les interfaces Comparable et Comparator 1 1 Ce chapitre a été extrait du document "Objets, Algorithmes, Patterns" de [René Lalement],

Plus en détail

et Groupe Eyrolles, 2006, ISBN : 2-212-11747-7

et Groupe Eyrolles, 2006, ISBN : 2-212-11747-7 Tsoft et Groupe Eyrolles, 2006, ISBN : 2-212-11747-7 OEM Console Java OEM Console HTTP OEM Database Control Oracle Net Manager 6 Module 6 : Oracle Enterprise Manager Objectifs Contenu A la fin de ce module,

Plus en détail

Création d'un convertisseur SQL SiTools

Création d'un convertisseur SQL SiTools Création d'un convertisseur SQL SiTools 1 - Introduction Un convertisseur permet de transformer la requête SQL, envoyé par la webapp SiTools à la webapp catalog ou l'inverse. C'est à dire que cette conversion

Plus en détail

PRODIGE V3. Manuel utilisateurs. Consultation des métadonnées

PRODIGE V3. Manuel utilisateurs. Consultation des métadonnées PRODIGE V3 Manuel utilisateurs Consultation des métadonnées Pour plus d'information sur le dispositif : à remplir par chaque site éventuellement 2 PRODIGE V3 : Consultation des métadonnées SOMMAIRE 1.

Plus en détail

Modèle spagetthi et solution EAI

Modèle spagetthi et solution EAI EAI Définition L'EAI est une notion ancienne mais toujours d'actualité. En effet, le besoin de faire communiquer des applications développées à des moments différents, dans des technologies différentes

Plus en détail

Exécution des applications réparties

Exécution des applications réparties Exécution des applications réparties Programmation des Applications Réparties Olivier Flauzac URCA Master STIC-Informatique première année Olivier Flauzac (URCA) PAR : Exécution des applications réparties

Plus en détail

M3 - Kernel Programming

M3 - Kernel Programming M3 - Kernel Programming Nicolas CORMIER Epitech 2008 Dans le cadre de la réalisation d'un début de micro kernel en mode protégé sur processeur x86, ce document décrit l'architecture du noyau ainsi que

Plus en détail

Figure 1. Structure répartie

Figure 1. Structure répartie Chapitre I: Applications Réparties et Middleware 1. Définition d une application répartie Une application répartie est constituée d un ensemble de processus (d objets, d agents, d acteurs) s exécutant

Plus en détail

1.Programmation en Java : notions de base, orienté objet et héritage

1.Programmation en Java : notions de base, orienté objet et héritage Travaux pratique de Méthodologie et Langage de Programmation,, TP1 1 1.Programmation en Java : notions de base, orienté objet et héritage Cette séance de TP a pour objectif d'introduire à la programmation

Plus en détail

Document d'aide phpmyadmin et MySQL

Document d'aide phpmyadmin et MySQL Document d'aide phpmyadmin et MySQL GPA775 Base de données École de Technologie Supérieure 23 juin 2009 Ce document sert de guide de base pour travailler avec l'interface phpmyadmin (interface par un navigateur

Plus en détail

Cours Administration BD

Cours Administration BD Faculté des Sciences de Gabès Cours Administration BD Chapitre 2 : Architecture Oracle Faîçal Felhi felhi_fayssal@yahoo.fr 1 Processus serveur 1 Mémoire PGA Architecture SGBD Oracle Processus serveur 2

Plus en détail

SOAP OU REST, QUE CHOISIR?

SOAP OU REST, QUE CHOISIR? SOAP OU REST, QUE CHOISIR? Eric van der Vlist (vdv@dyomedea.com) SOAP ou REST, que choisir? Web Services Convention Juin 2004 Eric van der Vlist (vdv@dyomedea.com) SOAP-- WS Convention 2004 -- Page 1 COMPARER

Plus en détail

MANGUE Impression de données

MANGUE Impression de données MANGUE Impression de données 0. Préambule 1. Principe de Fonctionnement 2. Description des fichiers XML générés 2.1 DescriptionImpression.XML 2.2 Fichier XML généré 2.3 Exemples complets de balise et résultat

Plus en détail

Dossier de conception

Dossier de conception Dossier de conception Sujet : Gestion de Stock-Pharma Réaliser par : FADIL Ghizlane ECH CHARFAOUY Abdelouahad Encadré par : M. LACHGAR Mohammed Développement d une application JAVA EE Cadre réservé à l

Plus en détail

RAPPORT DE CONCEPTION UML :

RAPPORT DE CONCEPTION UML : Carlo Abi Chahine Sylvain Archenault Yves Houpert Martine Wang RAPPORT DE CONCEPTION UML : Bamboo Ch@t Projet GM4 Juin 2006 Table des matières 1 Introduction 2 2 Présentation du logiciel 3 2.1 Précisions

Plus en détail

Système de contrôle d accès

Système de contrôle d accès Système de contrôle d accès Installation du système Les éléments à mettre en place. Pour mettre en place l environnement de travail de la badgeuse, il faut suivre plusieurs étapes : Sur l ordinateur devant

Plus en détail

Qu'est-ce qu'un Web Service?

Qu'est-ce qu'un Web Service? WEB SERVICES Qu'est-ce qu'un Web Service? Un Web Service est un composant implémenté dans n'importe quel langage, déployé sur n'importe quelle plate-forme et enveloppé dans une couche de standards dérivés

Plus en détail

Documentation technique

Documentation technique Documentation technique Table des matières I) Spécificités techniques:... 2 II) Diagramme de cas d'utilisation:... 2 III) Phase de test:... 3 IV) Précisions à propos de certains points du projet:... 6

Plus en détail

Huitième partie. Processus communicants CSP/Ada. Processus communicants Communication synchrone CSP/CCS/π-calcul Rendez-vous étendu Ada

Huitième partie. Processus communicants CSP/Ada. Processus communicants Communication synchrone CSP/CCS/π-calcul Rendez-vous étendu Ada Huitième partie Processus communicants CSP/Ada Systèmes concurrents 2 / 44 Synchronisation Désignation, alternatives Architecture d'une application parallèle Plan 1 Processus communicants Synchronisation

Plus en détail

Dossier de Conception Système

Dossier de Conception Système Dossier de Conception Systeme FullMANGA Document Dossier de Conception Système Version 1.2 Commencé le 30 novembre 2006 Dernière modification 4 décembre 2006 Statut Finale Client Enseignants du M2P GI

Plus en détail

Chapitre 2. Classes et objets

Chapitre 2. Classes et objets Chapitre 2: Classes et Objets 1/10 Chapitre 2 Classes et objets Chapitre 2: Classes et Objets 2/10 Approche Orientée Objet Idée de base de A.O.O. repose sur l'observation de la façon dont nous procédons

Plus en détail

Administration Réseau

Administration Réseau M1 Réseaux Informatique et Applications Administration Réseau Date: 02/04/07 Auteurs: Alexis Demeaulte, Gaël Cuenot Professeurs: Patrick Guterl Table des matières 1Introduction...3 2HP OPENVIEW...3 3Les

Plus en détail

Spécification du profil UML d assemblage cible EJB (version 1)

Spécification du profil UML d assemblage cible EJB (version 1) Spécification du profil UML d assemblage cible EJB (version 1) Auteur : Projet ACCORD (Assemblage de composants par contrats en environnement ouvert et réparti) Référence : Livrable 2.2 Date : 31 mai 2002

Plus en détail

Architecture Orientée Service, JSON et API REST

Architecture Orientée Service, JSON et API REST UPMC 3 février 2015 Précedemment, en LI328 Architecture générale du projet Programmation serveur Servlet/TOMCAT Aujourd hui Quelques mots sur les SOA API - REST Le format JSON API - REST et Servlet API

Plus en détail

TPC#9 : Client & Serveur!

TPC#9 : Client & Serveur! TPC#9 : Client & Serveur! Table des matières 1 Structure du rendu 1 2 Introduction 2 3 Sockets et Threads 2 3.1 Les sockets............................................ 2 3.1.1 Cours et exemples....................................

Plus en détail

Java DataBaseConnectivity

Java DataBaseConnectivity Java DataBaseConnectivity JDBC JDBC est une API Java (ensemble de classes et d interfaces défini par SUN et les acteurs du domaine des SGBD) permettant d accéder aux bases de données à l aide du langage

Plus en détail

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme Rappel Ralf Treinen Université Paris Diderot UFR Informatique Laboratoire Preuves, Programmes et Systèmes treinen@pps.univ-paris-diderot.fr 6 mai 2015 Jusqu'à maintenant : un petit langage de programmation

Plus en détail

Formation des enseignants universitaires à la conception d'un cours en ligne sur une plateforme d'enseignement à distance

Formation des enseignants universitaires à la conception d'un cours en ligne sur une plateforme d'enseignement à distance Formation des enseignants universitaires à la conception d'un cours en ligne sur une plateforme d'enseignement à distance PARTIE2 : PRATIQUE Implémentation d'un cours en ligne sur une plateforme d'enseignement

Plus en détail

INF2015 Développement de logiciels dans un environnement Agile. Examen intra 20 février 2014 17:30 à 20:30

INF2015 Développement de logiciels dans un environnement Agile. Examen intra 20 février 2014 17:30 à 20:30 Examen intra 20 février 2014 17:30 à 20:30 Nom, prénom : Code permanent : Répondez directement sur le questionnaire. Question #1 5% Quelle influence peut avoir le typage dynamique sur la maintenabilité

Plus en détail

NFP111 Systèmes et Applications Réparties

NFP111 Systèmes et Applications Réparties NFP111 Systèmes et Applications Réparties 1 de 38 NFP111 Systèmes et Applications Réparties Cours 11 - Les Enterprise Java Beans (Introduction aux Enterprise Claude Duvallet Université du Havre UFR Sciences

Plus en détail

SPECIFICATIONS TECHNIQUES POUR LE DEVELOPPEMENT DES PLUGINS TOURISM SYSTEM CLIENT. V 1.0 27 janvier 2011

SPECIFICATIONS TECHNIQUES POUR LE DEVELOPPEMENT DES PLUGINS TOURISM SYSTEM CLIENT. V 1.0 27 janvier 2011 SPECIFICATIONS TECHNIQUES POUR LE DEVELOPPEMENT DES PLUGINS TOURISM SYSTEM CLIENT V 1.0 27 janvier 2011 Ce document présente l'utilisation des plugins dans Tourism System Client. Dans le Client, un plugin

Plus en détail

RAPPORT DU PREMIER MINI PROJET «FORUM DE CHAT» Novembre 2005

RAPPORT DU PREMIER MINI PROJET «FORUM DE CHAT» Novembre 2005 Oussama ELKACHOINDI Wajdi MEHENNI RAPPORT DU PREMIER MINI PROJET «FORUM DE CHAT» Novembre 2005 Sommaire I. Préliminaire : Notice d exécution et mode opératoire...4 II. Architecture globale de l application...5

Plus en détail

La sécurité. Chapitre 6. 1. Introduction. 2. La sécurité des accès

La sécurité. Chapitre 6. 1. Introduction. 2. La sécurité des accès 259 Chapitre 6 La sécurité 1. Introduction La sécurité La sécurité des données est un enjeu capital. Une base de données peut être amenée à stocker des données très sensibles, confidentielles. L'implémentation

Plus en détail

Projet ISN - dossier réalisé par Randrianarimanana Stéphanie. Titre du projet : Site de rencontre. le nom de notre site de rencontre : Linkymeet

Projet ISN - dossier réalisé par Randrianarimanana Stéphanie. Titre du projet : Site de rencontre. le nom de notre site de rencontre : Linkymeet Projet ISN - dossier réalisé par Randrianarimanana Stéphanie Titre du projet : Site de rencontre le nom de notre site de rencontre : Linkymeet ( tout astérisque* signifie voir annexe) l'équipe : Randrianariamanana

Plus en détail

Héritage presque multiple en Java (1/2)

Héritage presque multiple en Java (1/2) Héritage presque multiple en Java (1/2) Utiliser deux classes ou plus dans la définition d'une nouvelle classe peut se faire par composition. class Etudiant{ int numero; Diplome d; float passeexamen(examen

Plus en détail

TP Capteur de température Maxim-Dallas Thermochron DS1921K. Protocole de découverte Universal Plug and Play (UPnP)

TP Capteur de température Maxim-Dallas Thermochron DS1921K. Protocole de découverte Universal Plug and Play (UPnP) TP Capteur de température Maxim-Dallas Thermochron DS1921K Protocole de découverte Universal Plug and Play (UPnP) 1. Objectifs La mise en œuvre d un système pervasif implique de prendre en compte tous

Plus en détail

Objets distribués et Appel de Méthodes à Distance 2009-2010

Objets distribués et Appel de Méthodes à Distance 2009-2010 Objets distribués et Appel de Méthodes à Distance 2009-2010 1 Objectif : construire une application où différents modules peuvent être situés sur des machines différentes, en utilisant un modèle à objets

Plus en détail

JAVA PROGRAMMATION. Programme. 1. Java, HTML et World Wide Web

JAVA PROGRAMMATION. Programme. 1. Java, HTML et World Wide Web PROGRAMMATION PUBLIC Professionnels informatiques qui souhaitent développer des applications et «applets» Java DUREE 4 jours 28 heures OBJECTIF Créer divers «applets» à intégrer dans un site Web dynamique,

Plus en détail

Chapitre 4 La base de données

Chapitre 4 La base de données Chapitre 4 La base de données La Base de données INTRODUCTION 4 La Base de données INTRODUCTION Vectorworks permet de lier les objets du dessin à des formats de base de données (BDD), c'est-à-dire d'associer

Plus en détail

MANUEL DU KIT DE DEVELOPPEMENT DE CONNECTEURS Référence: W4JC_DEVKIT_020_FR

MANUEL DU KIT DE DEVELOPPEMENT DE CONNECTEURS Référence: W4JC_DEVKIT_020_FR W4 CONNECTORS FOR JAVA MANUEL DU KIT DE DEVELOPPEMENT DE CONNECTEURS Référence: W4JC_DEVKIT_020_FR Les prochaines mises à jour de ce document seront disponibles sur www.myw4.com W4 CONNECTORS FOR JAVA

Plus en détail

L'application WinForm et le composant d'accès aux données

L'application WinForm et le composant d'accès aux données L'application WinForm et le composant d'accès aux données Vous disposez d'un squelette de l'application AntoineVersion0- ainsi que de la base de données à restaurer dans SqlServer Bd_Antoine.dat-. Travail

Plus en détail

Types d applications pour la persistance. Outils de développement. Base de données préexistante? 3 modèles. Variantes avec passerelles

Types d applications pour la persistance. Outils de développement. Base de données préexistante? 3 modèles. Variantes avec passerelles Types d applications pour la persistance Université de Nice Sophia-Antipolis Version 0.9 28/8/07 Richard Grin Toutes les applications n ont pas une complexité qui nécessite une architecture n- tiers Ce

Plus en détail

Cours 1 : Introduction Générale + Objet

Cours 1 : Introduction Générale + Objet Organisation du cours Équipe pédagogique L2 S4 2009 : 2010 Programmation Objet Jean-Claude MARTIN MARTIN@LIMSI.FR Cours 1 : Introduction Générale + Objet 10 cours de 1h30 o Jean-Claude MARTIN (MARTIN@LIMSI.FR)

Plus en détail

Programmation Avancée pour le Web

Programmation Avancée pour le Web L3 Informatique Option : ISIL Programmation Avancée pour le Web RAMDANI Med U Bouira 1 Contenu du module Introduction aux applications Web Rappels sur les sites Web Conception d une application Web Notion

Plus en détail

Application web de gestion de comptes en banques

Application web de gestion de comptes en banques Application web de gestion de comptes en banques Objectif Réaliser une application Web permettant à un client de gérer ses comptes en banque Diagramme de cas d'utilisation 1 Les cas d'utilisation Connexion

Plus en détail

Introduction à la Programmation 1

Introduction à la Programmation 1 Introduction à la Programmation 1 Séance de cours/td Université Paris-Diderot Objectifs: Découverte du type String. Comprendre qu il y a des types différents. Maîtriser les expressions booléennes dans

Plus en détail

Chapitre 4 Les Servlets. 1. Qu'est-ce qu'une Servlet? 1.1 Présentation. 1.2 Requêtes HTTP

Chapitre 4 Les Servlets. 1. Qu'est-ce qu'une Servlet? 1.1 Présentation. 1.2 Requêtes HTTP 210 Les Servlets 1. Qu'est-ce qu'une Servlet? 1.1 Présentation Les Servlets sont la base de la programmation Java EE. La conception d'un site Web dynamique en Java repose sur ces éléments. Une Servlet

Plus en détail

Itunes U Course Manager

Itunes U Course Manager Présentation du service Itunes U est un service gratuit fourni par Apple qui permet de créer des cours et de les déployer sur du matériel de la marque. On peut considérer cela comme une brique d'ent. Ce

Plus en détail

II Importation et retrait automatiques de

II Importation et retrait automatiques de II Importation et retrait automatiques de postes de travail Les services d'importation et de retrait automatiques de postes de travail de Novell ZENworks for Desktops (ZfD) permettent de gérer facilement

Plus en détail

CORBA avec OpenORB. Samir Torki et Patrice Torguet

CORBA avec OpenORB. Samir Torki et Patrice Torguet CORBA avec OpenORB Samir Torki et Patrice Torguet 1 Présentation de CORBA CORBA (Common Object Request Broker Architecture) est un standard décrivant une architecture pour la mise en place d objets distribués.

Plus en détail