Le portail que nous avons utilisé pour intégrer les applications estla plateforme Picoforge.. Nous avons intégré non seulement Mantis dans la plateforme Picoforgemais aussi étudié l’arch
Trang 1pour l’Informatique Télécommunications
Mémoire de fin d’études
Répartition d'un portail Web
collaboratif par utilisation de Web
Ce stage a été réalisé au sein du projet PicoForge et
Persue du département Informatique de l'Institut
National des Télécommunications(INT)
Trang 2J’adresse toute ma gratitude à mon responsable de stage, M Christian BAC (INT), pour sa disponibilité, son soutien constant et son aide précieuse durant ce stage.
Je voudrais également remercier M Olivier BERGER (INT), DANG Quang Vu (IFI Promotion 10) et M Benoît HAMET (phpgroupware) pour leurs collaborations serrées, leurs aides tout au long de mon stage.
Un grand merci à toutes les personnes du département Informatique à l'INT pour leurs aides et leur gentillesse pendant mon séjour en France.Enfin, je voudrais exprimer mon entière reconnaissance envers ma famille, mes amis et mes professeurs à l’IFI pour leurs soutiens, leurs aides et leurs encouragements.
Trang 3Dans le cadre du stage de master de recherche effectué dans le départementInformatique à l'INT à Evry (France), nous avons étudié les façons d'intégrer lesapplications existantes dans un portail de travail collaboratif en utilisant lesservices Web Le portail que nous avons utilisé pour intégrer les applications est
la plateforme Picoforge C’est le nom pour un ensemble d'applications deLibreSoftware qui sont intégrées dans une plateforme de Web, Picoforge permet
le travail de collaboration, pour le développement de logiciels
L’application qui a été proposée et intégrée dans Picoforge est le système Mantis C’est un système libre de suivi de bogues sur le Webbasé Il supporte une interface de services Web (SOAP) pour l’interaction entre Mantis et les autres applications.
Nous avons intégré non seulement Mantis dans la plateforme Picoforgemais aussi étudié l’architecture générale et normalisé les services pourintégrer rapidement les autres applications dans Picoforge Pendant lapremière partie du stage, nous avons modifié Picoforge pour y intégrer lesnotions de sous projet en utilisant une notion de catégorie de projet
L’intégration de Mantis dans la plateforme Picoforge et l’architecturegénérale de noyau de Picoforge sera utilisée dans la version 1.2 selon laroadmap de développement du projet Picoforge dans la fédération d'identité
de GET (Groupe des Écoles des Télécommunications)/INT
Trang 4In the context of the training course of master of research carried out in thedepartment of information of the INT in Evry (France), we studied the ways ofintegrating the existing applications in a platform for collaboratif work by usingthe Web services The flatform that we used to integrate the applications is thePicoforge It is the name for a set of applications of LibreSoftware1 which areintegrated into a Web platform, Picoforge allows the work of collaboration, forthe development of software.
The application which was proposed and integrated in the Picoforge is theMantis system It is a free system of bug tracking on Webbased It supports aninterface of the Web service (SOAP) for the interaction between Mantis andthe other applications
We integrated not only Mantis in the Picoforge but also studied the generalarchitecture and standardized the services to quickly integrate the other applications
in Picoforge During the first part of the training course, we modified Picoforge tointegrate the concepts of subproject and of category of project into it
The integration of Mantis in the Picoforge platform and the generalarchitecture of core of Picoforge will be used in version 1.2 according to theroadmap of development of the Picoforge project in the federation of identity
of GET (Groupe des Écoles des Télécommunications) /INT
1 LibreSoftware also defined as FreeSoftware or OpenSource is defined classically by the Free Software definition.
Trang 5Table des manières
Remerciements 2
Résumé 3
Abstract 4
Chapitre 1 Introduction 8
1.1.Contexte du stage 8
1.2.Portail de travail collaboratif 8
1.3.Picoforge une plateforme de travail collaboratif 9
1.4.Objectifs du stage 9
1.5.Organisation du rapport 10
Chapitre 2 État de l'art 11
2.1.Picoforge 11
2.2.Application de suivi de bogues 13
2.2.1.Mantis 13
2.2.2.Bugzilla 13
2.2.3.Autre applications 14
2.3.Web Services 14
2.3.1.Architecture générale 15
2.3.2.WSDL 16
2.3.3.XMLRPC 16
2.3.4.SOAP 17
Chapitre 3 Propositions 19
Chapitre 4 Choix de réalisation 21
4.1 Ajouter la notion de sousprojet et de catégorie dans Picoforge 21
4.2 Normalisation des services pour intégrer les logiciels dans Picoforge 21
4.2.1 Au niveau projet 22
4.2.2 Au niveau utilisateur .23
4.3 Création des hooks 23
4.4 Intégration de Mantis dans Picoforge via SOAP 24
4.4.1 Analyse 24
4.4.2 Solution 25
4.4.3 Synchronisation des projets, des utilisateurs et des categories 27
4.4.4 Configure Mantis login au LDAP 27
Chapitre 5 Picoforge dans l'avenir prochain 29
5.1.Picoforgecore 30
5.2.Avantage 30
5.2.1 Installation indépendante des applications 30
Trang 6Conclusions et Perspectives 32
Références 33
Annexe A: phpGroupWare 34
APIs de phpgroupware 34
Web services dans phpgroupware 35
Annexe B: Utilisation de SOAP pour intégrer Sympa avec Picoforge 36
Trang 7Figure 1: Architecture générale de la version 1.1 de Picoforge 11
Figure 2: Architecture générale du Web service 15
Figure 3: Transmission de données en utilisant XMLRPC 16
Figure 4: Modèle d'intégration de Mantis dans Picoforge 26
Figure 5: Architecture générale de la version 1.2 de Picoforge 29
Figure 6: Répartition d'installation de la plateforme Picoforge 30
Figure 7: Architecture générale de phpGroupWare 34
Figure 8: Modèle d'intégration de Sympa dans Picoforge 36
Trang 8Une flatesforme de travail collaboratif pour la recherche est développé àGET depuis plusieurs années, c'est PicoLibre Actuellement, le départementinformatique de l'INT développe une plateforme de travail collaboratif pour lelogiciel (PicoForge) en se basant PicoLibre.
Actuellement, la tendance de développement de logiciel en matièred’intégration des applications existantes, spécialement des applications libres,augmente rapidement parce qu'elle améliore les temps développement etqu'ell diminue les cỏts de ces derniers En plus, les applications existantespeuvent marcher sur des systèmes d'exploitation différents comme Window,
ou Linux mais aussi sur des plateformes différentes Nous pouvons, en effet,
ne pas installer toutes ces applications sur un même serveur
1.2.Portail de travail collaboratif
Un portail Web est un site Web qui offre une porte d'entrée unique sur un largepanel de ressources et de services (email, forums, moteur de recherche etc.) centréssur un domaine ou une communauté particulière Avec un portail Web, lesutilisateurs ont la possibilité d'enregistrer un compte pour s'y connecterultérieurement et utiliser l'ensemble des services proposés Normalement, chaqueutilisateur a une espace de travail individuel qui est associé avec son compte
Le travail collaboratif est un nouveau modèle de travail qui résulte des deuxmodalités suivantes:
Organiser le travail en séquences de tâches parallèles
Trang 9Fournir aux acteurs de chacune des tâches une information utile et facilement exploitable sur les autres tâches parallèles et sur
l'environnement de la réalisation
Un portail de travail collaboratif est un environnement de travail collaboratif sur
le Web Il a une interface de Web, des ressources Web et des services Web etc
Dans un portail de travail collaboratif, il faut avoir les outils pour travailler Les méthodes dépendent de chaque but concret et les outils pour organiser le travail pour chaque membre pour éviter les tâches qui se répètent Il faut aussi faciliter l'accès et le partage des informations communes des contributeurs, des projets et des applications Évidemment, ce portail permet aux contributeurs de travailler ensemble, de partager des connaissances, des ressources et d'utiliser ensemble des ressources.
1.3.Picoforge une plateforme de travail collaboratif
PicoForge est le nom d'un ensemble d'applications logicielles libresintégrées pour former une plateforme Web destinée au développementcollaboratif La plateforme PicoForge est développée par l'équipe du projet
PFTCR (PlateFormes de Travail Collaboratif pour la Recherche), dans la continuité du projet PicoLibre développé depuis plusieurs années au GET.
Jusq'au maintenant, il y a plusieurs application libre et indépendante quisont intégrées dans Picoforge comme: Sympa, Twiki, CVS, SubVersion etquelques applications sont développées en utilisant la plateformephpgroupware comme: Todo List, Bug Report
Tout d'abord, Picoforge a une interface de Web qui agit en tant que bureauWeb pour la description de projet et l'accès aux outils offrant différentespossibilités pour chaque projet À partir de cette interface, l'administrateurinstalle (ou supprime) aussi les applications et gère les utilisateurs, lesutilisateurs travaillent sur ses projets en utilisant les outils de Picoforge
1.4.Objectifs du stage
Dans le contexte de développement de la plateforme Picoforge, le nombre d'applications intégrées dans Picoforge augmente de plus en plus La répartition de ces applications sur des serveurs différents est nécessaire parce que cela diminuera le
Trang 10charge du serveur Cette répartition permettra aussi d'intégrer un (ouplusieurs) logiciel qui marche sur un système d'exploitation différent.
Selon le contexte cidessus, le but de ce stage est de fournir les techniques etaméliorer l'architecture pour contruire le Picoforge de façon que les applicationsd'intégration puissent être installées et développées indépendamment les unesdes autres Dans le cas, ó nous remplaçons une application par une autreapplication qui a la même fonction, l'intégration est alors plus simple
Dans la partie pratique de ce stage, nous intégrerons une application desuivi de bogues dans cette plateforme Nous normaliserons aussi l'interface
de communication entre l'application de suivi de bogues et Picoforge
1.5.Organisation du rapport
L'état de l'art est réalisé dans le chapitre 2, il donne une vue générale sur la flate forme PicoForge, les applications courantes de suivi des bogues et les technologies que nous avons utilisé dans ce stage Le troisième chapitre, nous proposons quelques idées pour améliorer la flateforme PicoForge Le quatrième chapitre, nous presentons notre travail de réalisation dans ce stage Le dernière chapitre, nous parlons de l'architecture
de PicoForge dans l'avenir prochain (version 1.2) et quelques avantages.
Trang 11Chapitre 2 État de l'art
2.1.Picoforge
La plateforme PicoForge est une plateforme de travail collaboratif se basant surles APIs et les applications de base de phpGroupWare Elle héberge des projets,offre un bureau virtuel permettant aux utilisateurs de travailler de façon sécuriséedans leurs projets C'est un espace de travail associé à un ensemble d’outils Cesoutils gèrent les différents registres d’activité de la vie d’un projet, communication ausein de l’équipe et communication externe (mailinglists Sympa), planification destâches, documentation du projet (Twiki) , suivi de bogues, mise à disposition dessources (CVS) La figure cidessous montre l'architecture générale de PicoForge
Figure 1: Architecture générale de la version 1.1 de Picoforge
Trang 12PicoForge est une plateforme regroupant un ensemble de logiciels libres commeenvironnent de travail collaboratif Tous les logiciels utilisent des fonctions APIs dephpgroupware pour le développement Nous utilisons les modules picolibre_choice
et picolibre_current pour la creation de projet, la mise à jours de projet et l'affichagedes infomations de projet Ces deux applications sont le noyau de cette plateforme.L'utilisation des autres modules dépend du type de projet (projet de recherche, projet
de logiciel etc.) et des outils pour le projet Nous n'avons pas besoin d'installer toutesles autres applications de Picoforge Les applications concrètes seront installées parl'administrateur de plateforme Voici la liste de fonctions de chaque application:
phpgw_admin: installer et supprimer l'application, gérer des utilisateurs
et la permission de ces utilisateurs
Bug report: suivi des bogues
To Do List: gestion de projet
picolibre_sympa: une interface pour travailler avec Sympa (gestion de mailing lists) en utilisant Web service (SOAP)
picolibre_twiki: créer, supprimer des pages de wiki en utilisant la
méthode POST du protocole HTTP
picolibre_CVS: afficher des informations et des commandes
nécessaires pour travailler avec CVS
picolibre_SVN: afficher des informations et des commandes
nécessaires pour travailler avec SubVersion
FileManagement: gérer des fichiers de document joints pour le projet
picolibre_supervision: permet de donner des infomations générales sur
le projet
Justqu'à la version 1.1, Picoforge ne supporte pas encore de notion de sous projet
et la catégorie de projet Dans le cas, ó nous ajoutons une nouvelle applicationdans Picoforge, nous devons aussi ajouter le code pour appeler cette application àpartir des autres applications parce que le lancement d'une application extérieuren'est pas encore automatique En plus, les fonctions communes qui sont utilisées parplusieurs modules sont réparties dans plusieurs modules
Trang 132.2.Application de suivi de bogues
Le suivi des bogues est la gestion des erreurs qui est soutenue par une base de données Normalement, les bogues sont traitées selon un Workflow C'estàdire, l’état de
la bogue est changé selon les valeurs aux instants différents comme: nouveau, ouvrir, résoudre, fermer … Un outil de suivi de bogues offre l‘affichage des bogues et le traitement coordonnateuré de ces bogues Dans cette partie, nous vous présentons quelques outils de suivi de bogues qui sont utilisés par beaucoup d’entreprises.
2.2.1.Mantis
Mantis est un outil libre de suivi de bogues associé à une interface Web Ilest écrit en PHP et fonctionne avec MySQL, MS SQL, ou PostgreSQL et unserver de Web Mantis peut marcher sur Windows, Linux, Mac OS
Voici la liste principale des caractéristiques de Mantis
Logiciel libre
Supporte la création de projet, sousprojet et des catégories
Chaque utilisateur peut avoir un niveau d'accès différent par
projet Nous pouvons aussi faire le rapport graphique des bugs
La base de données peut être exportée aux format CSV, Microsoft Excel, Microsoft Word
Reportage des bogues via Email
Adaptation des champs selon les besoins du client
Supporte plusieurs méthodes de login: LDAP, HTTP_AUTH, BASIC_AUTH Intégration avec commande de source (SVN ou CVS) Il analyse le message de
log de SVN (ou CVS) pour ajouter les commentaires dans la bogue correspondante
Supporte une interface de Web service (SOAP) Ceci est un caractère très important pour intégrer Mantis dans autres systèmes Nous pouvons créer
un bogue, prendre les informations des bogues, des projets
2.2.2.Bugzilla
Bugzilla est un système de suivi des bogues qui nous aide à contrôler le
développement de logiciel Il est développé par Mozilla Le système de suivi des
Trang 14bogues permet à l'utilisateur ou aux groupes de réalisateurs de maintenir lesbogues exceptionnels dans leur produit efficacement Il est écrit en langagePERL et fonctionne avec MySQL et PostgreSQL et un server de Web.
Voici la liste principale des caractèristiques de Bugzilla
Logiciel libre
Méthodes multiples d'authentification
Webservices interface (XMLRPC) Ne supporte pas de création d'un projet via Webservices
Possibilités avancées de recherche
Rapports programmés (quotidien, hebdomadaire, horaire, etc.) par EmailBugzilla soutient ajouter les champs dans la base de données de boguepour adapter aux besoins du client
Bugzilla a des systèmes de rapport très avancés: rapport en table, rapport graphique
Création, mis à jours un bogue via email en utilisant Web interface
Contrôler la visibilité de bogue/l'édition avec des groupes.
Intégration avec Subversion et CVS
2.2.3.Autre applications
JIRA est une application de suivi des bogues, suivi des bogues, et application
de gestion de projets développée pour faciliter ce processus pour votre équipe.JIRA a beaucoup le caractère pour une application professionnelle de suivi desbogue comme: adapter le workflow aux besoins du client, supporter plusieursméthodes (email, RSS, XML, Excel, Web service) pour s'intégrer avec les autressystème (Subversion, CVS), mais il n'est pas un logiciel libre
Bugzero est un système de suivi des bogues basé Web Il est écrit enlangage Java, fonctionne avec la base de données sur le standard SQL92, etsupporte login via LDAP Il peut aussi intégrer avec SubVersion
2.3.Web Services
Un Web Service est un composant implémenté dans n'importe quel langage, déployé
sur n'importe quelle plateforme et enveloppé dans une couche de standards
Trang 15dérivés de XML Il doit pouvoir être découvert et invoqué dynamiquement pard'autres services L'objectif des Web Services est de faciliter l'accès auxapplications entre entreprises et ainsi de simplifier les échanges de données.Normalement, les Web services utilisent le protocole HTTP sur le port 80 pourles échanges de données Il est établi sur les standards existantes comme:SOAP (Simple Object Access Protocol), WSDL (Web Services DescriptionLanguage), UDDI (Universal Description, Discovery, and Integration).
2.3.1.Architecture générale
La figure 2 montre l'architecture générale du Web service
Figure 2: Architecture générale du Web service
Le fournisseur de service crée un Web service et définit ces services Ilpublie ces service avec le service d'enregistrement basé sur la normeuniverselles de description, de découverte, et d'intégration (UDDI)
Le client peut trouver les services qui sont supportés par fournisseur via l'interfaceUDDI UDDI va fournir des descriptions de service et URL (Uniform ResourceLocator) au client Avec ces descriptions, le client peut envoyer des requêtes aufournisseur et recevoir des réponse du fournisseur via le protocole HTTP
Trang 16WSDL (Web Services Description Language) est un format pour décrire uneinterface de services de Web Il est une manière de décrire des services et commentils devraient être liés aux adresses de réseau spécifiques WSDL a trois parties:
Les définitions sont généralement exprimés en XML et incluent les deux descriptions : les types de données et les messages qui
emploient ces types de données
Les opérations décrivent des actions pour les messages soutenus par le Service Web Il y a quatre types d'opérations :
✔ Oneway : Messages envoyés sans réponse requise
✔ Demande/réponse: L'expéditeur envoie un message et reçoit une réponse
✔ Solliciter la réponse : Une demande de réponse (Les détail dedéfinition pour cette action sont en cours)
✔ Notification: Messages envoyés à plusieurs récepteurs (la définition spécifique pour cette action est en suspens)
Des opérations sont groupées dans les port types Les port types définissent un ensemble d'opérations soutenues par le service Web.Services d'association ou de découverte (bindings) relient les port types à un port Un port est défini en associant une adresse de réseau à un port type Une collection de ports defini un service
2.3.3.XML-RPC
XMLRPC est un format d'appel de procédures à distance en utilisant leprotocole HTTP comme transport et XML comme codage XMLRPC est conçupour être aussi simple que possible, tout en permettant aux structures dedonnées complexes d'être transmises, traitées et retournées La figure 3montre la transmission de données en utilisant XMLRPC
Trang 17Figure 3: Transmission de données en utilisant XMLRPC
Voici un exemple de structures de données pour demander un login à distance
Trang 18pour structurer des messages qui peuvent être utilisés dans de simplestransmissions unidirectionnelles, mais il est particulièrement utile pour exécuterdes dialogues du type requêteréponse RPC (Remote Procedure Call).
Le protocole SOAP est composé de deux parties:
Une enveloppe, contenant des informations sur le message luimême afin de permettre son acheminement et son traitement
Un modèle de données, définissant le format du message, c'estàdire les informations à transmettre
Voici un exemple de message SOAP
Trang 19Chapitre 3 Propositions
Selon la tendance de développement de la plateforme de Picoforge, nous intégrerons beaucoup d'applications libres qui sont développées indépendamment avec Picoforge C'est très difficile si nous utilisons des RPC, CORBA ou un codage spécialisé pour intégrer ces applications dans Picoforge parce que ces applications indépendantes peuvent changer complètement leur architecture, leur fonctions Dans ce cas, nous ne tirerons pas le meilleur parti de leur nouveaux caractères ou nous devons recoder Dans
le contexte de ce stage, nous avons quelques propositions.
Utiliser les Web services pour la répartition de la plateforme Picoforge sur plusieurs de serveurs différents grâce aux raisons suivantes:
Un Web Service est un composant implémenté dans n'importe quel langage, déployé sur n'importe quelle plateforme
La plupart de logiciels actuels supporte une interface de Web service
Le changement de l'architecture du logiciel n'influence pas
l'intégration si l'interface du Web service ne change pas
Grouper les classes qui sont utilisées par plusieurs modules dans Picoforgecore comme dans la branche 2.0 et le projet Perseus Il a une interface unique vers les tables de la base de données Il est aussi un moteur qui reçoit des requêtes de l'utilisateur et transmet ces requêtes aux applications indépendantes pour
traitement Dans d'autre cas, Picoforgecore peut envoyer des requêtes à
plusieurs applications pour demander de traiter ou de synchroniser la données quand il a lieu des événements qui influenceront ces applications différentes, par exemple, ajouter ou supprimer un projet Dans ce module, nous utilisons des hooks pour faciliter l'intégration de nouveau modules.
Avec chaque logiciel, nous construisons une application (au sens
phpGroupWare) intégrée à Picoforge pour recevoir des requêtes à partir
de l'utilisateur et envoyer des requêtes aux applications de traitement par utilisation de Web service
Trang 20Dans la partie pratique de ce stage, nous proposons d'utiliser le logiciel qui s'appelle Mantis, c'est une application de suivi des bogues pour intégrer dans Picoforge pour les raisons suivantes Mantis
logiciel libre ;
supporte le Web service SOAP
; intégration avec SVN, CVS ;
supporte les fonctions APIs pour adapter aux besoins du client ;
peut être installé facilement et sont interface Web Service peut être configurée simplement ;
supporte les projets, les sousprojets et les catégories de
projet; intègre les authentifications par LDAP;
est écrit en PHP, qui est un langage très familier avec les
développeurs de Picoforge