Mémoire - Gérald KEMBELLEC

shrubberyweakInternet and Web Development

Oct 21, 2013 (4 years and 20 days ago)

85 views

Université Paris 8 Année Universitaire:2005 - 2006
MASTER 2 THYP
Rapport de stage à l’Université Paris 8
Wiki Informatique
Approche sémantique et ontologique
Présenté par Gérald KEMBELLEC
N° d’étudiant 19099
3
Remerciements:
Je tiens tout parti culi èrement à remer cier le Professeur Imad SALEH pour m’avoir
orienté dans les domaines ontologiques et sémantiques avec bienveillance et patience.
Mes remer ciements s'adressent à Monsieur Nasser BOUHAI pour son aide précieuse en
début de stage et ses conseils sur les concepts travaillés au cours de ce stage,mais aussi son
aide morale pour surmonter le stress et le découragement.Son enseignement notamment en
PHP et base de données tout au long de l’année fut une des matières premières de la
réalisation de ce wiki.
J’adresse mes remer ciements à Bernhard RIEDER pour ses conseils avisés en milieu et
fin de stage,l’excellence de ses cours de Javascript et AJAX sans lesquels une bonne partie de
la programmation du wiki aurait été impossible.
J'aimerais remerci er également à Monsieur Jean MEHAT de m’avoir demander créer un
wiki pour le département informatique comme support collaboratif de son cours,ce qui m’a
permis de faire mon stage professionnel de fin de MASTER sur mon lieu de travail,sans quoi
rien n’aurait été possible.
Merci également à Monsieur Vincent BOYER qui a pris le temps de lire ce rapport et
de donner son avis tant sur son fond que sur sa forme.
Un grand merci aussi à mon collègue et ami Raoul KUCZYK de m’avoir supporté
durant ma période de stage durant laquelle mes études empiétaient sur mon travail
professionnel.
Je remercie Damien LEGOUAIS qui m’a aidé dans mes recherches documentaires et
dans la modélisation du projet.
Je ne dois pas oublier de remercier tous les étudiants du département informatique qui
ont souffert de mon manque de disponibilité de juin à septembre.
Bien sur je ne peux terminer ces remerciements sans remercier ma fiancée Kim qui a
vécu ces quelques mois au même rythme que moi,dans le stress et quasiment sans vacances,
son aide morale m’a été vitale.
4
Table des matières
Remerciements:.........................................................................................................................3
Table des matières......................................................................................................................4
Table des figures....................................................................................................................7
Table équations......................................................................................................................8
Table des tableaux..................................................................................................................8
Introduction................................................................................................................................9
Introduction................................................................................................................................9
Plan de lecture.........................................................................................................................10
Contexte du stage.................................................................................................................11
Contexte du stage.................................................................................................................11
Présentation de l’Université Paris 8:...............................................................................11
Quelques éléments de définitions relatives au projet:.........................................................13
Le Wiki:...........................................................................................................................13
Le web sémantique:.........................................................................................................14
L’Ontologie informatique:..............................................................................................14
Moteur d’inférence:.........................................................................................................15
Système expert:...............................................................................................................15
Matériel et logiciels utilisés:...................................................................................................16
Ordinateur de développement et test:.................................................................................16
Serveur dédié.......................................................................................................................16
DIA:.....................................................................................................................................16
Analyse SI:..........................................................................................................................16
EasyPHP:.............................................................................................................................16
Médiawiki:..........................................................................................................................16
Macromédia Dreamweaver:................................................................................................16
Avant Projet..............................................................................................................................17
Historique du projet..............................................................................................................17
Objectif.................................................................................................................................17
La cible.................................................................................................................................17
Valeur ajoutée......................................................................................................................17
Contraintes techniques.........................................................................................................17
Risques à ne pas faire le wiki...............................................................................................17
Risques à faire le site............................................................................................................18
Risques inhérents au projet..................................................................................................18
Contraintes d’enchaînement de tâches.................................................................................18
Cahier des charges................................................................................................................19
I.Modélisation du wiki:..........................................................................................................21
I.1.La méthode UML:.........................................................................................................21
I.1.1.Le diagramme de classes:......................................................................................21
I.1.2.Le diagramme de cas d’utilisation ou use-case:.....................................................22
I.1.3.Le diagramme de composants:...............................................................................23
I.1.4.Le diagramme de déploiement:..............................................................................24
I.1.5.Le diagramme d’états/transitions:..........................................................................25
I.1.6.Le diagramme de séquence.....................................................................................26
I.1.7.Le diagramme de collaboration:............................................................................26
Conclusion de la modélisation UML:..............................................................................28
I.2.La méthode Merise:......................................................................................................29
5
I.2.1.L’étude préalable:..................................................................................................29
I.2.2.Le dictionnaire des données:..................................................................................30
I.2.3.Modèle conceptuel des données..............................................................................31
I.2.4.Modèle logique des données...................................................................................32
I.2.5.Fonctionnement du système....................................................................................33
I.2.6.Diagramme Acteurs flux.........................................................................................34
I.2.7.Modèle conceptuel des traitements.........................................................................35
I.2.8.Conclusion de la modélisation Merise et conclusion générale de la modélisation du
projet.................................................................................................................................36
I.3.Etude préalable des options techniques.........................................................................37
I.3.1.Choix entre développement et création...................................................................37
I.3.1.Option 1:Modification d’un wiki existant..............................................................38
I.3.2 Option 2:création complète d’un wiki...................................................................39
I.4.Conclusion de l’étude préalable du wiki.........................................................................40
II Le développement du wiki...................................................................................................41
II Le développement du wiki...................................................................................................41
II.1 La création de l’interface graphique..............................................................................41
II.2.L’intégration de la base de données..........................................................................44
II.3.L’accueil de l’utilisateur................................................................................................45
II.3.1 Gestion du login et de la session............................................................................45
II.3.2 Gestion des droits en fonction du login..................................................................48
II.4 Le référencement simplifié des articles.........................................................................49
II.4.1 Le principe de l’indexation mixte...........................................................................49
II.4.2 La visualisation contextuelle des mots clés............................................................50
II.5 Recherche d’articles......................................................................................................51
II.5 Recherche d’articles......................................................................................................51
II.5.1 Un moteur de recherche simple par mot clé...........................................................51
II.5.2 Un moteur de recherche en langage naturel simplifié............................................52
II.6.Création et édition d’articles..........................................................................................54
II.6.1 Rédaction d’un article.............................................................................................54
II.6.2.Confirmation de création d’article..........................................................................55
II.6.2 Edition et modification d’un article........................................................................56
II.7 Application web sémantique:Le flux RSS...................................................................57
II.7.1 Le principe du flux RSS.........................................................................................57
II.7.2 La mise en œuvre de RSS.......................................................................................58
II.7.3 L’exploitation des fils RSS par les étudiants..........................................................59
II.8 Plan du wiki...................................................................................................................61
II.8 Plan du wiki...................................................................................................................61
II.9 Conclusion de la création du wiki.................................................................................62
III.Etude d’une ontologie informatique...................................................................................63
III.Etude d’une ontologie informatique...................................................................................63
III.1 Etude des structures approchantes du concept d’ontologie.........................................63
III.1.1 Etude de deux portails qui peuvent s’apparenter à la représentation graphique
d’une ontologie informatique:.........................................................................................63
III.1.2.Deux systèmes d’ontologie couvrant le domaine informatique............................66
III.1.3.Conclusion de l’étude l’ontologie informatique....................................................67
III.2.Interfacer une Ontologie avec un navigateur..................................................................68
III.2.1.Lecture du fichier XML par le navigateur.............................................................68
III.2.1.Traitement XSL du fichier XML pour l’affichage par le navigateur....................69
III.2.3.Traitement du fichier XML en XSLT par Sablotron.............................................71
6
III.3.Les deux méthodes de référencement ontologique d’un article...................................74
III.3.1.L’indexation manuelle d’un article dans une ontologie........................................74
III.3.2.L’indexation automatique d’un article dans une ontologie...................................74
III.4.La recherche grâce à l’ontologie..................................................................................75
III.4.1.Reherche directe en langage naturel......................................................................75
III.4.2.Champs lexicaux et sémantiques...........................................................................75
III.5.Conclusion de l’étude d’une ontologie informatique...................................................75
IV.Le moteur sémantique d’indexation et de recherche..........................................................76
IV.1.Choix d’une méthode d’indexation.............................................................................76
IV.2.L‘indexation mixte......................................................................................................76
IV.2.1.L'analyse du texte.................................................................................................77
IV.2.2.Pondération des mots clés.....................................................................................77
IV.3.Conclusion du moteur d’indexation.............................................................................81
Optimisation du code et migration du projet............................................................................82
Perspectives d’évolution..........................................................................................................83
Conclusion:..............................................................................................................................84
Bibliographie............................................................................................................................86
Sources en ligne:.................................................................................................................86
Sources papier......................................................................................................................86
Annexes....................................................................................................................................87
Mots clés..................................................................................................................................94
7
Table des figures
Figure 1 Diagramme de classes................................................................................................21
Figure 2 diagramme de cas d'utilisation...................................................................................22
Figure 3 Diagramme de composants........................................................................................23
Figure 4 Diagramme de déploiement.......................................................................................24
Figure 5 Diagramme état transition..........................................................................................25
Figure 6 Diagramme de séquence............................................................................................26
Figure 7 Diagramme de collaboration......................................................................................27
Figure 8 M.C.D........................................................................................................................31
Figure 9 MLD...........................................................................................................................32
Figure 10 Diagramme acteurs/flux.........................................................................................34
Figure 11 M.C.T.......................................................................................................................35
Figure 12 Exemple de réalisation d'un wiki avec médiawiki...................................................37
Figure 13 L'éditeur de médiawiki.............................................................................................38
Figure 14 Création de l'interface avec dreamweaver...............................................................41
Figure 15 Détail d'intégration d'une icône logo dans la barre de navigation...........................42
Figure 16 Evolutions des sources du bouton............................................................................42
Figure 17 Affichage des boutons sans les images....................................................................42
Figure 18 affichage des boutons en condition normale............................................................43
Figure 19 Login et mot de passe..............................................................................................45
Figure 20 Aide contextuelle à la compréhension des droits utilisateurs..................................45
Figure 21 Gestion des droits.....................................................................................................48
Figure 22 Exemple de code tenant compte des niveaux d'utilisateur.......................................48
Figure 23 Affichage contextuel des mots clés.........................................................................50
Figure 24 Détail sur le résultat d'une recherche simple...........................................................51
Figure 25 Cas de résultat négatif à une recherche....................................................................51
Figure 26 Affichage verbeux (mode de debbugage) d'une recherche en langage naturel........52
Figure 27 Représentation schématique d'une requête..............................................................52
Figure 28 Création d'un article.................................................................................................54
Figure 29 confirmation de la création d'article et chois de mots clés......................................55
Figure 30 Edition d'un article...................................................................................................56
Figure 31 Flux RSS du site du journal'LE MONDE'..............................................................57
Figure 32 S'incrire à un fil RSS................................................................................................59
Figure 33 Détail d'utilisation de RSS.......................................................................................59
Figure 34 Flux RSS à Copier dans le logiciel de News...........................................................60
Figure 35 Lecture du fil RSS du wiki du bocal dans GreatNews............................................60
Figure 36 Représentation du wiki............................................................................................61
Figure 37 Portail Wikipédia.....................................................................................................63
Figure 38 Portail"Comment ça marche?"................................................................................64
Figure 39 Affichage de l'ontologie en xml sans traitement......................................................68
Figure 40 Feuille de style XSL de l'ontologie..........................................................................69
Figure 41 Affichage de l'ontologie Informatique avec traitement xsl......................................70
Figure 42 Chargement de l'ontologie et de sa feuille de style avec traitement php intégrée...71
Figure 43 Traitement mixte XSLLT/PHP avec Sablotron.....................................................72
Figure 44 Gestion globale du traitement d'extraction XML vers SQL via XSLT...................72
Figure 45 Intégration automatisée de l'ontologie dans une base de données...........................73
Figure 46 Tables Noeud de l'ontologie et Association............................................................73
Figure 47 Fichier de configuration du wiki..............................................................................82
8
Table équations
Équation 1Calcul du poids d'un mot clé...................................................................................78
Équation 2 Fréquence d'un mot clé..........................................................................................78
Équation 3 Algorithme choisi de pondération d'un mot clé.....................................................79
Table des tableaux
Tableau 1 Contrainte d'enchaînement des tâches.....................................................................18
9
Introduction
Objectifs du stage
Dans ce stage,nous avons réalisé un wiki pour le département informatique de
l’université Paris 8 intégrant un moteur de recherche basé sur le langage naturel.La
motivation de ce stage a été de créer un espace de discussion autour des enseignements pour
les utilisateurs..
L’ensemble du département doit pouvoir écrire des articles,les compléter,les modifier
ou simplement donner leur opinion.À ce wiki,voulu ontologique,sera associé un moteur de
recherche sémantique permettant de trouver les informations dans le système et de les
restituer sous une forme plus appropriée.
Ce moteur de recherche doit être l’interface d’un moteur d’inférence qui comprenne le
langage naturel,c'est-à-dire que le moteur devait être à même de saisir le sens d’une phrase
humaine et de l’assimiler afin d’en extraire l’essence.
De plus ce même moteur,système expert de notre projet doit être à même de repérer la
ou les cible(s) de la recherche dans un contexte sémantique,c'est-à-dire que les homonymes et
synonymes doivent être gérés ce qui complique notablement la tâche.
Pour rendre le moteur sensible à une recherche sémantique il faut être à même de
synthétiser les articles au sein d’une arborescence de connaissances.C’est ce que nous
appellerons le moteur d’inférence pour l’indexation ontologie qui sera basé sur le même
système expert.
Ce stage professionnel de fin d’études valide le MASTER,il a pour objectif de pré
professionnaliser les étudiants,de les initier au travail dans le monde de l’entreprise.Etant
salarié de l’Université comme administrateur système et réseau,je ne pouvais m’absenter 5 à
6 mois du centre de calcul.J’ai donc effectué ce stage principalement sur mon temps libre et
durant les vacances entre Juin et Septembre 2006.
10
Plan de lecture
Après avoir défini les objectifs du stage,nous allons commencer par présenter le
contexte du stage,c'est-à-dire l’université Paris 8,plus précisément L’UFR6 et le centre de
calcul.
Ensuite nous donnerons quelques éléments de définitions de concepts en relation avec
notre projet.Nous présenterons également le contexte technique du stage,tant matériel que
logiciel.
La suite de ce rapport sera composée d’une partie d’avant-projet et de cahier des
charges,ce qui nous conduira naturellement vers la modélisation du projet et les choix
techniques relatifs qui en découlent.
Nous pourrons à partie de là assister aux étapes de la création du wiki.Nous nous
baserons de notre travail sur le wiki pour adosser le projet d’indexation et de recherche
ontologique et sémantique.
Nous effectuerons une analyse comparative d’éléments d’ontologie,de domaine
informatique pour définir celle qui sera ensuite intégrée au projet pour affiner le
référencement.
Cette analyse nous permettra d’implémenter une ontologie dans le wiki par le biais
d’un traitement PHP/XSLT.
L’étape suivante consiste à réfléchir et à modéliser un système d’indexation mixte
efficace que nous intégrerons au wiki afin d’optimiser le système de recherche sémantique.
Enfin nous expliciterons nos conclusions sur l’ensemble de ce projet en résumant
chaque chapitre.
11
Contexte du stage
Présentation de l’Université Paris 8:
Historique:
À l’origine l’Université Paris 8 [ P8 ] se trouvait à Vincennes.L’Université était alors
expérimentale au même titre que celle de Paris 9 – Dauphine créée à la même époque dans le
cadre des suites des événements de mai 1968.Elle fut d’emblée gérée selon le principe de
l’autonomie universitaire issue de la loi Edgar Faure à la fin des années 1960.Le département
informatique fut considéré comme très performant dès le départ.
Le site principal de l’Université Paris 8 est situé 2,rue de la liberté à Saint-Denis (93)
depuis son déménagement du site au Bois de Vincennes en 1978.Le domaine public de
l’Université est ouvert librement aux étudiants,aux enseignants,au personnel IATOSS de
l’Université.Les invités et intervenants extérieurs sont autorisés à y pénétrer pour assurer les
fonctions ou les interventions qui nécessitent leur présence.
12
L’Unité de recherche et de formation langage,informatique et technologie:
13
Quelques éléments de définitions relatives au projet:
Le Wiki:
Le mot wiki vient de l’hawaiien « wiki wiki » qui signifie « rapide » ou « informel ».
Le wiki était à la base un site web dynamique permettant à toute personne de modifier
directement les pages afin d’apporter son point de vue ou des informations complémentaires
éventuellement oubliées par l’auteur du sujet.[WIKI]
Pour des raisons de fonctionnalité,le wiki a évolué vers un système de droit d’accès en
écriture plus ou moins important selon l’utilisateur et la sensibilité du sujet.Le wiki doit être
simple d’utilisation pour rester accessible à tous.C’est avant tout un travail collaboratif qui
est assuré par tout le monde contrairement aux weblogs qui se basent sur un travail
uniquement du créateur et de quelques éventuels auteurs.
En Janvier 2001,une encyclopédie du nomde Wikipédia [WIKIPEDIA] basée sur ce
système a vue le jour.Ce travail collaboratif est réalisé par des volontaires,sur un site Web
utilisant la technologie wiki Wikipédia est libre,grâce à un contenu placé sous la licence de
documentation libre GNU [GNU],souvent abrégée sous la forme GFDL.Le texte de
Wikipédia est modifiable et réutilisable,y compris commercialement,à condition de respecter
les conditions précisées par cette licence.Ce contenu est également gratuit,afin de favoriser
l'accès à la connaissance à un maximum de personnes.En Août 2006,la Wikipédia
francophone compte 351 238 articles et 47 869 fichiers multimédia.Pour l'ensemble des
langues du projet,le nombre d'articles a dépassé les 4 millions.
Nupedia [NUPEDIA] était un projet initié en même temps que Wikipédia qui s’en
distinguait par une politique stricte pour l'intégration des nouveaux articles,le comité
scientifique visant à en faire une encyclopédie de qualité comparable aux encyclopédies
professionnelles sur le marché.Malgré la rareté des contributeurs qui lui fut fatale,Nupedia
été considérée comme plus rigoureuse.Nupedia fut définitivement fermée en septembre 2003.
Au moment où elle cessa ses opérations,24 articles avaient été intégrés à l'encyclopédie,3
articles existaient sous une double forme et 74 articles étaient en développement.
Le problème que peut poser ce genre de système vient du fait qu’une personne mal
intentionnée,ignorante ou en désaccord avec l’auteur peut effacer toute une page ou diffuser
de fausses informations.Pour pallier à ce genre de problèmes,le wiki a un système
d’historique pour pouvoir retrouver la page d’origine ainsi qu’un système de verrouillage de
pages sensibles.
14
Le web sémantique:
Etymologiquement sémantique vient du grec sem,qui veut dire donner du sens.L’idée
du web sémantique web sémantique est de faire comprendre le langage humain,dit langage
naturel,aux ordinateurs.
L'idée du web sémantique c'est de permettre une recherche intelligente sur le web,
faite par des ordinateurs et basée sur des définitions qu'ils puissent « comprendre »,des
définitions données pour le monde entier en mettant à disposition un langage de recherche,
qui complète le web d'aujourd'hui,et qui rendra son contenu intelligible par des applications
différentes.Autrement dit,qui lui donne un sens,c'est la signification du mot « sémantique ».
[WEB SEMANTIC]
Il est nécessaire d’utiliser un langage de description précis et normalisé pour faire
fonctionner le web sémantique.
Resource Description Framework,le RDF est un modèle de graphe pour décrire les
méta données et en permettre un traitement automatique.Une des syntaxes de ce langage est
RDF/XML.En annotant des documents non structurés et en servant d'interface pour des
applications et des documents structurés RDF permet une certaine interopérabilité entre des
applications échangeant de l'information non formalisée et non structurée sur le Web.Un
document structuré en RDF est un ensemble de triplets.Un triplet RDF est une
association entre le sujet,son objet et le prédicat.Dublin Core
1
ou RSS
2
version 1 sont deux
technologies basées sur le RDF.
L’Ontologie informatique:
En philosophie,l'ontologie (du grec oν, oντος, participe présent du verbe être) est
l'étude de l'être en tant qu'être,c'est-à-dire l'étude des propriétés générales de ce qui existe,
c'est-à-dire l'étude des propriétés générales de ce qui existe[ONTOLOGIE]
En informatique le mot ontologie a été repris pour désigner un moyen de représenter
les concepts,objets et entités ainsi que leurs relations.Pour cela,on classe les informations
dans une architecture structurée et agencée de manière évolutive.Un répertoire de règles
d’inférences est utilisé pour faire le lien et associer les différents objets et entités entre eux.
Les ontologies servent pour le vocabulaire,la structuration et l’exploitation des méta
données,comme représentation pivot pour l’intégration des sources de données hétérogènes
pour décrire les services Web,et en général,partout où il va être nécessaire d’appuyer des
modules logiciels sur des représentations sémantiques nécessitant un certain consensus
[ONTOLOGIE].
Le langage ontologique du web,le OWL est une des nombreuses branches du XML,
qui se basa sur une syntaxe RDF.Il fournit les moyens pour définir des ontologies Web
structurées.Le langage OWL est basé sur la recherche effectuée dans le domaine de la
logique de description.OWL permet de décrire des ontologies,c'est-à-dire qu'il permet de
1
Dublin Core est un système de méta données pour le classement bibliographique.
2
RDF Site Summary ou Rich Site Summary il s’agit d’un résumé contenu pour un site web.
15
définir des terminologies pour décrire des domaines concrets.Le domaine qui nous intéresse,
l’informatique,a été décrit en 1998 par l’ ACM Computing Classification System.Plus
récemment le groupe de hacker féminin Lot3k
3
et son « L0T3K COMPUTER DECIMAL
CLASSIFICATION ».Ces deux modèles d’ontologie informatique seront abordés
ultérieurement.
Moteur d’inférence:
Un moteur d’inférence est un programme réalisant les déductions logiques d'un
système expert à partir d'une base de connaissances (faits) et d'une base de règles.Les règles
sont utilisées pour manipuler les connaissances et aboutir à des conclusions judicieuses.
Système expert:
Il s’agit d’une application capable d'effectuer dans un domaine des raisonnements
logiques comparables à ceux que feraient des experts humains de ce domaine.Il s'appuie sur
des bases de données de faits et de connaissances,ainsi que sur un moteur d'inférence,lui
permettant de réaliser des déductions logiques.
3
L0T3K:Le Premier Féminin High-tech à vocation interplanétaire
16
Matériel et logiciels utilisés:
Ordinateur de développement et test:
Nous avons utilisé un ordinateur portable Acer,processeur Intel Pentium IV 2Ghz
avec une mémoire vive de 1Go sous le système d’exploitation Microsoft Windows XP.
Serveur dédié
Nous avons loué un serveur dédibox,filiale free à Courbevoie.Les serveurs dédiés
sont équipés du processeur VIA C7 2 GHz.Ce processeur bénéficie de nombreuses
fonctionnalités notamment le chiffrement SSL matériel des données en (AES-256) à plus de
20 Go/sec.De par ses fonctionnalités de chiffrement matériel,ce processeur est idéal pour les
applications sécurisées de e-commerce,paiements en ligne et VPN haute performances...
Un giga de mémoire vive permet une confortable charge du serveur en cas d’affluence.
Dans cet esprit,les disques durs sont en SATA2 pour un accès plus rapide aux données.
Comme cela ne coûte pas plus cher nous avons mis le site en HTTPS.Notons que l’OS de ce
serveur est une Gentoo ( un linux ).
DIA:
C’est un logiciel de réalisation de diagrammes (réseau,circuit électrique,programme
informatique,etc.).Initialement pour Linux et développé pour l’interface graphique GNOME,
il peut être installé sous Windows.Nous nous en sommes servi au niveau de la modélisation
UML.
Analyse SI:
C’est un logiciel programmé en JAVA permettant de modéliser des modèles
conceptuels et logiques de données.Nous l’avons utilisé lors de la modélisation avec la
méthode merise.
EasyPHP:
Ce programme installe et configure automatiquement un environnement de travail
complet sous Windows permettant la mise en oeuvre du langage de script PHP ainsi qu'un
système de bases de données (MySQL).
MediaWiki:
MediaWiki est un logiciel wiki créé par Magnus Manske et écrit en PHP.Initialement
développé pour Wikipédia,il sert également de base pour d'autres projets de la fondation
WikiMedia et inclut des fonctionnalités spécifiques à l'encyclopédie,comme la gestion des
espaces de noms,la distinction entre les pages à contenu encyclopédique et les pages de
discussions associées,etc.
Macromedia Dreamweaver:
Dreamweaver est un outils de développement web qui permet de concevoir,de
développer et de maintenir des applications et des sites web répondant aux normes actuelles
(XHTML,CSS,…)
17
Avant Projet
Historique du projet
Le site BocaWiki n’existe actuellement pas;on ne trouve aucune présence sur le Web
une présence d’un wiki dédié au département informatique.Sur la plate forme Claroline
[CLAROLINE] http://ead.cs.univ-paris8.fr
qui est le serveur de formation à distance du
département,mis à la disposition de l’ensemble de l’UFR.6 Cependant,bien que pleinement
fonctionnel,ce wiki « en lit » ne correspond pas aux attentes des enseignants du département.
Objectif
Le projet Bocawiki devra proposer quelques articles,des débuts ou résumés d’articles,
qui seront immédiatement accessible en lecture ou à l’édition par interface d’accueil
immédiatement reconnaissable et intuitive.La potentialité de navigation transversale autorisée
par l’ontologie permettra aux lecteurs un accès intuitif et rapide aux articles accessibles en
ligne et aux différents services proposés.
Il y aura deux façons d’accéder au site:via une interface Web publique sur le Net et
via un système de fils RSS,pour un contact plus efficace.
La cible
Le public visé regroupe les étudiants et jeunes travailleurs étudiants du centre calcul de
Paris 8,des jeunes de 18 à 35 ans;mais aussi des enseignants,des thésards et des chercheurs
soucieux de mettre des idées en ligne et de les laisser évoluer.
Valeur ajoutée
La démarche est clairement orientée C2B (Consumer to Business)[C2B],l'intention
principale de créer un espace de réflexion communautaire autours d’article liés à
l’informatique.
Le but secondaire est de générer des bénéfices en plaçant des liens Adsens,tout du
moins de permettre de rembourser son développement,sa maintenance et la location du
serveur.
Contraintes techniques
Le public concerné n’utilise pas Internet Explorer;et la visualisation se fait sur des
écrans 17 ‘’ pouces CRT d’une résolution de 1280 par 800 px.il faut donc développer un site
adapté à ce niveau d’équipement.Cela va nous permettre de sortir du traditionnel 760 par
420 pixels prévu pour les niveaux d’équipement moyen.Dans la mesure du possible nous
testerons le wiki sous les deux environnements,Firefox et Internet Explorer en privilégiant les
utilisateurs internes avec Firefox.
Risques à ne pas faire le wiki
Le risque à ne pas faire ce projet serait de continuer à utiliser un wiki qui n’est
apprécié ni des enseignants ni des étudiants.De ce risque découle le second,qui est le déficit
en terme d’image de marque [BRANDING] pour les enseignements du département
18
Risques à faire le site
On peut penser qu’il y a un risque que l’impact sur l’enseignement ne soit pas celui
escompté.En effet si le wiki est un succès,il est possible que les cours deviennent du e-
learning [E-LEARNING] sans présentiel.Le problème serait que les coûts de gestion du site
ne soient pas couverts par les bénéfices engendrés par la publicité Adsens.
Risques inhérents au projet
Le principal problème est un problème de temps;en effet,à cause de notre travail de
gestion du centre de calcul,nous ne disposons que de deux mois et demi pour réaliser
l’ensemble du projet.Sur ces deux mois un mois de vacances seulement pendant lequel nous
serons à plein temps disponibles pour nous concentrer au projet.L risque est donc d’être hors
délai.
Contraintes d’enchaînement de tâches
Rédactionnel Avant
projet
Cahier des
charges
Diagram
mes
Diagram
mes
Notes Rédaction du
document
d’exploitation
Recherches Sur les
concepts
d’ontologie
Etudes
comparatives
Bench-
marking
Sur les styles
des autres
wikis
Etapes clés UML MERISE BDD +
Arboresc
ence
DEVELOPPEM
ENT +
PHASE de
TEST
MISE en
PRODUCTION
Upload
Serveur
Externe
+TEST externe
Graphisme/
mise en page
Charte
graphique
Dessin
des logos
Ecriture des
CSS
Tableau 1 Contrainte d'enchaînement des tâches
Axe temporel 
Sur ce tableau lisible de gauche à droite,les tâches à effectuer sont notées par
catégories sur l’axe du temps.On ne peut commencer les tâches d’une colonne sans avoir
terminé celles de la colonne précédente.Nous nous sommes donc attachés autant que possible
à respecter cet ordre.
19
Cahier des charges
cahier des charges du wiki du bocal
Objectif
- Information:Enseignement et travail collaboratif exclusivement consacré à
l’informatique
- Promotion:Eventuellement mise en place d'une plate forme adsense de google qui met
en relation des sites entre eux,par un système de promotion réciproque.
Public visé
- Clients et futurs clients:Département informatique de l'université Paris 8
- Partenaires:Département informatique de l'université Paris 8
- Adhérents et futurs adhérents:Département informatique de l'université Paris 8
Message
Ce site est un espace de travail collaboratif en ligne,complément des enseignements
présenciels et du e-learning du département sur http://ead.cs.uiv-paris8.fr
Interlocuteur
Gérald KEMBELLEC
Email:gerald.kembellec@gmail.com
Poste occupé:Administrateur Système
& réseau du centre de calcul
Tél:6584
Raoul KUCZYK
Email:progman@bocal.cs.univ-paris8.fr
Poste occupé:Administrateur Système
& réseau du centre de calcul
Tél:6584
Langues
- Français
Ressources apportées
- Location d’un serveur externe pour effectuer des tests sur une autre plate forme
Spécifications techniques
- Hébergement
- Moteur de recherche
- Nommer chaque page dans la balise TITLE par des titres parlant
- Remplir les balises META pour les descriptions et les mots clés de chaque page
- Préciser la date de création et des mises à jour sur la page d'accueil,voir toutes les
pages
- Pouvoir revenir sur l'accueil en cliquant sur le logo de n'importe quelle page du site
- Appliquer les styles CSS pour les mises en page et présentations
- Tester le site sur plusieurs configurations
Aspect et qualité du site
- Site élaboré aux couleurs douces
- Exemple n°1 http://www.wikipedia.fr
Présentation
- Homogène
- Claire
- Concise
- Simple
20
- Intuitive
- Sobre
- Couleurs dominantes:Nuances de bleu et blanc.
- Typologie:arial
Graphisme
- Doux
- Fin
- Frais
Forme du design
- Formes carrées et/ou rectangles
- Lignes fines
Contraintes
- Aucune contrainte
Libertés
- Libre choix de la mise en page
Interactivité
- Email (lien contact)
Contenu
- Nombre de pages:4
Page 1:Accueil
La page principale qui sert de portail avec possibilité de se loguer et d'effectuer des
recherches,ainsi que de créer un article.
Page 2:Création de page
Cette page permet d'écrire le texte ainsi que le résumé de l'article sur un éditeur
sommaire et de choisir les mots clés associès.
Page 3:Edition de page
Cette page permet d'éditer le texte de l'article choisi sans pouvoir modifier les mots
clés associès,ni le résumé.
Page 4:Création d'un nouvel utilisateur
Cette page va permettre de s'inscrire comme utilisateur du site et d'acceder aux
fonctions avancées.
Référencement
- Annuaires et moteurs de recherche français
- adsense de google
Maintenance
- Aucune maintenance
Délai
- 3 mois
Budget
- Un coût d'hébergement de 30 euros par mois
21
I.Modélisation du wiki:
Afin de mener à bien notre projet et de créer un point de départ,nous avons utilisé des
outils de modélisation tels que les méthodes UMLet Merise.
I.1.La méthode UML
4
:
UML est une méthode de modélisation servant à analyser un système.A cette fin
différents diagrammes mettant en valeur un aspect différent du système sont utilisés.UML est
devenu une norme de l'OMG (Object Management Group) en 1997.Celui-ci est un organisme
à but non lucratif regroupant les principaux acteurs du secteur informatique dont le rôle de
produire des standards informatiques permettant l'interopérabilité des systèmes.
I.1.1.Le diagramme de classes:
Il s’agit d’un schéma qui représente le concept général d’un système.On y retrouve les
interactions entre les différents objets de celui-ci.
Notons sur la figure la hiérarchie voulue entre les types d’utilisateurs.L’utilisateur de
base que nous appèlerons visiteur interne (identifié par son adresse IP) sera le père de toutes
classes suivantes jusqu’à l’hériter final:l’administrateur qui possède toutes les fonctions de
ses pères.
Figure 1 Diagramme de classes
4
UML = Unified Modelling Language
22
I.1.2.Le diagramme de cas d’utilisation ou use-case:
Il peut être assimilé à une table des matières concernant les exigences fonctionnelles
d’un système.Il a pour but de clarifier et d’organiser les besoins des utilisateurs.Pour cela on
se met à la place de l’utilisateur pour imaginer la façon dont il verra le produit et dont il
l’utilisera.
Ce schéma explicite les observation du schéma précèdent sur les droits en cascade des
utilisateurs,selon leur place dans la hiérarchie d’utilisation du site.
Figure 2 diagramme de cas d'utilisation
23
I.1.3.Le diagramme de composants:
Il sert à visualiser les dépendances entre les différents composants du système afin
d’obtenir la meilleure organisation possible entre les modules.On y décrit l’architecture d’une
application avec ses fichiers sources,ses librairies,ses exécutables,etc.
L’utilisateur une fois connecté à la page d’accueil aura selon son niveau d’accès le
droit d’effectuer une,deux,ou trois des tâches intégrées au pavé Sujet.Selon la tâche choisie,
l’action sera finalisée,ou pas par une sauvegarde.
Figure 3 Diagramme de composants
24
I.1.4.Le diagramme de déploiement:
Ce schéma est souvent rattaché au diagramme de composants à cette différence qu’il
s’attache uniquement à la disposition physique des matériels d’un système et à la répartition
des composants sur ces matériels.
Le décryptage de ce schéma commence à la source des données,sur le serveur de
données (MySQL,MS ACCES,ORACLE),c'est-à-dire la machine serveur intégrant les
fonctionnalités de base de données.Ces données sont chargées lors des requêtes sur le serveur
web,le serveur sur laquelle est lancée le démon http (Apache,TOMCAT,IIS).Enfin,Les
données sont chargées au travers du navigateur sur la machine cliente.
On peut également espérer qu’il existe une méthode de sauvegarde des données
indépendante de la machine sur laquelle sont stockées les données.Cette sauvegarde peut être
sur une simple bande,sur disque ou encore sur un disque dur distant grâce à NFS
5
.
Il est tout à fait possible que plusieurs services soient regroupés sur une même
machine serveur.C’est le cas notamment pour les plateformes LAMP
6
comme celles ou nous
migrerons le wiki en fin de stage,mais aussi EasyPHP,et IIS/Ms ACCES.
Lors du développement les navigateurs,le serveur web,la base de données,et les
sauvegardes seront stockés sur la même machine.Cependant par précaution des sauvegardes
incrémentielles auront lieu en SFTP vers le serveur web.
Figure 4 Diagramme de déploiement
5
Network File System,système de partage de disque à travers le réseau
6
Linux Apache MySQL PHP
25
I.1.5.Le diagramme d’états/transitions:
Ce schéma permet de schématiser les états possibles d’un système.On identifie trois
types d’états,l’état initial,les états de transition et l’état final.Le but est de réaliser un schéma
facilement compréhensible retraçant tous les parcours possibles entre les différents états.
Une fois sur la page d’accueil,l’utilisateur peut effectuer un nombre fini de tâches.La
première est de consulter un article par une recherche.Notons que la page d’accueil est un
article,qui ne nécessite donc pas de recherche.Pour les autres articles,la consultation passe
forcément par une recherche.
Certaines actions nécessitent,selon le contexte,de s’authentifier.Par exemple pour
modifier un article dont le niveau à celui de l’utilisateur non-logué,il faut se connecter pour
augmenter son niveau d’accès.
Certains utilisateurs ont des droits de modération et d’administration avancés.Les
enseignants,peuvent bien sur modifier les articles,mais aussi clore un sujet ou augmanter le
niveau d’un sujet considéré comme « à controverse ».
Figure 5 Diagramme état transition
26
I.1.6.Le diagramme de séquence
Ce schéma permet de montrer les interactions entre les différents éléments d’un même
système au fil du temps.Dans un diagramme de séquence,on met surtout en évidence le
temps et on décrit succinctement les opérations.
Un visiteur aura une forte interaction avec les articles (sujets) chaque recherche
entraînera une retours qu’une réponse ait été trouvée ou pas.Les actions n’entraînant pas de
feedback immédiat sont la consultation,la création et l’édition.
Cependant,la phase d’enregistrement (que nous distinguée) nécessite une
confirmation de l’utilisateur pour être effective.
Figure 6 Diagramme de séquence
I.1.7.Le diagramme de collaboration:
D’un abord peu lisible,il est fait très proche du diagramme de séquence du fait qu’il
montre lui aussi les interactions entre des composants au fil du temps.Mais,dans le
diagramme de collaboration,c’est surtout l’interaction entre les éléments logiciels qui est
mise en évidence.
27
Figure 7 Diagramme de collaboration
28
Conclusion de la modélisation UML:
La modélisation UML,si longue et fastidieuse soit elle,permet aux différents acteurs
d’un projet,de bien comprendre la complexité de tous les aspects d’un projet.Les chefs de
projets,ingénieurs,techniciens mais aussi designer et clients se retrouvent autours d’une table
pour se mettre d’accord sur le projet.La multitude des graphes permet à tout le monde de
trouver un vecteur normalisé (et simple à comprendre) de visualisation du projet.
Il existe d’autres diagrammes,mais nous ne les avons pas utilisés pour modéliser le
projet que nous avons dû mettre au point.
Au départ,nous avions opté pour une solution simple qui consisterait à laisser,à tout
utilisateur quel qu’il soit,les droits de modification et de création des articles.Seulement pour
une université,il est gênant que les cours des professeurs puissent être sabotés par n’importe
quel utilisateur extérieur.
Au final,notre choix a donc été de fonctionner avec différents niveaux d'accès.Les
personnes se connectant de l’extérieur de l’université et n’étant pas « logués » n’auront que le
droit de consulter le site,puis à l’intérieur de l’université il y aura différents accès selon si
l’on se « logue » ou pas.
Une fois cette partie de la modélisation terminée,nous avons pu nous y appuyer pour
modéliser notre système de données.
29
I.2.La méthode Merise:
Après avoir établi de manière claire le mode de fonctionnement du site nous nous
sommes penchés sur la modélisation du système de données.La méthode Merise est adaptée à
ce type de travail,puisqu‘elle permet de faire émerger un squelette robuste de base de
données.
Cette méthode est basée sur la séparation des données et des traitements à effectuer en
plusieurs modèles conceptuels et physiques.La séparation des données et des traitements
assure une longévité au modèle.En effet,l'agencement des données n'a pas à être souvent
remanié,tandis que les traitements le sont plus fréquemment.
I.2.1.L’étude préalable:
Nous avons donc,dans un premier temps,utilisé la méthode de l’interview,qui
consiste à formaliser les questions relatives à la problématique du projet afin de bien les
garder à l’esprit dans la suite de la modélisation.
- Pourquoi un wiki?
- C’est un travail collaboratif visant à publier des articles sur différents sujets et de les
regrouper afin de faire une sorte d’encyclopédie (plus ou moins ciblée sur un domaine).
- Alors pourquoi le nom wiki et pas encyclopédie?
- Le wiki permet à tout le monde d’ajouter sa pierre à l’édifice.Un utilisateur qui voit
un sujet contenant des erreurs,que ce soit de la syntaxe,de l’orthographe ou un contresens,
peut changer de lui-même cette erreur,ce qui permet d’avoir des sujets bien plus précis et
bien plus complets plus rapidement que si l’on devait attendre que l’administrateur change
seul toutes les erreurs.
- Donc tout le monde peut modifier le site comme bon lui semble?
- Non,afin d’éviter des problèmes de pertes de données par un utilisateur malveillant
qui voudrait tout effacer,on peut mettre en place un système de contrôle d'accès à certains
utilisateurs avec différents niveaux de pouvoirs.Certains n’auront que le droit de lecture,alors
que d’autres pourront créer,modifier ou même fermer des sujets.Les personnes autorisées à
créer ou modifier des sujets resteront nombreuses,de plus l’inscription au wiki est totalement
libre.
- Comment un article est-il indexé?
- Dans une base de données seront stockés les mots clés de chaque article.En fonction
de ces mots clés,le moteur va générer un contexte sémantique et positionner l’article dans une
ontologie,donc à un ou plusieurs endroits.
- À quoi sert une ontologie?
- Une ontologie en informatique sert à architecturer de manière structurée un concept.
Pour résumer,tout ce qui a trait au domaine d’un concept (par exemple à l’informatique) est
répertorié (sous forme d’arbre la plupart du temps) et des liens sont créés entre les mots afin
de pouvoir faire appréhender le langage humain à la machine grâce au web sémantique.
30
- Les mots clés doivent-ils être entrés dans la base de données manuellement?
- Non.Les mots clés peuvent être signifiés par l’auteur,mais ils sont aussi ajoutés selon
le nombre d’occurrences du mot dans le texte ou encore s'ils apparaissent dans le résumé.On
peut donc parler de méthode d’indexation mixte.
- Mais il peut y avoir beaucoup de mots inutiles revenants souvent dans un texte!
- Non,à l’aide d’un anti-dictionnaire les mots courants de la langue seront ignorés.
L’anti-dictionnaire est un dictionnaire qui contient les mots les plus utilisés,mais qui ne sont
pas forcément pertinents dans une recherche.
- Y aura-t-il d’autres moyens de retrouver un article?
- Oui,lorsque l'on a déjà vu un article,on disposera d'informations permettant un accès
plus rapide à celui-ci comme le nom de l'auteur.On pourra aussi effectuer une recherche par
date de modification.
I.2.2.Le dictionnaire des données:
Le dictionnaire des données sert à répertorier toutes les données utiles à l’élaboration
du modèle conceptuel des données.
Libellé Nature Valeur Longueur Commentaire
N°Article Smallint NotNull 2
Titre Char NotNull 50
Resume Char 350
Contenu Char NotNull 20000
Date Date NotNull 10
Auteur Char 50
Version Smallint NotNull 2 Un article a plusieurs versions gardées en
historique
N°Utilisateur Smallint NotNull 2
ID Char 20
Mdp Char 20 Mot de passe
Valeur Smallint NotNull 2 La valeur de la session indique le niveau de
droit de l'utilisateur
Mot clé Char 50 Mot clé
PoidsMot Smallint 2 Importance du mot clé
Pour évaluer la volumétrie d’un article,on additionne les valeurs de tous les champs
puis on multiplie par le nombre d'articles.Après évaluation,il est nécessaire de disposer d’un
espace disque minimum de 103 Méga-octets pour stocker 5000 articles.
31
I.2.3.Modèle conceptuel des données
Le modèle conceptuel des données sert à représenter le système d’information en
montrant les interactions et les liens entre les différents éléments du système.
Figure 8 M.C.D
Dans ce schéma,il apparaît que l’utilisateur peut avoir écrire et éditer les articles,que
chaque article ainsi créé sera indexé par un ou plusieurs mots clés.Ces mots clés auront eux
même des relations entre eux,comme la synonymie.
32
I.2.4.Modèle logique des données
Le modèle logique des données est le passage entre la description conceptuelle et la
description physique du système d’information.
Figure 9 MLD
La relation entre les articles et les mots clés se fait par la création d’une clé primaire
par l’association de deux clés étrangères,les clés primaires de mot_cle et de article.On
n’oublie pas d’ajouter le poids du mot,qui se trouve être la valeur de représentation du texte
par le mot clé dans le contexte de l’ensemble du corpus.
33
I.2.5.Fonctionnement du système
Le fonctionnement du système est décrit afin de mieux représenter les différentes
étapes qui peuvent avoir lieues lors de son utilisation.
Le client va commencer par se connecter sur la page d’accueil du wiki.Sur la page
d’accueil,il aura le choix entre effectuer une recherche,consulter un article des «news » ou
encore se « loguer » avec un identifiant et un mot de passe.S'il accède à la page de recherche,
il peut rechercher les articles par mots clés,auteurs ou dates.Dans ce cas,l’ordinateur du
client envoie une requête au serveur qui va effectuer la recherche selon les critères désirés et
renvoyer les réponses à l’ordinateur du client.S'il s’identifie,il accède à d’autres possibilités
allant de la modification d’articles au blocage de ceux-ci selon les accès de son compte,à ce
stade le serveur ouvrira une session afin de conserver l'identité de l'utilisateur.
Celui-ci peut donc,selon ses droits d’accès,consulter,créer,modifier,bloquer ou
supprimer un sujet.Pour cela son ordinateur envoie une requête au serveur qui effectue
l’opération et renvoie une réponse ou un récépissé à l’ordinateur qui a fait la demande.
L’utilisateur peut répéter les actions précédentes autant de fois qu’il le désire puis se
déconnecter,ce qui clôt la session.
34
I.2.6.Diagramme Acteurs flux
Le diagramme acteurs flux est une représentation graphique du fonctionnement du
système.Il est très utile pour introduire le modèle conceptuel des traitements.
Figure 10 Diagramme acteurs/flux
1 Connexion
2 Recherche
3 Logue
4 Ouverture de session
5 Requête de recherche
6 Réponse de recherche
7 Envoi du résultat
8 Demande d’opération
9 Réponse ou récépissé
10 Opération effectuée
11 Requête d'opération
12 Fermeture du client
13 Session close
Nous avons ici un aperçu d’une session d’utilisation du wiki par l’utilisateur,en
premier lieu l’utilisateur se connecte au site (1),ce qui vérifie selon son adresse IP qu’il est
bien endroit de se connecter (2).
Une fois son adresse acceptée,l’utilisateur s’authentifie (3) avec le mot de passe
stocké dans la base de données (ou on enregistre son adresse IP),ce qui initie une session (4).
Le serveur va rechercher les droits de l’article chargé,ainsi de ceux de l’utilisateur dans la
base de données (5 et 6) pour les afficher sur le navigateur de l’utilisateur (7).
Le Wikinaute va ensuite effectuer une recherche et ce même s’il désire écrire un
article (8).En effet,si il désire écrire un article,il est évident qu’il faut d’abord vérifier que le
sujet n’est pas déjà traité (9) la réponse est chargée sur le serveur depuis la base de donnée
(10).
Une fois sur que le sujet est libre,ou existant mais en accès écriture,l’utilisateur va
rédiger (8) et visualiser ce qu’il a écrit (9).Une fois traité,son article sera intégré à la base de
données (11).
A tout moment le client peut décider de se déconnecter se qui détruira sa session.
35
I.2.7.Modèle conceptuel des traitements
Le modèle conceptuel des traitements est effectué pour aider à comprendre le
fonctionnement du système de manière conceptuelle.En éliminant les considérations
d’organisation du type répartition des tâches,déroulement dans le temps et tout autre sujet qui
ne traite pas uniquement de la façon dont fonctionne le système.
Figure 11 M.C.T
Ce schéma explicite les processus de création,de modification et de consultation des
articles en fonction des droits de l’utilisateur et du fait qu’il soit logué ou pas.Tant qu’il n’est
pas identifié l’utilisateur peut rechercher un article et le consulter,mais aussi se connecter (ou
créer son identifiant).Cependant si son IP est correcte,selon le principe de l’intranet
l’utilisateur anonyme pourra créer un article,son IP sera alors son identifiant.
Une fois logué,l’utilisateur peut créer,clore,modifier ou restaurer un article (selon ses
droits) mais aussi en restreinte l’accès.
36
I.2.8.Conclusion de la modélisation Merise et conclusion générale de la
modélisation du projet
Grâce aux différents schémas nous avons clairement séparé le traitement des données
des données elles-mêmes.
La structure du système de données s’est appuyée sur les contraintes de stockage et de
traitement.Nous avons nettement visualisé les flux de données générés lors d’une session
utilisateur,ce qui a permis de conceptualiser le fonctionnement du site dans sa globalité.
Ainsi,nous avons mis en œuvre un système de données souple et adaptable même en
cas d’évolution des fonctionnalités du projet.Ainsi modélisé,le système de données doit
rester robuste.
Cette modélisation a permis de planifier la création de la base de données en se basant
sur les conclusions établies par la modélisation UML et ses contraintes de droits d’accès
d’utilisateur en lecture écriture en fonction des nivaux d’utilisateurs.
Une fois la modélisation terminée,il faut faire un choix de développement approprié
aux contraintes dégagées par la modélisation et le cahier des charges.
37
I.3.Etude préalable des options techniques:
Nous avons fini de modéliser le wiki,la structure de la base de données est prête,il ne
reste plus qu’à faire les choix techniques avant de commencer le développement.
Il ne s’agit évidement pas de « réinventer la roue »,si un outil est suffisamment souple
pour permettre une interface avec notre code,il est plus simple de l’utiliser en l’adaptant
plutôt que de coder un outil déjà existant surtout avec notre forte contrainte de temps.
I.3.1.Choix entre développement et création
N’ayant que peu de temps pour coder un wiki entièrement avant la fin du stage,nous
nous sommes posés la question de savoir ce qui serait le plus judicieux:
 Une solution qui consiste à prendre un wiki déjà crée et distribué gratuitement sur afin
de le modifier légèrement pour l’adapter à nos besoins.
 Développer de A à Z un wiki qui correspondrait à notre schéma de modélisation en
tous points.
Après quelques comparaisons entre les différents wiki possibles,nous avons opté pour
la solution « MédiaWiki » qui nous a semblé être le plus complet et qui est codé
essentiellement en PHP.Il est soumis à la licence GPL
7
qui nous permet d'exécuter le logiciel
pour n'importe quel usage,d'étudier le fonctionnement de celui-ci,de l'adapter à nos besoins,
de redistribuer des copies,de l'améliorer et de rendre publiques les modifications afin que
l'ensemble de la communauté en bénéficie.Ce wiki est entre autres celui utilisé par le site
Wikipédia.[WIKIPEDIA]
Figure 12 Exemple de réalisation d'un wiki avec Mediawiki
7
La GNU GPL (abrégé GPL) a été écrite par Richard Stallman pour être utilisée sur les programmes du projet
GNU.Son but était de produire une licence unique pouvant être utilisée pour chaque projet et qui permette au
plus grand nombre de projets de partager leur code source.
38
I.3.1.Option 1:Modification d’un wiki existant
À la base,MédiaWiki permet à tout le monde de créer ou de modifier des articles avec
la possibilité aux administrateurs de changer le mode de la page pour la protéger.
Pour répondre aux contraintes que nous nous sommes fixés,nous avons dû modifier le
code source en remplaçant la valeur par défaut par une valeur autorisant uniquement les
utilisateurs « loués » à modifier un article.
Nous avons aussi mis en place une protection concernant la création des articles.
Grâce à une condition,le site vérifie que l’utilisateur est soit logué,soit sur un ordinateur de
l’université.Si les deux conditions ne sont pas remplies,l'utilisateur ne pourra que consulter
les articles présents.
Nous avons aussi entamé la création d’un système permettant d’entrer des mots clés
lors de l’écriture d’un article.Ces mots clés seront entrés dans une zone de texte par le
rédacteur et seront envoyés directement dans une base de données avec les mots qui
reviennent le plus souvent dans l’article,le titre et les mots du résumé.Ce système a pour but
de classer les mots dans la base de données pour ensuite coder le moteur de recherche et
d’indexation sémantique.
Figure 13 L'éditeur de Mediawiki
Même si la capture d’écran donne une impression de réussite,ce n’est qu’un
exosquelette vide ne portant sur rien de concret.Le code orienté objet de média wiki est
extrêmement complet.Malheureusement c’est ce qu’on peut appeler une « usine à gaz » qui
est proprement impénétrable si l’on ne l’a pas codé soit même.
Nous pensons avoir du mal à envisager d’interfacer un autre projet avec un code qu’il
faudrait plusieurs semaines pour comprendre.C’est pourquoi nous avons choisi de coder le
wiki entièrement.
39
I.3.2 Option 2:création complète d’un wiki
Après avoir infructueusement de réutiliser MédiaWiki,nous avons du nous
contraindre à abandonner ce choix.Cela ne nous laisse plus que l’option du codage complet
du wiki avant de passer à l’ontologie informatique et son interfaçage avec le wiki.Ceci
suppose un développement complet de projet sous tous ses aspects:
 La création d’une interface graphique complète et cohérente.
 Un codage complet du projet.
 Une phase de test.
 La migration du projet.
Même si cette deuxième option est complexe car elle nous oblige à partir de « rien » pour
la conduite du projet,elle propose l’avantage de la souplesse absolue.
Comme l’essai précédent avec média wiki n’a pas été concluant (et nous fait perdre une
précieuse semaine) nous avons décidé de choisir la deuxième option.
I.3.2.1.Méthodes de travail
Nous avons choisi d’écrire le mémoire au fur et à mesure de l’évolution de notre
projet,afin de conserver à l’esprit le travail effectué,les méthodes employées et les problèmes
rencontrés.De plus nous avons pu gagner du temps sur l’écriture du rapport à la fin du projet.
La gestion des sauvegardes se faisait tous les deux ou trois jours,à chaque évolution
notable du wiki.Le dossier complet s’appelait wiki,et la sauvegarde était nommée
wiki_v_jour_mois.Chaque sauvegarde contenait outre les codes sources,un dump complet de
la base de données sous forme de fichier ASCII.Ces précautions ont sauvé le projet à deux
reprises ou nous ne pouvions revenir en arrière sur des modifications,ce qui rendait
l’ensemble du projet inutilisable.
Une fois le projet suffisamment avancé pour être en ligne il est testé et mis en
production sur un serveur externe professionnel externe à l’université.
I.3.2.2.Choix de programmation
Ayant choisi de travailler sur une plate forme LAMP
8
,le choix de développement en
PHP s’imposait à nous.L’architecture du wiki s’articulera autour d’une page principale et de
modules.
Ces fichiers communiqueront entre eux par formulaire,mais les redirections vers la
page centrale se feront toujours automatiquement,de manière transparente pour l’utilisateur
qui conservera ses recherches grâce à la session.Ainsi l’utilisateur pourra avoir navigué par
l’intégralité des pages du wiki quasiment sans avoir l’impression d’avoir quitté la page
principale.
8
Linux Apache MySQL PHP,solution professionnelle complète relativement usitée d’hébergement de sites web
40
Les étudiants du centre de calcul,le public « cible » utilisant tous Mozilla Firefox pour
surfer sur le net,nous avons jugé bon d’orienter le développement Javascript et les CSS dans
cette direction.
Cependant pour permettre a un plus grand nombre de personnes de se connecter sur
notre wiki nous avons fait un effort pour remédier aux problèmes de compatibilité entre les
deux navigateurs.
I.4.Conclusion de l’étude préalable du wiki
Après avoir présenté l’objet du stage et son contexte,nous avons défini un cahier des
charges.Cela nous a permis d’effectuer une modélisation en UML et Merise.
Face au choix d’adapter ou de coder un wiki,nous avons tentés infructueusement de
réutiliser Mediawiki.Mais contraints par la taille et la complexité du code à abandonner ce
choix,nous avons choisi de développer nous même le projet.
Nos choix de développement se sont orientés vers la programmation complète d’un
site et un hébergement externe sur une plateforme LAMP.Nous avons défini une
méthodologie de programmation ainsi qu’une gestion des sauvegardes du projet.Notre choix
de langage de développement Web s’est porté sur PHP/Javascript.Dans un premier temps
nous avons concentré nos efforts sur une compatibilité optimale sous Firefox,au détriment
d’Internet Explorer.
41
II Le développement du wiki
Comme nous l’avons écrit au chapitre précédent les modules fonctionnels du wiki sont:
 Les fonctions d’interrogation,d’insertion et de mise à jour de la base de bonnées dans
le fichier bdd.php.Ce fichier est inclus dans toutes les pages.
 Les fonctions d’authentification et de gestion des droits qui sont regroupées dans les
fichiers debut_session.php,session.php,inscription.php,insertion_user.php
 Les fonctions de création et d’édition des articles dans creer_article.php,editer.php,
editeur.php,enregistrer_article.php,modifier_article.php
 La page d’index index.php ne sera en fait qu’une redirection dans la version bêta vers
la page principale que nous appellerons test.php.
 La feuille de style du site sera:3col_leftNav.css
 L’anti-dictionnaire (pour le moteur de recherche en langue naturelle) sera contenu
dans le fichier:antidico.txt
II.1 La création de l’interface graphique
Nous avons décidé de commencer par créer l’interface graphique avec Dreamwaver en
mode graphique pour générer automatiquement la feuille de style ainsi que le squelette de la
page principale en copiant le style plaisant de média wiki.
Figure 14 Création de l'interface avec dreamweaver
Il sera plus aisé par la suite d’insérer le code PHP dans les calques adéquats.
42
Nous avons décidé d’intégrer un logo icône dans la barre de navigation en plaçant
notre propre fichier image favicon.ico dans le répertoire racine du site.Une icône de ce type
est limitée à un carré de 16 pixels.
Figure 15 Détail d'intégration d'une icône logo dans la barre de navigation.
A proprement parler,placer un logo dans la barre de navigation n’apporte rien au
niveau du sens.Cependant au niveau du « branding »
9
c’est un atout considérable dans le
monde du net ou chaque détail,si infime soit-il compte pour attirer des lecteurs et augmenter
son potentiel publicitaire.Il s'agit d'attacher la marque à un produit afin de le faire remarquer
au sens de se détacher des autres produits [BRANDING].
Toujours dans l’optique d’enjoliver le site nous nous sommes penchés sur la
possibilité d’intégrer une image dans les boutons de recherche et celui pour l’authentification.
Nous avons commencé par songer à faire un lien sur une image,mais ce n’était pas
satisfaisant car cela n’avait pas l’aspect d’un bouton.Intégrer une image dans un bouton de
manière satisfaisante et compatible avec les deux navigateurs nous a obligé à consulter les
recommandations W3C.[BOUTON]
Figure 16 Evolutions des sources du bouton
Dans le code source ci-dessus il est possible de constater l’évolution du bouton au
cours du projet.La première ligne commentée (en grisé) est un bouton simple comme sur la
figure 14.C’est simple sobre,classique,peut être un peu trop.
La deuxième ligne de code commentée fonctionnait sous Firefox,mais pas du tout
sous Internet Explorer,ce qui était gênant.
Notons l’importance des textes alternatifs qui sont affichés à la place de l’image en cas
ou l’image serait indisponible comme par exemple lors d’un chargement sur une ligne bas
débit (cf figure 17).
Figure 17 Affichage des boutons sans les images
9
Anglicisme issu du monde du commerce
43
Et voila le résultat d’affichage des boutons en condition normale sous Internet
Explorer si l’on surligne le bouton loupe de la recherche en langage naturelle (cf.figure 18).
Figure 18 affichage des boutons en condition normale
Bien que n’étant pas ans une optique de site commercial,donner une image
professionnelle est toujours positif.
44
II.2.L’intégration de la base de données
Nous avons écrit un fichier SQL que nous avons intégré à la base grâce à EasyPHP
Wiki.sql
CREATE TABLE`article`(
`pk_article`int(11) NOT NULL auto_increment,
`titre`varchar(50) character set utf8 collate utf8_unicode_ci NOT NULL default'',
`niveau`tinyint(4) NOT NULL default'1',
`resume`text character set utf8 collate utf8_unicode_ci NOT NULL,
`contenu`text character set utf8 collate utf8_unicode_ci NOT NULL,
`date`date NOT NULL default'0000-00-00',
`fk_user`varchar(50) character set utf8 collate utf8_unicode_ci NOT NULL default'',
`old_pk_id`int(11) default NULL,
PRIMARY KEY (`pk_article`)
)
ENGINE=MyISAMDEFAULT CHARSET=latin1 AUTO_INCREMENT=69;
CREATE TABLE`indexation`(
`pk_mot_cle`varchar(35) NOT NULL default'',
`pk_indexation`int(11) NOT NULL auto_increment,
`fk_article`int(11) NOT NULL default'0',
`poids`tinyint(4) default'2',
KEY`pk_indexation`(`pk_indexation`)
)
ENGINE=MyISAMDEFAULT CHARSET=latin1 AUTO_INCREMENT=29;
CREATE TABLE`user`(
`pk_user`varchar(50) NOT NULL default'',
`niveau_user`tinyint(4) NOT NULL default'0'
`passwd`varchar(10) NOT NULL default'',
PRIMARY KEY (`pk_user`)
)
ENGINE=MyISAMDEFAULT CHARSET=latin1;
Nous pouvons noter que la table modification prévue dans la modélisation a été
supprimée.La table a été remplacée par le champ old_pk_id (en rouge ci-dessus) dans la table
article.Ce champ est nul dans le cas de la création d’un article.A chaque modification une
copie est générée avec un lien vers l’article précédent.Ce qui en cascade permet de conserver
un historique complet.Cependant seule la dernière mouture de l’article est référencée par des
mots clés dans la table indexation.
45
II.3.L’accueil de l’utilisateur
L’utilisateur arrive par défaut sur la page d’accueil qui est un article qui se charge
quand aucun autre n’est chargé.Nous verrons cela en détail dans la section recherche
d’articles (cf II.5
).
II.3.1 Gestion du login et de la session
Comme nous l’avons défini dans la modélisation il est indispensable pour gérer
efficacement le wiki que les utilisateurs soient authentifiés.Ainsi les modérateurs et les
créateurs d’articles seront authentifiés comme tels,de mêmes que les simples visiteurs ne
seront pas obligés de se loguer.
Dans le contexte d’une interface homme/machine accessible en ligne le système de
session semble approprié.Cependant nous avons estimé que la gestion par cookies serait
exagérée pour cette application.
Figure 19 Login et mot de passe
Nous avons estimé qu’une aide contextuelle serait la bienvenue pour expliquer les
droits des utilisateurs en fonction de leur niveau.Nous avons pensé en premier lieu à un «
pop up » qui se déclancherait sur la pression d’un lien texte ou une image.Cependant l’usage
abusif que les webmestres ont fait des « pop up » les a rendus impopulaires,à un tel point
qu’ils sont souvent bloqués par les navigateurs.
Figure 20 Aide contextuelle à la compréhension des droits utilisateurs
46
La solution retenue est d’intégrer l’aide au calque des droits qui est placé dans la
colonne de gauche.Si l’on survole avec le curseur les droits d’accès qui nous sont attribués,
une fonction fait apparaître nos droits d’édition sur l’article affiché et l’explication de cet état
de fait.
A tout moment au cours de ses recherches,l’utilisateur peut se loguer,se créer un
compte utilisateur,ou changer de login s’il possède plusieurs logins.Une fois cette tâche
effectuée,il sera automatiquement redirigé vers sa précédente recherche avec ses nouveaux
droits.
Par soucis de lisibilité nous avons estimé préférable de masquer l’aide contextuelle sur
les droits de l’utilisateur et le niveau de l’article affiché.Dans le cas présent (cf Figure 16)
l’utilisateur non logué ne peut éditer l’article d’accueil dont le niveau est évalué a 5,c’est le
message qui lui est adressé si il survole le calque consacré aux droits.(cf Figure 17).
Pour ce faire nous avons utilisé un <SPAN>,la balise HTML qui sert à appliquer une
mise en forme différente sur des éléments du texte.La mise en forme fait en sorte que si l’on
survole l’élément de lien le span devient visible et affiche le message d’information.Nous
aurions aussi bien pu faire la même chose avec un claque qui deviendrait visible ou en z-index
maximal.Voici un court extrait de la feuille de style associée:
#box {
position:relative;top:0px;left:0px;
z-index:3;}
#box a {
color:black;
text-decoration:none;
display:block;
}
#box a:hover {
color:black;
background:#eeeeee;
}
#box a span {
display:none;
}
#box a:hover span {
color:black;
background:#ffffff;
font:normal 16px courier,sans-serif;
border:0px solid black;
display:block;
padding:10px;
}
Le problème que posait cette solution était que la taille du calque global de la colonne
de gauche n’était pas extensible.Tout le reste du texte de la colonne étant décalé vers le bas
quand on déclanchait l’aide.Le texte placé dessous se retrouvait hors du calque,ce qui était
très désagréable visuellement.Le plus simple était que de supprimer des éléments lors de
l’affichage de l’aide.Nous avons une fois de plus modifié la feuille de style:
47
#droits a:hover{
background-color:#cccccc;
font-size:0%;
}
Lorsque l’élément déclencheur de l’affichage de l’aide contextuel (le surlignage des
droits utilisateurs) intervient,cela provoque également une mise à zéro de la taille de la
police ce qui a pour effet de céder suffisamment de place pour permettre l’affichage de toutes
les informations.
48
II.3.2 Gestion des droits en fonction du login
Nous pouvons remarquer que la « boite à outils » située en haut de l’interface pour
l’utilisateur anonyme se limite à « créer un article »,la fonction de lecture étant implicite.
Si un utilisateur de haut niveau se connecte,une session est immédiatement créée.
Cette cession comprend le login et les droits.A chaque changement de page les droits sont
conservés,ainsi bien sûr que le login et ce jusqu’à la déconnexion.
Figure 21 Gestion des droits
Notons que lors de l’authentification en cas de réussite,la validité du mot de passe est
explicitement affichée dans la barre d’outil.Dans le cas contraire,un message s’affiche en
clignotant.La balise <blink> étant obsolète,le message ne clignote pas sous Internet
Explorer.
Dans un cas comme dans l’autre le message disparaît à la première action effectuée.
Nous avons jugé qu’il est nécessaire de faire un test de contrôle Javascript sur le formulaire.
Ce test vérifie qu’il ne manque ni le login ni le mot de passe,et affiche le traditionnel message
« pop up » en cas de vérification positive.De plus le « focus » est placé sur le champ vide.
Une fois la vérification effectuée,le login et le mot de passe sont comparés à ce qui est
enregistré dans la base de données,et la session est ouverte avec les droits de l’utilisateur qui
sont alors comparés au niveau de l’article et la boîte d’outils se complète en fonction des
droits.Voyons dans la figure 19 l’exemple bref du bouton de modification d’article qui
apparaît si le niveau de l’utilisateur est défini par une session et supérieur à celui de l’article.
Les autres boutons de la boite à outils sont gérés de la même façon.
Figure 22 Exemple de code tenant compte des niveaux d'utilisateur
49
II.4 Le référencement simplifié des articles
L’indexation est l’opération centrale de tout système documentaire pour le stockage et
la recherche d’informations.Elle permet de représenter la teneur du document sous une forme
concise,de faire la recherche et d'éviter au système d'analyser chaque texte du document à
chaque interrogation.
II.4.1 Le principe de l’indexation mixte
Nous avons choisi une indexation mixte pour notre wiki.Une première indexation sera
basée sur les mots clés choisis par le rédacteur de l’article.Comme les mots clés ont été
choisis par l’utilisateur,il faut tenir compte du haut pouvoir de caractérisation des mots.Ces
mots seront donc indexés avec une forte valeur,sur une échelle définie de un à six le mot sera
indexé par rapport à l’article avec la valeur maximale.
Comme nous le verrons dans les pages suivantes,l’utilisateur sera invité à créer des
articles et à les modifier.A la fin de la rédaction d’un article,l’auteur indiquera dans le
formulaire les mots clés qu’il estime devoir associer à ce qu’il vient de rédiger.L’article une
fois enregistré aura un identifiant unique,les mots clés générés seront identifiés dans la base
de données par un identifiant unique,car un même mot clé a de fortes chances d’être associé a
plusieurs articles.
Une association sera créée dans la table éponyme entre le mot clé et l’article identifié
préalablement.La valeur (pondération) de l’association sera représentée sous forme
vectorielle dans le triplet { n°article,mot clé,valeur}.Dans le cas d’une indexation simple,
c'est-à-dire par mot clé défini par l’utilisateur la valeur sera toujours la même.En effet comme
cette indexation se base sur l’intelligence humaine,elle est sensée être juste.La valeur sera de
l’association sera toujours au niveau le plus élevé en ce cas.
A chaque mise à jour de l’article,les liens entre l’article et ses mots clés seront
également de nouveau indexés dans la table association.Ainsi seule la dernière version de
l’article sera référencée par des mots clés,ce qui évitera toute confusion.Cependant,les
anciens articles restent accessibles via leur dernière version.
50
II.4.2 La visualisation contextuelle des mots clés
Une fois l’article chargé,dans le menu de droite,une fonction affiche un certain
nombre de puces bleues colorées sont associés aux mots clés pour en exprimer la pondération.
Cette fonction prend en argument la valeur du mot clé chargé depuis la base de données dans
le fichier principal
Figure 23 Affichage contextuel des mots clés
function afficher_valeur_mot_cle($valeur){
echo str_repeat('<img src="images/puce.gif"width="3"height="9"/>',$valeur*2);
}
La fonction PHP str_repeat() permet d’afficher une chaîne de caractères placée en
premier argument un nombre de fois placé en deuxième argument.Ainsi la puce est affichée
de 1 à 6 fois selon la valeur du mot clé.
51
II.5 Recherche d’articles
Lorsque l’utilisateur arrive sur la page principale du wiki aucune recherche n’est
définie.Cet état de fait positionne une variable de sorte à ce que l’article d’accueil soit chargé.
Pour effectuer une recherche deux options s’offrent à l’utilisateur:
1.La recherche par mot clé
2.La recherche en langage naturel.
II.5.1 Un moteur de recherche simple par mot clé
Figure 24 Détail sur le résultat d'une recherche simple
Ce type de recherche est le plus basique possible.Une fois la recherche lancée,une
fonction Javascript vérifie la validité de la requête et une variable est chargée dans la page
principale.Comme cette variable est non nulle,une requête recherche les associations
d’articles qui correspondent au mot clé.
Une fonction du fichier bdd.php va comparer le mot clé avec ceux indexés en clé
étrangère dans la table indexation de la base de données du wiki.En cas de correspondance
l’identifiant de l’article associé est passé en argument à une fonction qui génère un hyperlien
vers l’article.Dans l’exemple (cf figure 22) une requête sur le mot clé réseau génère trois
hyperliens affichant le titre de l’article référencé,et comprenant l’identifiant en référence.
Figure 25 Cas de résultat négatif à une recherche
Dans le cas ou aucun article ne serait référencé sur le sujet comme ci-dessous ave le
mot clé « babar »,un hyperlien propose de créer un article relatif au mot clé non référencé
dans la base de données
.
52
II.5.2 Un moteur de recherche en langage naturel simplifié
Pour effectuer ce type de recherche,l’analyse est moins triviale.En tout premier lieu,
il faut adapter la requête à la machine,mais aussi et surtout il faut que l’indexation ait été
réalisée de manière efficace et compatible.
Dans un premier dans nous verrons un système de requête simple basé sur la
« purification » de la requête pour une comparaison avec les indexations de mots clés.Notons
ici,qu’à ce stade du développement seul une indexation manuelle à eu lieu.Le corpus n’a pas
été indexé lui-même de manière automatique,ce qui fait l’objet un chapitre ultérieur.
Nous avons constitué un anti-dictionnaire non exhaustif de la langue française,
constitué d’articles,de pronom,de substantifs communs,et de verbes conjugués.
En premier lieu la requête en langue naturelle est passée « au tamis » à travers l’anti-
dictionnaire.Puis une recherche est faite sur chaque mot clé de la recherche.Enfin on
conserve l’intersection des résultats.Voyons ci-contre ce que donne la recherche le la phrase:
« La clé WEP du wifi »,sur une version de débugage à forte verbosité.
Figure 26 Affichage verbeux (mode de debbugage) d'une recherche en langage naturel
La phrase a été «tamisée » par l’anti-dictionnaire pour ne plus contenir que trois mots
clés.Ensuite,l’intersection des articles relatifs aux trois mots clés a été conservée.La
procédure donne donc schématiquement:
L’article 101 est donc l’intersection de la recherche
Figure 27 Représentation schématique d'une requête
function afficher_lien_naturel($reponse,$taille_reponse,$naturelSearch){
53
if($taille_reponse==0){
echo"pas de correspondance dans la base";
}
else{
echo"<br/>le nombre d'articles référencés est";
echo « $taille_reponse."pour la recherche:\"".$naturelSearch."\"";
$z=0;
for($z;$z<$taille_reponse;$z++){
if(isset($reponse[$z])){
echo"<a href=\"test.php?n_article=";
echo $reponse[$z]."\">".afficher_titre($reponse[$z])."</a> |";
}
else echo"pas de correspondance dans la base";
}
}
$taille=sizeof($tableau_assoc_mot_cle);
switch($taille){
case 1:
$reponse=$tableau_assoc_mot_cle[0];
$taille_reponse=sizeof($reponse);
afficher_lien_naturel($reponse,$taille_reponse,$naturelSearch);
break;
case 2:
$reponse=array_intersect($tableau_assoc_mot_cle[0],$tableau_assoc_mot_cle[1]);
$taille_reponse=sizeof($reponse);
afficher_lien_naturel($reponse,$taille_reponse,$naturelSearch);
break;
}
La fonction PHP array_intersect(array1,array2) permet de retourner un tableau
contenant toutes les valeurs de array1 qui sont présentes dans array2.Appliqué à notre
exemple,le script sélectionne les mots clés présents dans l’article.
Cette solution est intéressante dans le cas où il existe une intersection entre tous les
mots clés,malheureusement ce n’est pas toujours le cas et des articles pertinents risquent de
passer à la trappe car ils ne contiennent pas tous les mots clés.
Une solution à envisager ultérieurement est de modifier l’algorithme pour que la
recherche utilise la synonymie mise en évidence grâce à l’ontologie pour recommencer la
recherche en cas de résultat de recherche sans résultat.
54
II.6.Création et édition d’articles
II.6.1 Rédaction d’un article
Lorsque l’on clique sur le bouton créer un article,soit parce que l’on a échoué à une
recherche,soit directement,on est redirigé vers une page formulaire.L’interface de création
d’article est on ne peut plus classique.(cf figure 24) Comme on est obligatoirement
authentifié,soit comme utilisateur,soit par son IP.Il n’est donc pas nécessaire d’inscrire son
nomd’utilisateur.
Figure 28 Création d'un article
Cependant si on a choisi de créer un article à la suite d’une recherche qui a échoué,le
mot clé recherché sera intégré par défaut dans le champ éponyme.Notons que les mots clés
doivent être séparés par des points virgules.
Nous avons développé un panel de boutons qui permettent d’effectuer une mise en
forme minimale du texte.Cette petite boite d’outils de « traitement » de texte a été une source
de problèmes outil lors de son développement.En effet après avoir vainement tenté d’adapter
le très puissant traitement de texte en ligne FCKeditor[KFCEDITOR] aux contraintes du wiki,
nous avons du nous résoudre à le coder nous même.FCKeditor est très puissant mais son
adaptation et son utilisation auraient nécessité deux bonnes semaines supplémentaires que