• Aucun résultat trouvé

MASTER 2 INFORMATIQUE PROFESSIONNELLE RAPPORT DE STAGE

N/A
N/A
Protected

Academic year: 2022

Partager "MASTER 2 INFORMATIQUE PROFESSIONNELLE RAPPORT DE STAGE"

Copied!
27
0
0

Texte intégral

(1)

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

(2)

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.

(3)

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

(4)

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 e- learning, 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.

3Technologies 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é.

(5)

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.

(6)

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 :

(7)

• 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 ci- dessus 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é

(8)

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.

(9)

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é.

(10)

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 e- learning" :

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.

(11)

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.

(12)

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-

(13)

à-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.

(14)

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)

(15)

[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

(16)

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/

(17)

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

(18)

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/)

(19)

o Web Server interne avec prévisualisation sous Mozilla ou IE o Coloration syntaxique du code

o Navigateur de clases

o Recherche à l’aide d’expressions régulières o 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.

(20)

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.

(21)

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é

(22)

• 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

(23)

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

(24)

• 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).

(25)

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 Derby Apache 2004 10.1.3.1 Apache

Licence

MySQL MySQL AB Novembre

1996 5.0 GPL ou

proprietary PostgreSQL PostgreSQL Global Development Group Juin 1989 8.1.4 BSD

5.3.2.Systèmes opérationnels supportés

Windows Mac OS X Linux BSD UNIX

Apache Derby 1 oui oui oui oui oui

MySQL oui oui oui oui oui

PostgreSQL oui oui oui oui oui

(1): La disponibilité de base de données dépend de la machine virtuelle de Java pas sur le logiciel d'exploitation.

(26)

5.3.3.Caractéristiques fondamentaux

ACID 2 Referential

integrity Transactions Unicode

Apache Derby oui oui oui oui

MySQL dépend 3 dépend 3 dépend 3 oui / UTF-8 (3-byte)

& UCS-2

PostgreSQL oui oui oui oui / UTF-8 (4-byte)

(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 Hash Expression Partial Reverse Bitmap GiST GIN

Apache Derby non non non non non non non non

MySQL dans SQL 5.0 MyISAM,

BDB, ou InnoDB tables HEAP

tables non non non non non non

PostgreSQL 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 Cursor Trigger Function 7 Procedure 7 External routine 7

Apache Derby non oui oui oui 8 oui 8 oui 8

(27)

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

Range Hash Composite (Range+Hash) List

Apache Derby non non non non

MySQL oui (5.1) oui (5.1) oui (5.1) oui (5.1)

PostgreSQL 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.

Références

Documents relatifs

SEFCA : Service commun de Formations Continue et par Alternance - Université de Bourgogne N° Siret : 192 112 373 00 589 - Numéro d’organisme de formation : 26.21.P0018.21. Maison

[r]

[r]

Dans la présentation de l’entreprise des éléments chiffrés et comparatifs sont bienvenus, une bibliographie peut être utile ; les collages de sites internet etc… sans adaptation

Cet exemple illustre également une pratique récurrente dans Zope, qui consiste à utiliser systématiquement deux méthodes DTML, standard_html_header et standard_html_footer,

La premi€re ‚tape dans la cr‚ation d’un site Internet est l’‚laboration d’une charte graphique. On appelle charte graphique l'ensemble des codes graphiques,

Celui-ci est composé de 0,25g de bouillon nutritif (Nutrient Broth, Sigma-Aldrich, 1kg) et de 0,05g de levure de bière (Yeast Brewers, Sigma-Aldrich, 1kg) pour 700mL d’eau osmosée.

Dans l’introduction, vous décrirez votre recherche de stage : quelles sont les démarches que vous avez effectuées, quelles sont les difficultés que vous avez rencontrées, quels