Ministère de l`Education Nationale

publicité
Ministère de l’Education Nationale
Université de Montpellier II – CNAM
MASTER 2
INFORMATIQUE PROFESSIONNELLE
RAPPORT DE STAGE
effectué à
du 3 avril au 1er septembre 2006
par
Elizabeth Munoz
Directeurs de stage
Pierre Foulon
Herve Dicky
Développement d’une plateforme e-learning
Remerciements
À la fin de cette étape de ma vie, dans laquelle j'ai retrouvé à nouveau les études et l'ambiance
universitaire, je voudrais remercier toutes les personnes qui ont partagées avec moi cette
expérience.
Je commence par mentionner William, un grand compagnon d'études et plus que cela un
véritable ami.
Je ne peux pas oublier les premières personnes que j'ai connues à la Faculté quand encore je
ne comprenais pas beaucoup ce qui se passait autour de moi : Vero et Marion... merci pour
votre réception amicale.
Je remercie aussi à Julian, Nat, Ku, Ben et Tatiana, amis que j'ai trouvés pendant cette année,
avec lesquels j'ai partagé des grands et inoubliables moments.
Je voudrais remercier au Département d'Informatique de l'Université de Montpellier 2 de
m’avoir accepté dans le Master Professionnel et de m’avoir permis de renforcer mes
connaissances en informatique.
Merci à mes collègues de Didact-Systèmes : Nat, Pierre, Thierry et Jack pour tout le temps et
la confiance qu'ils m'ont accordée durant mon stage.
Pour finir, je veux remercier spécialement mon mari Miguel par tout son amour, appui et
compréhension durant cette aventure.
2
Sommaire
1. Introduction........................................................................................................................... 4
1.1. Contexte du stage.........................................................................................................................4
1.2. Objectifs détaillés du stage......................................................................................................... 5
2. problemAtique et alternatives proposees...............................................................................6
2.1. Identification de la problématique ............................................................................................ 6
2.2. Alternatives envisagées .............................................................................................................. 6
2.2.1. Le choix de langage de programmation.................................................................................................7
2.2.2. Le choix du SGBD.................................................................................................................................8
2.3. Méthodologie et outils utilisés.................................................................................................... 8
3. Synthèse de la solution apportée......................................................................................... 10
3.1. Présentation de la plateforme................................................................................................... 10
3.1.1. Description générale............................................................................................................................ 10
3.1.2. Description fonctionnelle.....................................................................................................................11
3.2. Réalisations................................................................................................................................ 12
3.2.1. Module ‘Supervisor’............................................................................................................................ 12
3.2.2. Module ‘Préparation aux concours’.....................................................................................................13
3.2.3. Fonctionnalités annexes....................................................................................................................... 16
3.3. Difficultés rencontrées.............................................................................................................. 17
3.4. Outils pour améliorer le développement................................................................................. 18
4. Conclusion........................................................................................................................... 20
5. Annexe A – Langages et bases de donnes...........................................................................21
5.1. Langages..................................................................................................................................... 21
5.1.1. Python ................................................................................................................................................. 21
5.1.2. Perl....................................................................................................................................................... 21
5.1.3. PHP...................................................................................................................................................... 22
5.1.4. Java...................................................................................................................................................... 23
5.2. Bases de données........................................................................................................................ 23
5.2.1. MySql.................................................................................................................................................. 23
5.2.2. PostgreSql............................................................................................................................................ 24
5.2.3. Cloudscape...........................................................................................................................................24
5.3. Dernières informations sur les Bases de donnes..................................................................... 25
5.3.1. Information générale............................................................................................................................25
5.3.2. Systèmes opérationnels supportés....................................................................................................... 25
5.3.3. Caractéristiques fondamentaux............................................................................................................26
5.3.4. Tables et views.................................................................................................................................... 26
5.3.5. Index.................................................................................................................................................... 26
5.3.6. D'autres objets......................................................................................................................................26
5.3.7. Partitioning.......................................................................................................................................... 27
5.4. Commentaire sur le choix de Base de données....................................................................... 27
3
1. INTRODUCTION
Ce document décrit les activités menées au sein de la société Didact-Systèmes, pendant cinq
mois, dans le cadre du stage de fin d’études du Master Informatique Professionnel.
1.1.Contexte du stage
Située en plein centre ville de Montpellier, la société Didact-Systèmes existe depuis 1984.
Son activité principale concerne le développement d’outils pédagogiques multimédia, de
didacticiels et plus généralement de tous applicatifs destinés à la formation.
Pour accomplir avec succès ses projets, Didact-Systèmes s’appuie sur sa double compétence:
-
l’ingénierie pédagogique, qui représente un ensemble de techniques particulières pour
l’orientation, la définition, la conceptualisation et la mise en place des constituants
d’une application logicielle.
-
l’informatique multimédia, c’est-à-dire la maîtrise des outils de développement les
plus adaptés pour réaliser, de manière optimale, évolutive et pérenne, le logiciel qui
exécute les fonctionnalités pédagogiques précédemment définies.
Parmi les compétences mentionnées, je peux dire que mon principal apport durant ce stage
s’est fait du coté de l’informatique multimédia, particulièrement en ce qui concerne le
développement d’une application web de type e-learning1.
Durant la période de stage, l’équipe de développement de l’entreprise, constituée de 7
personnes, est répartie sur la réalisation de deux projets:
-
Un projet de développement d’un DVD-Rom interactif d'auto-formation qui fournit
une initiation aux mécanismes de l'écriture arabe et permet d’acquérir des
compétences de lecture et d'écriture.
-
Un projet de développement d’une plateforme e-learning : il s’agit de l'adaptation et
de la consolidation d’un système de formation à distance déjà existant, un système qui
dans sa nouvelle version est conforme au standard SCORM2 et utilise diverses
technologies 'open source'3.
J’ai été intégrée à l’équipe de développement en charge de la réalisation de la plateforme elearning, la majeure partie de mon stage ayant été consacrée à ce projet.
1
E-learning : méthode d’apprentissage qui repose sur l’auto formation à distance. Le e-learning s’appuie sur une
plateforme technique qui permet de créer, diffuser et gérer des contenus pédagogiques via un ordinnateur
connecté à internet.
2
SCORM : Sharable Content Object Reference Model. Il s’agit d’un modèle de référence pour les objets
d’apprentissage sur le Web, c’est-à-dire un ensemble de lignes directrices et de spécifications techniques pour la
réalisation de contenus pédagogiques.
3
Technologies Open source : technologies faisant appel à des logiciels ‘libres’ (dans le sens où ils sont gratuits),
dont l’accès au code source et sa modification sont autorisés par l’auteur, ainsi que le redistribution du
programme modifié.
4
Trois personnes ont constitué l’équipe de ce projet :
- Un chef de projet chargé du suivi de la réalisation et suivi du client.
- Deux analystes / programmeurs, dont moi-même, chargés de développer les différents
modules de la application
Au début du stage, le projet accusait du retard, le stagiaire étant considéré comme un renfort
important pour finir le projet sur une période de 4 mois à venir, constituant le délai final pour
la livraison de l’application au client.
1.2.Objectifs détaillés du stage
Après avoir évalué la situation et les tâches à réaliser, j’ai défini trois objectifs principaux:
1- L’intégration dans l’environnement de travail, principalement la bonne
communication avec le groupe de travail. Ce point peut paraître assez étonnant, mais
étant étudiante étrangère, la langue est un point à considérer.
2- Le projet est en retard et les développements nécessaires pour finaliser les modules
sont significatifs. Pour être capable de donner une réponse rapide, il a été nécessaire
de travailler sur les points suivants:
a. Etudier et s’approprier rapidement les outils utilisés dans le projet,
principalement le framework de programmation PHP PRADO.
b. Etudier la modélisation et la conception existante dans le projet. Etudier la
plateforme utilisée, la structure de données et des sources, c’est très important
pour aider dans la programmation et la conception des nouveaux modules.
c. Dans les modules encore non développés, il existe certaines fonctionnalités
encore non définies ou non étudiées. Il est donc nécessaire de réaliser une
étude quant aux alternatives à envisager et fournir une solution rapide. Les
fonctionnalités correspondantes sont:
i. La génération dynamique de fichiers PDF.
ii. L’incorporation d’un outil permettant la conversation entre les
utilisateurs de l’application (Chat).
iii. L’envoi automatique d’e-mails.
3- L’étude d’outils et méthodologies qui permettent d’améliorer le travail personnel mais
aussi le travail de équipe. Au début du projet, les logiciels utilisés pour la
programmation étaient très basiques (éditeurs de textes), et ne permettaient pas une
bonne collaboration de équipe. Peu temps après le début du travail, l'équipe a pris
conscience de ce problème, ce qui nous a dirigé vers un nouvel objectif : faire des
recherches, appliquer nos connaissances des logiciels pour améliorer les conditions de
travail de groupe.
5
2. PROBLEMATIQUE ET ALTERNATIVES PROPOSEES
2.1.Identification de la problématique
Le client disposait jusqu’à présent d‘une plateforme e-learning (ou plateforme de formation à
distance) qui permet à ses agents de se former à distance sur divers types de domaines (Sport,
Bureautique, Urbanisme, Contentieux administratif, les Ecrits professionnels...etc.). Cette
plateforme fonctionnait totalement en ASP. Le système de Gestion de Base de Données utilisé
était SQL Server et l’accès à cette SGBD s’effectuait à l’aide de connecteurs ODBC. Ces
choix technologiques rendaient nécessaire l’utilisation d’un serveur Windows fonctionnant
avec IIS.
Pour pallier à certains manques de fonctionnalités ASP, le serveur était programmé pour faire
appel à des composants ActiveX. Une partie de ces composants, tels que ADODB ou
MSXML, sont standards et livrés par Microsoft à cet effet. A contrario, quatre composants
commerciaux étaient utilisés et doivent être installés préalablement sur le serveur : AspCrypt,
AspEMail, AspUpload, AspSmartUpload.
Le problème que présentait cette version de la plateforme était la diversité des technologies
employées dans sa réalisation, des technologies généralement propriétaires et qui fonctionnent
sur divers types de licence. D'autre part, la plateforme présentait un certain nombre
d’anomalies de conception, anomalies induites par une réalisation fragmentée et une
succession de prestataires différents.
Dans cette situation, le client voulait migrer l’application vers une plateforme unique et stable
et il pensait que l'utilisation de technologies ‘open source’ serait un avantage et ce pour
plusieurs raisons :
 éviter les problèmes qui se présentaient avec l'utilisation de
composants commerciaux divers et notamment les coûts de licences.
 assurer les évolutions futures de manière standard, dans une
plateforme homogène.
 de redistribuer le produit final complet de manière simple notamment
à destination des autres délégations régionales de l’institution.
Par conséquent, le client a sollicité Didact-Systèmes pour un projet de « migration » de
l'actuelle plateforme vers une autre qui utilisera exclusivement des technologies open source à
tous les niveaux du développement : langages de programmation, base de données. En outre,
le client a demandé l'intégration de fonctionnalités au niveau de certains modules déjà
existants dans l'actuelle plateforme: forum, chat, etc.
2.2.Alternatives envisagées
Pour remplir les conditions du client, Didact-Systèmes a mené une étude sur les technologies
‘open source’ pouvant résoudre la problématique posée. Suite à cette étude, les alternatives
suivantes ont été présentées au client :
6
•
•
langages de programmation Python, Perl, PHP, et Java
bases de donnes MySql, PostgreSql et Couldscape
L’annexe A- Langages et Bases de données, présente les avantages et inconvénients de
chaque langage et de chaque base de données proposées au client.
Le choix des technologies de développement à utiliser est toujours une étape délicate, qui
conditionne l’ensemble du projet. Dans le cadre du présent projet, les critères qui ont été
considérés pour réaliser un comparatif entre les différentes alternatives de solution sont :
La gratuité de la technologie, en plus de sa licence open source
La maintenabilité et l’évolutivité des réalisations faites à l’aide de la technologie
La facilité de déploiement de la solution (nombre et coût de l’hébergement, nécessité et
conditions d’installation de plug-in, etc.)
La pérennité de la technologie
L’adéquation de la technologie avec la nature du projet
2.2.1.Le choix de langage de programmation
En ce qui concerne les langages de programmation, le choix du langage Python engendre un
problème majeur qui est la difficulté de trouver un hébergeur. En effet, même si ce langage
est à l’origine prévu pour la réalisation d’applications monoposte, de puissantes plateformes
web (Zope, pour ne citer que la plus connue) ont été réalisées à l’aide de ce langage.
Malheureusement, l’offre d’hébergement est quasiment inexistante ou onéreuse.
En ce qui concerne Java, la question que nous nous sommes posés n’était pas tant de le
comparer à PHP mais plutôt de savoir quel serait l’intérêt de l’utiliser ? Java est avant tout un
langage objet, une syntaxe, et les technologies qui le mettent en œuvre sont nombreuses et
correspondent à des types de développement différents : application desktop, applet, servlet,
JSP, EJB, etc.
Dans le cadre du projet, Didact-Systèmes a estimé que cette technologie ne répondait pas au
critère d’adéquation avec la nature du projet : quels sont les avantages de Java ? Intégration
des applications dans des environnements hétérogènes, communication de l’application avec
les progiciels du système d’information de l’entreprise, gestion de la persistance, du mapping
transactionnel, des processus métiers et des flux de validation (workflow), etc. Cependant,
dans le cadre du développement de la plateforme, aucune des problématiques évoquées cidessus n’est rencontrée.
D'autre part, Didact-Systemes a proposé d’éliminer JAVA du comparatif, non pour des
raisons de performances mais simplement car JAVA n’est pas open source. JAVA est un
langage propriétaire appartenant à SUN qui, aujourd’hui, le distribue gratuitement sans
demander aucun engagement sur les réalisations faites. Cependant, même si cela paraît peu
probable, rien ne permet de dire que demain SUN ne rendra pas son outil payant : cas qui
s’est déjà avéré vrai avec le logiciel Star Office lors de la sortie de sa version 6.
Le choix restant se situe entre Perl et PHP, sélection qui revient souvent à choisir entre un
langage solide mais un peu ancien, et un langage plus nouveau mais plus « brouillon ».
Cependant, en terme d’adaptabilité au Web, PHP a une longueur d'avance puisqu'il a été
7
optimisé pour les applications en ligne alors que Perl s’inscrit plus dans une tradition
d'administration système. Dans le cadre d'un développement de site dynamique, PHP est
certainement plus adapté. Le développement se montre généralement plus rapide et plus facile
à maintenir. Alors qu'un script Perl peut s'avérer délicat à faire évoluer par quelqu'un d’autre
que son auteur. Comparé à PHP3, Perl est parfois plus rapide pour certaines opérations
(manipulation de sélections volumineuses dans une base, par exemple) mais, depuis la version
4, PHP offre des temps de réponses bien meilleurs.
Le choix de Didact-Systèmes s’est donc porté sur PHP et plus particulièrement dans sa
version 5 qui intègre enfin une véritable sémantique objet, atout non négligeable en termes de
maintenance et d’évolutivité des sources.
Actuellement la technologie PHP repose sur la communauté open source la plus active du
web. Il dispose de plus de 2000 fonctions, dont la gestion de la fameuse base de données
MySQL est certainement la plus connue, en la faisant un langage assez souple et facilement
maniable.
2.2.2.Le choix du SGBD
En ce qui concerne les Bases de données **, le choix se porte davantage entre MySQL et
PostgreSQL car Cloudscape est dédié aux serveurs d’applications JAVA (pas de PERL ou de
PHP), en plus d’être un SGBD naissant n’ayant pas encore fait ses preuves.
MySQL, ainsi que son principal concurrent PostgreSQL, sont à ce jour suffisamment élaborés
pour être utilisés dans de très nombreux cas. Leur fiabilité est généralement excellente et leur
disponibilité totale.
MySQL permet de créer des tables contenant plusieurs milliards d'enregistrements.
PostgreSQL possède en plus un module Postgis qui permet de gérer les données spatiales
(requêtes spatiales), mais cette base de données est moins connue que MySQL.
La sélection proposée par Didact-Systèmes est MySql. Pour entériner le choix MySQL, on
dira que les temps d’accès à des bases MySQL volumineuses sont les plus optimisés sur le
marché et permettent donc des accès plus rapides.
**
: à l’époque de début du projet
2.3.Méthodologie et outils utilisés
Pour comprendre mieux comment le projet s’est articulé avant le début du stage, j’ai étudié la
documentation de conception et la documentation technique du projet, ainsi que les
documents de réunion avec le client. Ces documents permettent d’observer que le projet s’est
développé de manière modulaire, en commençant par les modules de présentation
d'information et ensuite ceux d'administration, et que chaque module s’est développé de
manière itérative, en copiant les fonctionnalités du système actuel (ASP) et en joignant de
nouvelles fonctionnalités au fil des besoins.
8
Les outils utilisés par la plateforme sont :
- Serveur Linux Red Hat
- Apache 2 modifié par Red Hat (sécurité)
- PHP 5 et utilisation du framework Prado
- Base de données MySQL 5.0
L’outil de programmation utilisé en début du stage est un éditeur de texte évolué.
9
3. SYNTHÈSE DE LA SOLUTION APPORTÉE
Comme mentionné auparavant, le travail s’est déroulé dans un contexte particulier, celui d’un
projet en retard, c'est pour cela que mon principal but a été d’arriver le plus rapidement
possible aux solutions demandées.
3.1.Présentation de la plateforme
Avant de présenter la plateforme, il est nécessaire donner une définition de "plateforme elearning" :
Nous définirons une plateforme e-learning comme un portail Web permettant faire de la
formation à distance et de gérer, d’une part, des utilisateurs à former et, d’autre part, des
éléments pédagogiques. L’administrateur de la plateforme se charge alors de réunir des
éléments pédagogiques dans un ou plusieurs parcours pour les affecter à un plusieurs groupes
d’utilisateurs.
3.1.1.Description générale
La plateforme e-learning permet à des utilisateurs, de manière autonome, de consulter et de
s'évaluer sur un contenu pédagogique aux travers de groupes. Le dispositif conserve des traces
des utilisateurs et peut ainsi restituer un rapport d'activité plus ou moins détaillé de la
formation effectuée. Le contenu pédagogique est scindé en deux parties distinctes : la
formation continue basée sur des unités pédagogique à la norme SCORM et la préparation
aux concours qui met en oeuvre un système de devoirs corrigés par des intervenants
physiques.
10
3.1.2.Description fonctionnelle
Référentiel Utilisateur
Dans cette partie, nous trouvons le structure et les fonctionnalités qui concernent la gestion
des utilisateurs, leurs informations, leurs droits et responsabilités, leur activité sur la
plateforme.
Utilisation du dispositif
Cette partie correspond aux structures et fonctionnalités qui permettent aux utilisateurs de
travailler sur le contenu pédagogique.
Reporting
Dans cette partie, nous trouvons les fonctionnalités qui correspondent à la génération de
rapports sur les activités réalisées par les utilisateurs dans l’application.
Référentiel Contenu Pédagogique
Dans cette partie, nous trouvons toute la gestion du contenu pédagogique de la plateforme.
11
3.2.Réalisations
Je vais maintenant montrer quelques modules et fonctionnalités que j’ai développé pendant ce
stage.
3.2.1.Module ‘Supervisor’
Le module « supervisor »
est dédié à l’administration des utilisateurs et du contenu
pédagogique de la plateforme, avec diverses restrictions d’accès à l'information.
Cet module est composé par les sous modules :
• Accueil
• Administration des utilisateurs (Gestion du Référentiel Utilisateur)
• Administration de contenus (Gestion du Référentiel Contenu Pédagogique)
Dans le développement de ce module, j’ai réalisé principalement tâches de programmation,
puisqu'en général j’ai reproduit les mêmes fonctionnalités et sous-modules du module
« Administrateur »
précédemment développé.
La différence de fonctionnalité entre le module «Supervisor» et le module «Administrateur»
est que les droits de gestion sur l’information sont limités dans le module «Supervisor », c'est-
12
à-dire que les utilisateurs peuvent avoir permission soit de lecture, soit d’édition de
l’information existante, soit le droit d’ajouter de nouveaux éléments.
Le module « supervisor » est le premier module que j'ai développé pendant ce stage. Pendant
le développement de ce module, j'ai appris comment travailler avec le framework PHP
PRADO.
3.2.2.Module ‘Préparation aux concours’
Le module « Préparation aux concours »
est le dernier module que j'ai développé pour
la plateforme. Pendant le développement de ce module, j'ai pris part à des tâches de
conception et de programmation.
Cet module permet aux les utilisateurs de la plateforme de gérer la préparation aux concours
proposés par l’institution.
L’information initiale pour le développement de ce module a été un document qui décrit ses
fonctionnalités basées sur l’ancienne plateforme ASP, et aussi une réunion avec le client pour
avoir une idée plus précise de la forme de travail des utilisateurs.
La première chose que j'ai réalisée dans ce module a été un prototype des fenêtres. Avec le
prototype j’ai pu spécifier les fonctionnalités sollicitées par le client et apporter aussi ma
contribution dans la conception de la base de données.
13
Voici présentée, une partie de la structure de la base de données utilisée pour le
développement de la « Préparation aux concours » :
Organisation
[fields]
Liste les filières.
Filière est le premier niveau d'organisation. Une filière contient des concours.
[contests]
Liste les concours.
Un concours est divisé en épreuves. Dérivée directement des concours de la fonction
public, un concours :
•
•
•
appartient à une catégorie (A, B ou C),
est d'un certain type (concours externe, concours interne, troisième concours,
examen professionnel ou concours réservé),
est pour une certaine organisation (l’institution elle-même, autre, inexistant)
14
[tests]
Liste les épreuves.
Un concours est divisé en épreuve. Pour chacune d'elle il est nécessaire de préciser :
•
•
durée
cœfficient
Plusieurs options différentes peuvent être proposé pour préparer une même épreuve,
cela peut se faire en créant des épreuves identiques mais en leur précisant un nom
d'option différent.
[assessments]
Liste les devoirs.
Un devoir est l'élément pédagogique fondamental. Composé :
•
•
•
•
•
d'un sujet
de fichiers servant de corrigés type
d'un auteur
d'un intervenant correcteur et
d'une date d'expiration
Reporting
Ce tableau permet la génération de rapports sur les activités réalisées par les utilisateurs dans
les devoirs du module « Préparation aux concours »
Responsables
15
Sur ces tableaux sont définis les responsables de la gestion de la préparation aux concours et
les permissions que les utilisateurs ont sur les objets désignés.
3.2.3.Fonctionnalités annexes
Pour citer quelques apports spécifiques au développement des nouveaux modules, je
mentionnerai les activités suivantes :
• l’étude et l’intégration de fonctionnalités qui permettent de générer des fichiers
PDF.
• des outils de conversation on-line (Chat).
• l'exécution de procédures programmées dans le serveur (Cron).
Voici la description de chaque activité :
1. PDF
D’une part, l'application a besoin de générer un document confirmant à l’utilisateur qu’il a
fini un travail pratique évalué avec succès (une attestation de stage). D’autre part, déjà
présente dans les ressources du projet, il existe la librairie ‘fpdf’ qui permet de générer des
fichiers PDF et de les télécharger. Le problème rencontré a été de donner au document un
format et aspect graphique adéquats.
Pour résoudre ce problème, j’ai étudié la librairie ‘fpdi’ : celle-ci permet de lire des pages de
documents PDF, et de les utiliser comme ‘templates’ (patron) lors de la génération d’un
fichier avec ‘fpdf’.
La librairie ‘fpdi’ permet d’importer un fichier PDF existant avec le format de l’attestation et
d’ajouter dynamiquement l’information de l’utilisateur.
Ressources: http://fpdi.setasign.de/index.php?p=usage
2. Chat
L'application a également besoin d’un outil qui permet aux utilisateurs de la plateforme de
communiquer en ligne. Les membres du projet suggèrent d’adapter le ‘chat’ déjà intégré au
forum utilisé dans la nouvelle plateforme.
Le forum utilisé par la plateforme est ‘phpBB’. Ce forum contient un sous-module appelé
‘phpBBChat’ qui permet la conversation synchrone. Après avoir effectué une mise à jour de
la version de ‘phpBB’ (utilisation de la dernière version), ma tâche a été d’intégrer le 'chat' à
l’architecture de la plateforme. Cette tâche n’a pas été difficile car elle reprend des procédures
que j’ai déjà répétées lors de modification du forum.
Les difficultés rencontrées pour intégrer le chat ont été :
• La synchronisation des groupes d’utilisateurs aux salons de discussion.
• L’identification automatique sans passer par la page de « login » classique.
Ressources : http://www.phpbb-fr.com/
16
3. Cron
Cette fonctionnalité, indispensable à l’application, consiste à envoyer un email aux
utilisateurs pour leur rappeler qu’ils doivent réaliser certaines tâches. Ainsi, chaque jour, le
système doit réaliser cette opération.
Comme solution à ce problème, j’ai a pensé à utiliser le démon ‘crond’ présent dans les
serveurs linux. Ce démon est utilisé pour la programmation de tâches périodiques.
Pour exécuter un script PHP du serveur directement en lignes de commandes, j’ai utilisé la
commande ‘curl’, qui permet le transfert de fichiers avec syntaxes URL.
Finalement la commande ‘crontab –e’ m’a permis de programmer la tâche et de
gérer/modifier la liste des tâches programmées sur le démon 'crond'.
Ressources : http://curl.haxx.se/
Dans l’image suivante on peut trouver l’édition de la liste des tâches qui vont être exécutées
par le démon ‘crond’ sur un serveur linux. La ligne de la tâche inscrite indique que chaque
jour à les 02:16 heures s’exécutera le scritp 'AssessmentExpiration.php' qui permet envoyer
des emails massifs aux utilisateurs de la plateforme
3.3.Difficultés rencontrées
Au début de mon travail, le projet possédait déjà pas mal de modules, ainsi dans les premières
semaines, il a été difficile d’avoir une idée claire de toutes les fonctionnalités de l’application.
Dans ces conditions, la conception de nouveaux modules est quasiment impossible. C'est pour
17
cela que mes premiers apports au projet ont été des tâches de programmation uniquement.
Après quelque temps (et avec l’aide de la documentation du projet) j'ai commencé à avoir une
idée plus précise de la logique de l'application et j'ai commencé à participer à la conception
de quelques nouveaux modules.
De manière plus spécifique, j'ai éprouvé quelques difficultés dans la création des rapports
d’activités de l’application. Les rapports à développer existaient déjà dans l’ancien plateforme
en ASP, mais ceux-ci était particulièrement lent et pouvait prendre plusieurs minutes à
s’afficher. Pour améliorer les temps de réponse des rapports, nous avons changé la manière
d’organiser l’information en produisant des « sous rapports ». Par ailleurs, j'ai essayé
d'optimiser les requêtes SQL et créer aussi plusieurs index sur les tableaux les plus
volumineux.
3.4.Outils pour améliorer le développement
Une de nos préoccupations majeures en début de stage a été de travailler avec des outils de
programmation plus adaptés que de simples éditeurs de texte. Voici quelques-unes des
fonctionnalités recherchées à ce sujet :
-
Correction et coloration syntactique (PHP)
Vision de tous les fichiers du projet avec la possibilité de faire des recherches dans ces
fichiers
Utilisation d’un contrôleur de versions pour les fichiers du projet dans le but
d’améliorer le travail collaboratif au sein des équipes de projet. Egalement, la
distinction des environnements de développement:
o Local pour chaque développeurs
o Développement
o Production
D'autre part, nous avons aussi cherché un outil qui permet à plusieurs personnes de travailler
sur les mêmes fichiers (les fichiers du projet). L’idée est d’éviter des problèmes comme :
-
Que deux développeurs travaillent en même temps sur le même code
Que personne ne sache quelle est la dernière version du code
Que la dernière version du code ait été écrasée par une version antérieure
Que des erreurs corrigées réapparaissent
J’ai étudié une série de logiciels gratuits pour répondre à cet problématique :
-
PHP Designer (http://www.mpsoftware.dk/phpdesigner.php)
Caractéristiques:
o Elements syntaxiques configurables pour PHP, HTML, XHTML, CSS, Perl,
C#, JavaScript, VB, Java and SQL (Ingres, Interbase, MSSQL, MySQL,
Oracle, Sybase and Standard SQL)
o Navigateur de clases
o Test et debug de script avec le PHP interpréter
-
Dev-PHP (http://devphp.sourceforge.net/)
18
o
o
o
o
o
-
Web Server interne avec prévisualisation sous Mozilla ou IE
Coloration syntaxique du code
Navigateur de clases
Recherche à l’aide d’expressions régulières
FTP intégré
Eclipse + plugin PHP (http://www.phpeclipse.de/ )
Eclipse est un logiciel initialement pensé pour java : toutefois un plugin PHP permet
d'avoir un bon environnement de développement avec PHP. En plus des habituelles
fonctionnalités des éditeurs PHP telle que la coloration syntaxique, Eclipse dispose
d'autres caractéristiques:
o Affichage des erreurs de syntaxe directement dans la source
o Intégration à CVS
o Possibilité de plier/déplier les fonctions, méthodes de classe pour gagner de la
place et mieux se déplacer dans le code
o Personnalisation avancée des différentes vues
o Intégration d'apache et Mysql.
-
CVS (Concurrent Versions System)
CVS est un système de contrôle de versions client serveur qui permet à plusieurs
personnes de travailler simultanément sur un même ensemble de fichiers. Les projets
de taille (en particulier les projets Open Source) s'appuient généralement sur ce type
de système afin de permettre à un grand nombre de développeurs de travailler sur un
même projet. CVS permet, comme son nom l'indique, de gérer les accès concurrents,
c'est-à-dire qu'il est capable de détecter les conflits de version lorsque deux personnes
travaillent simultanément sur le même fichier.
o CVS projet (http://www.nongnu.org/cvs/ )
o CVSNT pour Windows (http://www.cvsnt.org/ )
-
SVN (Subversion)
SVN est un ‘version control system’ qui se substitue à CVS dans la communauté
‘open source’. SVN est une réécriture de CVS qui contourne les limites dues à
l’architecture du dépôt de CVS, notamment en terme de gestion au niveau projet et
non au niveau fichier, par exemple :
 SVN conserve l’historique d’un fichier après qu’il ait été renommé
 SVN voit un « commit » comme une seule opération et non comme
« n » opérations simultanées sur « n » fichiers différents
o Subversion projet (http://subversion.tigris.org/)
o Subclipse - Subversion Eclipse Plugin (http://subclipse.tigris.org/)
Finalement, en établissant une comparaison, le logiciel le plus complet et le mieux adapté à
nos méthodes de travail est Eclipse : l'équipe de projet a choisi Eclipse accompagné du
plugin PHP et du plugin de connexion à un serveur SVN Subclipse, de cette manière nous
concentrons toutes les fonctionnalités nécessaires pour le développement au sein d’un seul
outil.
19
4. CONCLUSION
Avant de début ce stage, j’avais des appréhensions quant à la bonne communication avec mon
équipe de travail, simplement car mon niveau de langue n’est pas optimal. Heureusement,
mes collègues de travail m'ont reçu avec les meilleures dispositions : avec patience et efforts,
nous sommes parvenus à travailler efficacement avec une communication s’améliorant de
jour en jour.
En ce qui concerne la mise à jour de mes connaissances sur le projet, je dois souligner
l'utilisation d'un outil ‘wiki’, un outil que mon collègue a mis en place avec toutes les
informations techniques et fonctionnelles du projet. Sans aucune doute, cet outil m’a permis
d'avancer rapidement dans la compréhension du projet du fait d’une information centralisée,
mais surtout l’outil m'a permis d’ajouter la documentation des modules que j’ai développés.
J’aimerais mentionner aussi que notre profil de Master Informatique Professionnel nous incite
à nous tenir constamment à jour sur les technologies et les outils que nous devons appliquer
dans nos projets. Dans le cadre de ce projet en particulier, lorsque j'ai commencé, et malgré
une plateforme définie antérieurement, j’ai contribué, par mes recherches et mes propositions,
à apporter un meilleur environnement de développement axé sur le travail collectif. Après
installation et utilisation d'outils comme ‘Éclipse’ pour le développement et ‘SVN’ pour le
contrôle de version des fichiers du projet, l'équipe de travail a pu observer une fluidité et une
stabilité accrues du développement dans toutes ces étapes.
D'autre part, la chose le plus importante à mentionner sur les résultats obtenus, c’est la date de
livraison de l'application approuvée par le client pour que commence son exploitation : le
lundi 21 août 2006.
Enfin, je pense que ce projet montre et confirme le potentiel immense des technologies open
source pour obtenir des produits et en l’occurrence des applications web de haute qualité, que
ce soit en terme d’aides à la programmation ou d’évolution même de la technologie entraînant
des mises à jour constantes de la plateforme. Les technologies open sources permettent de
travailler avec un grand confort et la sécurité de maintenir et corriger une plateforme, de la
faire évoluer graduellement et simplement.
20
5. ANNEXE A – LANGAGES ET BASES DE DONNES
Ensuite on décrive les avantages et inconvénient de chaque langage et base de donne
proposée pour la solution au problème :
5.1.Langages
5.1.1.Python
Le nom du langage provient du penchant de son créateur original, Guido van Rossum, par les
brillants comédiens britanniques Monty Python. Python est un langage de scripts (langage
interprété), simple mais puissant, orienté à des objets et très simple à apprendre.
Reference: http://www.python.org/
Avantages:
• Python est facile à apprendre et à utiliser
o Il possède une syntaxe claire et facile à lire
o L’apprentissage et la modification du langage sont grandement simplifiés
• Python est un langage de programmation orienté objets
• Python est un langage libre et portable
o Il est disponible sous licence GPL
o On trouve des portages de Python sur quasiment tous les systèmes
d'exploitation
Inconvénients:
• Python est lent à exécuter
o L’interprétation induit une certaine lenteur d’exécution, légèrement compensé
par l’écriture d’un code propre et naturellement optimisé
5.1.2.Perl
Perl (Practical Extraction and Report Language) est un langage de programmation dérivé des
scripts shell, créé en 1986 par Larry Wall afin de mettre au point un système de News entre
deux réseaux.
Il s'agit d'un langage interprété dont l'avantage principal est d'être très adapté à la
manipulation de chaînes de caractères. De plus, ses fonctionnalités de manipulation de
fichiers, de chaînes de caractères, de répertoires et de bases de données en ont fait le langage
de prédilection pour l'écriture d'interfaces CGI.
Avantages :
• C'est un bon langage ‘colle’. On peut rassembler plusieurs programmes d'une façon
simple pour atteindre un objectif déterminé
21
•
•
•
•
•
Est relativement rapide pour un langage type ‘script’
Il est disponible dans de multiples plateformes et systèmes opérationnels. Un
programme qui est écrit en tenant compte de la compatibilité peut être écrit dans une
plateforme et exécuté dans une autre
Il y a une collection énorme de modules qui peuvent être intégrés à tout script Perl. Ils
sont disponibles dans le CPAN (Comprehensive Perl Archive Network)
Perl est un langage libre
Il donne au programmeur beaucoup de liberté pour qu'il fasse le programme comme il
veuille. Comme le dit le slogan de Perl ‘il y a plus d’une manière de faire’
Inconvénients :
• Les modules de PERL sont assez complexes à installer
• Langage faiblement typé (scalaires)
• La liberté donnée au programmeur peut signifier que le résultat est un programme
illisible. S'il n'est pas écrit avec des soins il peut arriver à être difficile à lire.
5.1.3.PHP
PHP a été à l'origine conçu en Perl, suivis par l'écriture d'un groupe de CGI documents
binaires dans le langage C par le programmeur Danos Canadien Rasmus Lerdorf durant
l'année 1994 pour publier son curriculum vitae et garder certaines données, comme la quantité
de trafic que sa page web recevait. Le 8 juin 1995 a été publié "Personnel Home Page Tools"
après que Lerdorf le combine avec son propre Form Interpreter pour créer PHP/FI.
PHP est un langage de programmation utilisé généralement pour la création de contenu pour
sites web, et s'agit d'un langage interprété utilisé pour la création d'applications pour serveurs,
ou création de contenu dynamique pour sites web. Dernièrement aussi pour la création d'un
autre type de programmes en incluant des applications avec interface graphique en utilisant la
librairie GTK +.
Avantages :
• La gratuité et la disponibilité du code source (PHP est distribué sous licence GNU
GPL)
• La simplicité d'écriture de scripts
• La possibilité d'inclure le script PHP au sein d'une page HTML
• Excellent support d'accès sur base de données. Interfaçage simple et rapide avec
plusieurs bases de données
• Supporté par plusieurs serveurs web (Apache, Microsoft IIS, etc.)
• Il supporte dans une certaine mesure l'orientation objet. Classes et héritage
Inconvénients :
• La lisibilité du code peut être vue touchée en mélangeant des sentences HTML et PHP
• L'orientation objets est encore très déficiente pour grandes applications mais ceci peut
être compensé par l’utilisation d’un des nombreux framework
22
5.1.4.Java
Java est un langage de développement, produit par la société SUN et lancé le 23 mai 1995.
Ecrit par James Gosling, il permet de créer des applications autonomes et de doter les
documents HTML de nouvelles fonctionnalités : animations interactives, applications
intégrées, modèles 3D, etc.
Avantages :
• Java est portable et ne dépend d'aucune plate-forme
• Java est orienté objet
• Java devient de plus en plus rapide avec l’avancé de la technologie
• Java supporte les nouveaux standards
• Au niveau des performances, java est plus lent que php au premier appel, cependant
les appels successifs bénéficieront de l'initialisation et de la mise en mémoire des
"pages" au contraire de PHP qui ne dispose pas de système de cache par défaut
Inconvénients :
• Java nécessite beaucoup de ressources (mémoires, processeurs, …)
• Java est propriétaire, il est difficile pour un système ne disposant pas de machine
virtuelle d’exécuter des applications Java.
• Java ne permet pas d’opérations de bas niveau
5.2.Bases de données
5.2.1.MySql
Le logiciel MySQL est un serveur de base de données SQL très rapide, multithreads,
multiutilisateurs et robuste. Le serveur MySQL est destiné aux missions stratégiques et aux
systèmes de production à forte charge, ainsi qu'à l'intégration dans des logiciels déployés à
grande échelle.
Le logiciel MySQL dispose de deux licences. Les utilisateurs peuvent choisir entre utiliser
MySQL comme un logiciel open source, sous les termes de la licence GNU
(http://www.gnu.org/licenses/) ou bien, ils peuvent acheter une licence commerciale auprès de
MySQL AB (Cette société a été créée par trois fondateurs du projet MySQL : David Axmark,
Allan Larsson et Michael Monty Widenius).
Avantages** :
• Très bonne intégration dans l'environnement Apache / PHP
• Open Source
• MySQL est relativement plus rapide que PostgreSQL.
• La conception de bases de données est plus simple.
• La réplication de MySQL a été parfaitement testée.
Inconvénients** :
• Ne supporte qu’un faible parti des standards SQL
23
•
•
**
Gestion des transactions uniquement depuis la version 4 (ou avec InnoDB qui est
payante)
Peu de richesse fonctionnelle des commandes SQL
: à l’époque de début du projet
5.2.2.PostgreSql
PostgreSQL est un SGBDR (système de gestion de base de données relationnelle)
fonctionnant sur des systèmes de type UNIX (par exemple Linux, FreeBSD, AIX, HP-UX,
IRIX, Solaris, ...).
L'une des principales qualités de PostgreSQL est d'être un logiciel libre, gratuit et dont les
sources sont disponibles.
Avantages** :
• PostgreSQL possède de nombreuses caractéristiques en faisant un SGBDR robuste et
puissant digne des SGBD commerciaux
• Open Source et gratuit
• Supporte la majorité du standard
• Très riche fonctionnellement, notions d'héritage de tables, multitude de modules
• Conception de bases de données complexes
• Jeux de règles complexes (règles opérationnelles)
• Utilisation de langages procéduraux sur le serveur
• Transactions
• Utilisation de procédures stockées
• Utilisation de données géographiques
• Arbres R-trees (utilisés pour les index)
Inconvénients** :
• Ne prend en charge ni le XML, ni les services Web
• Sauvegardes peu évoluées
• Supporte les bases de moyenne importance
• Pas de notion de rôles, pas de hiérarchisation de groupes
• Obtenir une configuration efficace prend un peu plus de temps que pour MySql par
exemple
**
: à l’époque de début du projet
5.2.3.Cloudscape
IBM a offert à la communauté open source le code de sa base de données Cloudscape, écrite
en Java. La société a choisi Apache, qui est une organisation à but non lucratif, pour
développer ce projet open source (nom de code : Derby).
24
Apache Derby est un système de gestion de base de données relationnelle basé sur le langage
Java qui peut être embarqué dans des programmes écrits en Java. Etant multi plateforme et de
très petite taille (2MB), il s'intègre particulièrement bien dans toute application Java.
Avantages** :
• SGBD java open source
Inconvénients** :
• La technologie Cloudscape est issue du rachat d'Informix par IBM en 2001. Son
principal point faible : cette base de données se limite aux serveurs d'applications Java
**
: à l’époque de début du projet
5.3.Dernières informations sur les Bases de donnes
Je présente ici un comparatif mis à jour des caractéristiques des bases de données étudiées au
début du projet.
Reference:
http://en.wikipedia.org/wiki/Comparison_of_relational_database_management_systems
5.3.1.Information générale
Maintainer
Date de la
première
version
publiée
Dernière
version
stable
Software
licence
Apache
2004
10.1.3.1
Apache
Licence
MySQL AB
Novembre
1996
5.0
GPL ou
proprietary
PostgreSQL Global Development Group
Juin 1989
8.1.4
BSD
Apache Derby
MySQL
PostgreSQL
5.3.2.Systèmes opérationnels supportés
Windows
Mac OS X
Linux
BSD
UNIX
oui
oui
oui
oui
oui
MySQL
oui
oui
oui
oui
oui
PostgreSQL
oui
oui
oui
oui
oui
Apache Derby
1
(1): La disponibilité de base de données dépend de la machine virtuelle de Java pas sur le
logiciel d'exploitation.
25
5.3.3.Caractéristiques fondamentaux
Apache Derby
ACID 2
Referential
integrity
Transactions
Unicode
oui
oui
oui
oui
dépend 3
oui / UTF-8 (3-byte)
& UCS-2
oui
oui / UTF-8 (4-byte)
dépend 3
MySQL
PostgreSQL
dépend
oui
3
oui
(2): ACID = Atomicity, Consistency, Isolation, et Durability. Ils sont considérés comme les
principaux features/properties du traitement transactionnel d'un système de gestion de base de
données, ou DBMS.
(3): Pour ‘transactions’ et ‘referential integrity’, le table type InnoDB doit être employé; la
table type MyISAM (default), ne soutient pas ces caractéristiques. Cependant, même le type
de table InnoDB permet le stockage des valeurs qui excèdent le ‘data range’; certains
regardent ceci en tant que violation de la contrainte d'intégrité de ACID.
5.3.4.Tables et views
Temporary table
Materialized view
Apache Derby
oui
non
MySQL
oui
semblable 4
PostgreSQL
oui
semblable 5
(4): Comme avec Postgres, des vues matérialisées peuvent être émulées en utilisant des
procédures stockés et des triggers.
(5): Des vues matérialisées peuvent être mises en oeuvre avec PL/pgSQL, PL/Perl,
PL/Python, ou d'autres langues procédurales.
5.3.5.Index
R-/R+ tree
Apache Derby
MySQL
PostgreSQL
Hash Expression Partial Reverse Bitmap GiST GIN
non
non
non
non
non
non
non
non
dans SQL 5.0 MyISAM,
BDB, ou InnoDB tables
HEAP
tables
non
non
non
non
non
non
oui
oui
oui
oui
oui 6
8.2
oui
8.2
(6): Un index fonctionnel de PostgreSQL peut être employé pour renverser l'ordre d'un
champ.
5.3.6.D'autres objets
Domain
Apache Derby
non
Cursor Trigger Function 7 Procedure 7
oui
oui
oui 8
oui 8
External
routine 7
oui 8
26
MySQL
non
oui
oui
oui
oui
oui
PostgreSQL
oui
oui
oui
oui
oui
oui
(7): function et procedure se rapportent à des routines internes écrites en SQL et/ou langue
procédurale comme PL/SQL. External routine se rapporte à celui écrit dans les langues de
type host, telles que C, Java, COBOL, etc... " Stored procedure " est un terme généralement
utilisé pour ces types courants. Cependant, sa définition change entre différents fournisseurs
de base de données.
(8): Dans Derby, les utilisateurs codent des function et des procedures dans Java.
5.3.7.Partitioning
Apache Derby
MySQL
PostgreSQL
Range
Hash
Composite (Range+Hash)
List
non
non
non
non
oui (5.1)
oui (5.1)
oui (5.1)
oui (5.1)
oui
9
oui
9
oui
9
oui 9
(9): PostgreSQL 8.1 fournit support pour partitioning par des contraintes de contrôle.
Range, List et Hash méthodes peuvent être émulées avec PL/pgSQL ou d'autres langues
procédurales.
5.4.Commentaire sur le choix de Base de données
Aujourd'hui en tenant compte de l'évolution des diverses bases de données, je crois que
MySql et PostgreSql continuent à présenter un avantage clair sur Apache Derby. Bien que
MySql soit encore la base de données Open Source plus populaire, je pense que PostgreSql
est aujourd'hui la base de données Open Source la plus avancée qui offre des meilleures
caractéristiques pour le développement d'une application pour l’entreprise principalement par
ses caractéristiques de : ACID, Referential integrity et Transactions.
27
Téléchargement