02.11.2014 Views

Rapport - Département Informatique

Rapport - Département Informatique

Rapport - Département Informatique

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Université de Nice - Sophia-Antipolis<br />

Faculté des sciences Valrose<br />

28 avenue valrose, 06103 Nice<br />

Travail d’étude et de recherche<br />

Gestion-évaluation<br />

semi-automatique de projets<br />

RAPPORT<br />

1 er juin 2011<br />

Présenté par :<br />

M. Albertini Ken<br />

M. Bertrand Yoann<br />

M. Franot Raphaël<br />

M. Lludice Daniel<br />

Sous la direction de :<br />

M. Huet Fabrice


Remerciements<br />

Nous souhaiterions remercier M. Fabrice Huet pour nous avoir proposé ce sujet de<br />

TER. Nous le remercions également pour ses conseils, ses critiques positives et son encadrement.<br />

Qu’il nous soit aussi permis de remercier l’ensemble des enseignants du Master <strong>Informatique</strong><br />

de la faculté des sciences de Valrose.


Résumé<br />

Nous avons effectué notre Travail d’Étude et de Recherche (TER) sous la direction<br />

de M. Fabrice Huet. Le but de ce travail était de créer un portail Web pour la gestion<br />

et l’évaluation de projets étudiants. Comme pour tout projet informatique, nous avons<br />

effectué un ensemble de tâches afin de répondre à la problématique. Ces tâches peuvent<br />

être résumées en trois grandes phases :<br />

– une phase d’analyse et de conception,<br />

– une phase de développement,<br />

– une phase de tests et de packaging 1 .<br />

La première phase consistait à dresser une étude de l’existant afin de déterminer si des<br />

projets similaires avaient déjà été développés. A partir des informations relevées, nous<br />

avons déterminé les technologies que nous allions utiliser ainsi que la structure générale<br />

de notre portail.<br />

Une fois la première phase réalisée, nous avons commencé le développement de l’application<br />

en déléguant à chacun des membres de l’équipes des tâches d’implémentation en<br />

fonction de son niveau et de sa productivité.<br />

Enfin, la troisième phase a permis d’effectuer des tests et de créer une documentation<br />

pour les futurs utilisateurs de l’application.<br />

Au niveau du pilotage du projet, nous avons définis un diagramme de GANTT que nous<br />

avons dû modifier plusieurs fois lors du TER afin de pallier certains problèmes (manque<br />

de temps, de compétences ou de moyens). En plus de cela, il a été décidé de définir chaque<br />

semaine les tâches prioritaires et de faire un suivi journalier du travail attendu et du travail<br />

effectué. Ces opérations ont globalement permis de mieux appréhender les difficultés<br />

survenues au fur et à mesure du déroulement du projet.<br />

A la fin de ce TER, nous avons réalisé une bonne partie des fonctionnalités demandées.<br />

Néanmoins, il reste quelques fonctionnalités que nous n’avons pas eu le temps d’implémenter<br />

(gestion des groupes d’étudiants et gestion des dates de rendu). Néanmoins, nous avons<br />

développé notre application pour que celle-ci soit la plus évolutive possible, afin de donner<br />

la possibilité à d’autres personnes de continuer notre travail.<br />

1. Création de documentation et mise en forme du livrable.


Table des matières<br />

1 Introduction 1<br />

1.1 Problématique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1<br />

1.2 État de l’art . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3<br />

1.2.1 Solution de gestion de projet . . . . . . . . . . . . . . . . . . . . . 3<br />

1.2.2 Solution d’évaluation de code . . . . . . . . . . . . . . . . . . . . 3<br />

1.2.3 Résultats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4<br />

2 Choix d’implémentation 5<br />

2.1 Expression des besoins . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5<br />

2.2 Étude comparative . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6<br />

2.2.1 Technologie Web . . . . . . . . . . . . . . . . . . . . . . . . . . . 6<br />

2.2.2 Technologies d’évaluation de code . . . . . . . . . . . . . . . . . . 7<br />

2.2.3 Base de données . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8<br />

2.3 Résultats d’étude . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10<br />

2.3.1 GWT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10<br />

2.3.2 Jenkins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10<br />

2.3.3 MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10<br />

3 Travail effectué 12<br />

3.1 Serveur de test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12<br />

3.2 Portail Web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12<br />

3.2.1 Définition des fonctionnalités . . . . . . . . . . . . . . . . . . . . 12<br />

3.2.2 Conception de l’IHM . . . . . . . . . . . . . . . . . . . . . . . . . 13<br />

3.2.3 Implémentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14<br />

3.3 Jenkins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14<br />

3.3.1 Prise en main . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14<br />

3.4 Base de données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15<br />

3.4.1 Conception des tables . . . . . . . . . . . . . . . . . . . . . . . . 15<br />

3.4.2 Remplissage et tests . . . . . . . . . . . . . . . . . . . . . . . . . 15<br />

3.5 Connexions entre les différentes parties . . . . . . . . . . . . . . . . . . . 17<br />

3.5.1 Connexion portail - Jenkins . . . . . . . . . . . . . . . . . . . . . 17<br />

3.5.2 Connexion portail - BD . . . . . . . . . . . . . . . . . . . . . . . 18<br />

3.6 Ajouts de fonctionnalités . . . . . . . . . . . . . . . . . . . . . . . . . . . 19<br />

3.6.1 Authentification et gestion des connexions au portail . . . . . . . 19<br />

3.6.2 Gestion des groupes d’étudiants . . . . . . . . . . . . . . . . . . . 20<br />

3.6.3 Gestion automatique des comptes FTP . . . . . . . . . . . . . . . 20<br />

4


3.6.4 Documentation et mise en forme du livrable . . . . . . . . . . . . 21<br />

3.6.5 Ergonomie de l’IHM . . . . . . . . . . . . . . . . . . . . . . . . . 21<br />

4 Gestion de projet 23<br />

4.1 Stratégie de pilotage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23<br />

4.2 Évolution du planning . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24<br />

4.3 Problèmes rencontrés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24<br />

4.4 Solutions retenues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25<br />

4.5 Travail de chacun . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25<br />

4.5.1 Ken Albertini . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25<br />

4.5.2 Yoann Bertrand . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26<br />

4.5.3 Raphaël Franot . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26<br />

4.5.4 Daniel Lludice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27<br />

5 Conclusion 28<br />

5.1 Travail effectué . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28<br />

5.2 Travail restant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29<br />

5.3 Optimisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30<br />

5.3.1 Simplification de l’installation . . . . . . . . . . . . . . . . . . . . 30<br />

5.3.2 Fonctionnalités . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30<br />

5.4 Gain de connaissances techniques . . . . . . . . . . . . . . . . . . . . . . 31<br />

5.5 Gain de connaissances pratiques . . . . . . . . . . . . . . . . . . . . . . . 31<br />

6 Glossaire 32<br />

Bibliographie 35


Chapitre 1<br />

Introduction<br />

Ce chapitre a pour objectif de présenter le sujet du Travail d’Étude et de Recherche<br />

effectué par Ken Albertini, Yoann Bertrand, Raphaël Franot et Daniel Lludice. Dans<br />

un premier temps, nous traitons de la problématique soulevée par le sujet ainsi que<br />

des différentes fonctionnalités définies par l’encadrant. Dans un second temps, nous<br />

présentons les principaux résultats d’une étude de l’existant que nous avons mené afin de<br />

déterminer les solutions déjà implémentées.<br />

1.1 Problématique<br />

Pour un enseignant, la gestion et l’évaluation de projets étudiants peuvent s’avérer<br />

complexes à cause d’un certain nombre de problèmes :<br />

– non-respect des conditions de rendu (mauvais nom d’archive ou de fichiers, etc.),<br />

– non-respect des dates de rendu,<br />

– problèmes divers (code trop volumineux pour un simple mail, etc.),<br />

– problèmes de fonctionnement une fois le code évalué sur la machine de l’enseignant<br />

(architecture et système d’exploitation différents, bibliothèques manquantes, etc.).<br />

Ces problèmes demandent à l’enseignant un temps de travail supplémentaire. Le but de<br />

notre TER est d’essayer de réduire ce travail fastidieux en implémentant un portail Web<br />

de gestion et d’évaluation de projets. Pour cela, le portail doit implémenter un certain<br />

nombre de fonctionnalités, et ainsi donner la possibilité :<br />

– de gérer des utilisateurs différents,<br />

– de créer et de gérer des projets,<br />

– de contrôler le rendu des étudiants (nom et format des archives, etc.),<br />

– de centraliser la récupération des projets.<br />

En plus de simplifier le travail des enseignants, le portail doit aussi permettre aux<br />

étudiants de soumettre leurs projets afin que ceux-ci soient pré-évalués. Pour éviter les<br />

abus, la soumission du code est gérée par un système de crédits, qui permet à l’étudiant<br />

de déposer son travail un nombre limité de fois. Le nombre de crédits est fixé par l’enseignant<br />

et peut être différent pour chaque projet. En déposant leur code tout au long<br />

du projet (1 crédit pour une soumission), les étudiants peuvent ainsi s’assurer du bon<br />

1


espect des conditions de rendu. Ces conditions peuvent prendre plusieurs formes, comme<br />

par exemple :<br />

– vérifier que le projet est implémenté dans le bon langage,<br />

– vérifier que le projet compile,<br />

– vérifier la présence d’une méthode ”main”,<br />

– s’assurer que le résultat obtenu est conforme au résultat attendu.<br />

– etc.<br />

En résumé, l’objectif du portail est double. Dans un premier temps, il permet aux enseignants<br />

une gestion et une récupération simplifiées des projets (récupération centralisée,<br />

contrôle sur le nom des archives rendues, etc.). Dans un second temps, le portail octroi aux<br />

étudiants un outil qui permet de s’assurer que leur code est conforme aux conditions de<br />

rendu. D’autre part, on peux imaginer que si l’enseignant note les projets sur la machine<br />

qui héberge le serveur, cela peut éviter les problèmes dues aux différences d’architectures<br />

et de système d’exploitation (car l’enseignant et les étudiants ont la même machine de<br />

test).<br />

La figure ci-dessous dresse l’ensemble des fonctionnalités que le portail doit fournir :<br />

Figure 1.1 – Tableau des fonctionnalités du portail.<br />

2


En plus des fonctionnalités ci-dessus, le portail doit mettre l’accent sur la facilité d’utilisation<br />

et l’ergonomie. De plus, l’application doit pouvoir évoluer, en donnant la possibilité<br />

d’implémenter facilement d’autres fonctionnalités (protéger l’exécution des projets dans<br />

des machines virtuelles, gestion de plusieurs promotions, etc.).<br />

1.2 État de l’art<br />

Cette section traite de l’étude que nous avons mené afin de déterminer si d’autres<br />

implémentations répondaient déjà à notre problématique. Nous discutons ici de deux<br />

points ; les applications de gestion de projets étudiant et les applications d’évaluation de<br />

code informatique.<br />

1.2.1 Solution de gestion de projet<br />

Il existe un grand nombre de solutions logicielles permettant la gestion d’étudiants et<br />

de projets à travers un portail Web 1 . Ces solutions offrent des fonctionnalités usuelles,<br />

comme la possibilité de créer et de supprimer des personnes, de gérer des groupes ou<br />

encore de déposer du contenu sur un serveur. Néanmoins, beaucoup de ces solutions<br />

dépassent notre utilisation, en offrant d’autres fonctionnalités, comme la gestion d’emploi<br />

du temps, de relevés de notes ou encore de listes de diffusion. De plus, un grand nombre<br />

de ces solutions ne sont ni open-sources, ni gratuites.<br />

1.2.2 Solution d’évaluation de code<br />

Après quelques recherches, nous avons découvert deux sortes de logiciels permettant<br />

d’évaluer 2 du code ; les logiciels d’intégration continue (IC) et les logiciels de type ”Automated<br />

Judge System” (AJS).<br />

Les logiciels d’intégration continue sont des logiciels utilisées dans certaines formes de programmation.<br />

L’intégration continue permet à des développeurs de s’assurer que l’intégration<br />

du logiciel est faites tout au long du processus de développement. Plus généralement, ces<br />

logiciels permettent d’obtenir des résultats qualitatifs et quantitatifs d’un code donné.<br />

Les logiciels dit ”Automated Judge System” sont utilisés lors de compétitions ou autre<br />

rendez-vous de développeurs. Ils permettent de confronter plusieurs programmes entre<br />

eux afin de déterminer le plus rapide, le moins gourmand en ressources ou encore celui<br />

avec la plus petite taille. Là encore, ce type de programme permet de donner des informations<br />

quantitatives et qualitatives.<br />

1. D’une manière plus générale, ces logiciels traitent du personnel et du contenu (images, vidéos, etc.).<br />

2. Par évaluer, nous entendons compiler et exécuter.<br />

3


1.2.3 Résultats<br />

Notre première analyse montre que notre problématique n’a jamais vraiment été soulevée.<br />

Il existe un ensemble de logiciel permettant la gestion d’étudiants, mais ces derniers<br />

sont souvent trop complets. De plus, ces solutions sont très souvent payantes et leurs<br />

sources ne sont pas disponibles.<br />

Intuitivement, les logiciels d’IC et d’AJS ne sont pas conçus pour l’utilisation que nous<br />

voulons en faire. Néanmoins, cette première étude a permis de voir que les logiciels d’IC<br />

répondent mieux à nos critères, car il n’est pas prévu que notre portail confronte les<br />

projets étudiants entre eux.<br />

4


Chapitre 2<br />

Choix d’implémentation<br />

Cette section traite des choix d’implémentation fait sur les différentes parties de l’application<br />

(technologies Web, plate-forme d’évaluation et base de données). Pour chacune<br />

des parties, nous établissons un bref récapitulatif de nos recherches, puis nous exploitons<br />

les résultats obtenus afin de choisir les technologies les plus adéquates.<br />

2.1 Expression des besoins<br />

Pour pouvoir mener à bien notre projet, nous effectuons dans un premier temps un<br />

travail de recherche sur les différentes technologies Web disponibles. Nous dressons une<br />

liste des critères déterminants que la technologie choisie doit avoir. La liste de ces critères<br />

est présentée ci-dessous :<br />

– Langage déjà connu ; afin d’éviter d’apprendre un nouveau langage.<br />

– Facilité d’implémentation ; (API, code déjà produit, bibliothèques, etc.).<br />

– Technologie plébiscitée ; afin d’augmenter potentiellement la documentation disponible.<br />

– Interopérabilité et évolutivité ; afin de pouvoir modifier et améliorer l’application<br />

au fil du temps.<br />

– Autres (ancienneté de la technologie, facilité de prise en main, etc.).<br />

De la même manière, nous listons ensuite les caractéristiques que la technologie d’évaluation<br />

de code doit avoir :<br />

– gratuité,<br />

– langage d’implémentation (en priorité Java),<br />

– possibilité de compiler des projets implémentés dans plusieurs langages,<br />

– utilisation de machines virtuelles 1 ,<br />

– corrélation de code,<br />

– mise à disposition d’une API (pour le développement de plugins par exemple),<br />

– interopérabilité avec d’autres logiciels et protocoles (Maven, Ant, SSH, etc.)<br />

1. Le fait d’exécuter du code sur une machine virtuelle permet d’éviter de perdre la totalité du serveur<br />

en cas d’exécution d’un code malicieux ou bugué.<br />

5


– documentation (installation, utilisation, javadoc, etc.),<br />

– facilité d’installation,<br />

– facilité d’utilisation et d’administration.<br />

2.2 Étude comparative<br />

2.2.1 Technologie Web<br />

Après avoir effectué la liste des critères, nous avons sélectionné plusieurs technologies<br />

Web.<br />

Technologies AJAX<br />

GWT[1] (Google Web Toolkit) est une ensemble d’outils logiciels développé par Google<br />

permettant de produire des applications Web dynamiques en utilisant JavaScript. Son<br />

avantage réside dans le fait que le code est produit en Java et qu’il existe de nombreuses<br />

documentations. De plus, étant une technologie AJAX, GWT offre une grande<br />

interopérabilité et une bonne évolutivité.<br />

Jaxcent[2] est une alternative à GWT. Il permet lui aussi de créer des pages Web dynamiques<br />

grâce à Java. Il est orienté serveur et permet une bonne évolutivité. Néanmoins,<br />

la qualité de la documentation disponible est inférieure à celle de GWT.<br />

Technologies Adobe<br />

Flash[3] est une application client qui permet d’ajouter des animations ou des objets<br />

interactifs sur une page Web. Facile à implémenter, Flash souffre toutefois de problèmes<br />

d’instabilité sur plusieurs systèmes d’exploitation (Linux par exemple).<br />

Flex[4] est une solution de développement qui permet de développer des applications<br />

internet riches. Relativement simple à prendre en main, Flex utilise les technologies Flash,<br />

MXML et ActionScript. Néanmoins, cette solution souffre des inconvénients de Flash.<br />

Autres technologies<br />

PHP[5] est un langage de scripts libre utilisé pour produire des pages Web dynamiques.<br />

Il est relativement facile à implémenter. De part son ancienneté, il dispose de beaucoup<br />

de documentation et de code déjà produit. Malheureusement, PHP est sujet à de nombreuses<br />

failles de sécurité.<br />

Silverlight[6] est une alternative à Flash développée par Microsoft. Il permet aux développeurs<br />

d’utiliser les outils de développement et les langages Microsoft .NET afin de créer des<br />

applications Web dynamiques fonctionnant dans un moteur de rendu vectoriel.<br />

6


Après avoir récupérer un maximum informations, nous avons comparé ces technologies<br />

entre elles afin de tirer les avantages et les inconvénients de chacune, comme le montre le<br />

tableau récapitulatif suivant :<br />

langage libre code doc. évolutif autres<br />

connu disponible dispo. (inconvénients)<br />

PHP oui oui oui oui non problèmes de sécurité<br />

GWT oui(java) oui oui oui oui relativement complexe<br />

Flex non non oui oui oui problème de stabilité<br />

Flash non non oui oui non lourdeur<br />

Silverlight non non oui oui oui problème de stabilité<br />

Jaxcent oui(Java) oui oui non oui moins plébiscité que GWT<br />

2.2.2 Technologies d’évaluation de code<br />

Une fois les critères établis, nous avons sélectionné plusieurs logiciels d’intégration<br />

continue et de type ”Automated Judge System”.<br />

Logiciels d’intégration continue<br />

Jenkins[7] (anciennement Hudson) est un serveur d’intégration continue libre et opensource<br />

(écrit en Java). Il peut fonctionner dans un conteneur de servlets tel que Tomcat<br />

et peut être interfacé avec d’autres technologies (SVN, CSV, Maven, Ant, etc.). Il dispose<br />

aussi d’une API de développement de plugins permettant d’ajouter des fonctionnalités.<br />

Étant relativement plébiscité dans le domaine de l’intégration continue, Jenkins dispose<br />

d’une bonne documentation et d’un grand nombre d’utilisateurs. De plus, Jenkins peut<br />

compiler et exécuter des programmes de langages différents (Java, C, C++, Python, Php,<br />

etc.).<br />

Bamboo[8] est un logiciel d’intégration continue payant qui dispose de plusieurs plugins<br />

pour ajouter des fonctionnalités qui peuvent être intéressantes dans notre cas d’utilisation<br />

(gestion approfondie des tests par exemple). Il est développé en Java, mais les sources ne<br />

sont disponibles qu’après achat de l’application. Néanmoins, il est capable d’exécuter du<br />

code développé dans des langages comme Java, PHP ou JavaScript.<br />

Continuum[9] est le serveur d’IC d’Apache. Il est libre et open-source (développé en Java).<br />

Il dispose d’une bonne documentation et permet d’être interfacé avec d’autres technologies<br />

(Ant, Maven, CSV). Il est également capable de compiler des programmes C, C++<br />

et Java. Néanmoins, quelques fonctionnalités sont manquantes, comme la corrélation de<br />

code ou la possibilité de supporter des machines virtuelles.<br />

7


Logiciel de type ”Automated Judge System”<br />

Mooshak[10] est une solution logicielle qui permet d’évaluer les performances de plusieurs<br />

codes entre eux. Il est spécialisé pour des compétitions de type ICPC (International Collegiate<br />

Programming Contest). Il utilise des machines virtuelles pour effectuer des tests<br />

et supporte des langages comme C, Pascal, C++ ou Java.<br />

DOMJudge[11] est un concurrent de Mooshak qui offre une interface Web permettant<br />

au jury, aux compétiteurs ou au public de visualiser les résultats des compétitions. Ces<br />

résultats sont modulables et l’application est conçue pour être ergonomique et légère.<br />

Comme les autres solutions citées précédemment, DOMJudge peut compiler et exécuter<br />

du code C, C++ et Java.<br />

Code-cracker[12] est un système libre qui donne la possibilité de faire de la corrélation de<br />

code. Malheureusement, il n’existe pas beaucoup de documentation pour cette solution<br />

logicielle.<br />

Comme pour les technologies Web, nous dressons ensuite un tableau récapitulant les fonctionnalités<br />

des principales solutions logicielles trouvées.<br />

libre langage compilation de machines corrélation<br />

d’implémentation de plusieurs langages virtuelles de code<br />

Jenkins oui java oui oui non<br />

Mooshak oui python oui oui non<br />

DOMJudge oui php oui non non<br />

DWite non visual basic oui oui non<br />

Code-cracker oui c++ oui - oui<br />

Bamboo oui java oui oui -<br />

API documentation interopérabilité autres avantages<br />

de dev. disponible<br />

Jenkins oui oui Ant, Maven, plébiscité, 300 plugins<br />

VMware, VirtualBox facilité d’installation<br />

Mooshak non oui LDAP, ssh bonne flexibilité<br />

DOMJudge non oui SSH, NFS, SCP plusieurs plugins<br />

DWite non non SSH léger<br />

Code-cracker non non CSV -<br />

Bamboo oui oui Maven, Ant plusieurs plugins<br />

Continuum oui oui Maven, Ant développé par Apache<br />

2.2.3 Base de données<br />

Une fois les deux analyses précédentes effectuées, nous avons réfléchi à la nécessité<br />

d’utiliser une base de données. Pour répondre à cette question, nous avons listé dans un<br />

8


premier temps les entités manipulées, afin de savoir s’il y avait un quelconque avantage<br />

à les rendre persistantes.<br />

Voici la liste des entités que notre portail doit pouvoir gérer :<br />

– des utilisateurs aux profils différents (administrateurs, enseignants, étudiants),<br />

– des données (projets soumis, batteries de tests),<br />

– des macro-entités (promotions d’étudiants, groupe de projet, etc.).<br />

Une fois cela fait, nous avons considéré qu’il était effectivement judicieux d’utiliser une<br />

BD dans notre application. Nous avons alors effectué une étude comparative des différents<br />

modèles de base de données, afin de décider quelle technologie nous allions utiliser.<br />

Base de données orientée texte<br />

Une base de données orientée texte (ou Flat File database en anglais), est une base de<br />

données contenue dans un seul fichier texte. On utilise ce type de base de données pour<br />

des systèmes embarqués ou pour des implémentations ne nécessitant pas d’enregistrer des<br />

volumes d’informations trop complexes.<br />

Base de données relationnelle<br />

Une base de données relationnelle stocke les informations dans des tables. Ces tables<br />

sont régis par des règles d’algèbre relationnelle, qui permettent d’interagir avec la base<br />

de données grâce à des requêtes. Les base de données relationnelles apportent un certain<br />

nombre d’avantages :<br />

– une bonne scalabilité.<br />

– une facilité pour spécifier des contraintes d’intégrité sans programmation.<br />

– une théorie solide et des normes reconnues.<br />

– un langage d’interrogation puissant.<br />

– etc.<br />

Base de données orientée objet<br />

Une base de données orientée objet permet de stocker les informations sous forme d’objets.<br />

Utilisant le langage objet Java (via notre implémentation en GWT), nous pouvons<br />

facilement justifier que dans la mesure ou nos entités sont des objets du coté du portail, il<br />

peut être judicieux d’utiliser une base de données objet, afin d’éviter le mapping (transformation)<br />

d’objets Java en autres types de données (texte pour les Flat File database ou<br />

des tuples pour une base de données relationnelle).<br />

Autres modèles de bases de données<br />

Il existe d’autres modèles de bases de données, comme par exemple les bases de données<br />

XML ou objet-relationnel. Ces dernières ne semblant pas adéquates pour notre utilisation,<br />

nous avons décidé de ne pas les étudier.<br />

9


2.3 Résultats d’étude<br />

2.3.1 GWT<br />

En vue de cette étude, notre choix s’est rapidement porté sur GWT pour plusieurs raisons.<br />

Tout d’abord, GWT dispose d’une bonne documentation (javadoc, tutoriels, forum, etc.).<br />

Ensuite, ce dernier permet de mettre en œuvre du JavaScript en codant du Java, nous<br />

n’avons donc pas à apprendre un langage supplémentaire. Enfin, cette technologie peut<br />

s’interfacer avec d’autre éléments grâce à des mécanismes de type RPC, et peut facilement<br />

être déployé 2 .<br />

En revanche, le principal inconvénient de GWT est sa complexité ; ce dernier nécessite en<br />

effet un temps d’adaptation conséquent. Nous avons considéré que cet inconvénient était<br />

un des prix à payer pour ne pas avoir à apprendre un langage supplémentaire (comme<br />

PHP ou Flex) et pour avoir accès à une documentation de bonne facture.<br />

2.3.2 Jenkins<br />

En vue des résultats, notre choix s’est porté sur Jenkins. En effet, de tout les logiciels<br />

étudiés, Jenkins est celui qui correspond le mieux à nos attentes (gratuit, développé en<br />

Java, bonne documentation, fonctionnalités modulables via des plugins, gestion de plusieurs<br />

langages différents, facilité d’utilisation, etc.). De plus, Jenkins peut lui aussi être<br />

intégré dans un serveur Tomcat. Malheureusement, Jenkins ne dispose pas nativement<br />

de toutes les fonctionnalités requises (pas de gestion de corrélation de code par exemple).<br />

Néanmoins, ce manque peut être comblé par l’implémentation d’un plugin, en utilisant<br />

l’API idoine.<br />

2.3.3 MySQL<br />

Pour des raisons d’évolutivité, nous avons décidé de ne pas utiliser une BD de type Flat<br />

File. En effet, si dans le futur le portail implémente d’autres fonctionnalités (gestion<br />

administrative des étudiants par exemple), une base de données de ce type pourrait ne<br />

pas répondre efficacement à nos attentes à cause d’une trop grande complexité. Le portail<br />

se voulant évolutif, nous avons décidé de ne pas retenir ce type de base de données.<br />

De la manière, nous avons décidé de ne pas choisir les bases de données orientées objet<br />

car nous n’avons pas besoin de rendre les objets du portail persistants.<br />

Nous avons donc décidé de gérer nos entités via une base de données relationnelle, car ce<br />

modèle nous est le plus familier et qu’il offre les avantages cités précédemment.<br />

En ce qui concerne le Système de Gestion de Base de Données (SGBD) utilisé, notre choix<br />

s’est porté sur MySQL, car ce logiciel est léger, open-source, fiable et très utilisé. De plus,<br />

MySQL est complètement compatible avec Java 3 , ce qui permet d’éviter un maximum<br />

les problèmes d’interfaçage entre la base de données et le portail.<br />

2. On peut par exemple générer un fichier .war et l’uploader directement dans un serveur Tomcat<br />

3. Le driver (JDBC), faisant la connexion entre Java et MySQL a d’ailleurs été étudié dans un module<br />

de M1.<br />

10


Nous avons vu dans cette première partie les différents choix technologiques que nous<br />

avons fait. Ces choix ont été effectués à partir d’études préliminaires visant à déterminer<br />

les solutions répondants le mieux à nos critères.<br />

Nous avons choisi de répondre à la problématique de ce TER en utilisant les technologies<br />

suivantes :<br />

– GWT pour le portail Web,<br />

– Jenkins pour la structure d’évaluation du code,<br />

– MySQL pour stocker les entités (utilisateurs, projets etc.)<br />

De plus, nous avons vu que GWT et Jenkins peuvent facilement être intégrés à Tomcat.<br />

De ce fait, nous avons décidé d’utiliser ce container de Servlets. Le schéma suivant donne<br />

un premier aperçu de l’architecture globale de l’application.<br />

Figure 2.1 – Vue globale de l’architecture de l’application.<br />

11


Chapitre 3<br />

Travail effectué<br />

Dans ce chapitre, nous expliquons le travail effectué d’un point de vue technique. Nous<br />

traitons ici des différentes méthodes d’implémentation et outils utilisés pour mener à bien<br />

notre projet. Ce chapitre se décompose en six axes. Le premier est un récapitulatif du<br />

serveur que nous avons utilisé pour nos tests. Les trois suivants traitent du travail effectué<br />

sur chacune des trois parties de l’application (portail Web, Jenkins et base de données).<br />

Le quatrième axe décrit les implémentations effectuées pour relier les différentes parties<br />

entre elles. Enfin, le dernier axe décrit les fonctionnalités ajoutées et la documentation<br />

produite.<br />

3.1 Serveur de test<br />

Nous avons utilisé une machine personnelle pour effectuer nos tests d’implémentation.<br />

Cette machine a été configurée pour pouvoir être accessible depuis Internet. Nous avons<br />

pour cela mis en place un DNS 1 et nous avons configuré le routeur et le firewall de la<br />

machine. Le serveur a ensuite accueilli l’ensemble des outils et applications utilisées par<br />

notre portail. Voici les caractéristiques de la machine de test :<br />

– processeur : Intel(R) Pentium(R) 4 CPU 1.80GHz<br />

– mémoires : 512 Mo<br />

– système : Fedora 14 ”Laughlin”<br />

3.2 Portail Web<br />

3.2.1 Définition des fonctionnalités<br />

Pour bien séparer les traitements, nous considérons trois types d’utilisateurs différents :<br />

– l’administrateur,<br />

– les enseignants,<br />

– les étudiants,<br />

1. Domain Name System<br />

12


La différence entre les trois types d’utilisateurs réside dans le nombre de fonctionnalités.<br />

En effet, un administrateur possède toutes les fonctionnalités des enseignants et des<br />

étudiants. Un enseignant, quant à lui, possède des fonctionnalités supplémentaires par<br />

rapport à un étudiant. En résumé, nous pouvons dire que l’ensemble des fonctionnalités<br />

d’un type est un sous-ensemble des fonctionnalités du type supérieur.<br />

3.2.2 Conception de l’IHM<br />

Une fois les fonctionnalités définies, nous avons rapidement fait un prototype de l’interface<br />

du portail Web afin d’avoir un premier aperçu. Pour ce faire, nous avons utilisé le<br />

logiciel FlexBuilder (un IDE pour développer en Flex) car ce dernier permet de réaliser<br />

rapidement des interfaces graphiques grâce à un éditeur 2 . Le fait que le langage soit du<br />

Flex n’est pas dérangeant dans la mesure ou nous voulons simplement avoir un rendu<br />

graphique, si possible plus pertinent et agréable que de simple dessin.<br />

Cette conception a montré que la plupart des menus pouvaient être conçus selon le même<br />

principe. Nous avons donc décidé d’utiliser des onglets pour séparer les menus en fonction<br />

des entités (un onglet pour gérer les projets, un onglet pour les enseignants, etc.). De ce<br />

fait, un utilisateur n’est pas submergé par les informations lors de sa connexion. De plus,<br />

nous avons décidé d’utiliser des listBox pour lister les entités (enseignants, étudiants,<br />

etc.), afin de toujours avoir une vision assez globale du système. La figure suivante donne<br />

une idée du rendu obtenu :<br />

Figure 3.1 – Prototype de l’IHM pour la vue ”enseignant”, vue par un administrateur.<br />

Du point de vue de l’ergonomie, nous avons essayé de garder la même logique 3 quel que<br />

soit le profil utilisateur. Nous avons décidé de faire cela pour qu’une personne ayant deux<br />

comptes aux profils différents (un administrateur qui est aussi enseignant par exemple)<br />

n’ait aucunes difficultés à passer d’un compte à l’autre.<br />

2. Cet éditeur permet de disposer graphiquement des boutons et des menus avec la souris.<br />

3. Nous entendons par logique la disposition des éléments (boutons, menus, etc.) dans l’interface.<br />

13


Ce prototype a aussi permis de faire la liste des widgets GWT (boutons, listBox, onglet,<br />

etc.) que nous allions utiliser, afin de commencer à les étudier.<br />

3.2.3 Implémentation<br />

Une fois le prototype défini, nous avons développé le portail en fonction de ce dernier.<br />

Pour ce faire, nous avons utilisé des tutoriels mis en lignes par Google pour nous aider<br />

dans notre démarche. D’un point de vue architectural, notre application Web se compose<br />

de deux parties :<br />

– une partie client, qui contient l’IHM et les interfaces.<br />

– une partie serveur, qui contient les classes effectuant le traitement.<br />

Dans un premier temps, nous avons implémenté le coté client pour avoir rapidement un<br />

squelette (menu, boutons, onglets) de l’application. Ce squelette a permis d’avoir une<br />

base sur laquelle greffer d’autres fonctionnalités d’une manière itérative.<br />

3.3 Jenkins<br />

3.3.1 Prise en main<br />

Jenkins permet la création de ”jobs”, qui sont représentés sous la forme d’un espace<br />

disque (ou workspace et d’un fichier de configuration (config.xml). L’espace disque sert<br />

à stocker sur le serveur le code à compiler (un .c par exemple). Le fichier config.xml,<br />

quant à lui, permet de spécifier le travail à effectuer lorsque l’on demande l’exécution<br />

du job. Le fichier de configuration peut contenir par exemple des commandes Bash, qui<br />

seront exécutées à chaque fois que le serveur reçoit l’ordre d’exécuter (ou ”builder”) le<br />

job en question. Une fois le job exécuté, les résultats de l’exécution sont stockés dans le<br />

workspace, permettant de ce fait de garder une trace des précédents builds.<br />

Le but de cette prise en main a permis de comprendre le fonctionnement de l’application,<br />

mais aussi d’en déterminer les limites et les faiblesses. Par exemple, nous avons déterminé<br />

que même si Jenkins possède une interface web (voir figure 3.2), il est possible d’interagir<br />

avec le serveur pour manipuler un job à distance 4 .<br />

4. Il est ainsi possible de créer, supprimer et compiler un job. Il est aussi possible de récupérer les<br />

résultats d’exécution après une compilation, de recevoir les résultats de la console, etc.<br />

14


Figure 3.2 – Interface Web de Jenkins.<br />

3.4 Base de données<br />

3.4.1 Conception des tables<br />

La première version de la BD contenait une table pour chaque entités (administrateurs,<br />

enseignants, étudiants, groupes, projets) et utilisait une table pour les unir via<br />

leurs clés primaires.<br />

Après réflexion et confrontation des idées, il s’est avéré qu’une unique table Personnes<br />

allait mieux convenir pour réunir les trois types d’utilisateurs, car ces derniers sont<br />

schématisés avec plus ou moins les mêmes informations (un nom, un prénom, une adresse<br />

email, etc.). De plus, nous nous sommes rendu compte que pour certaines fonctionnalités<br />

(l’authentification pour se connecter au portail par exemple), la multiplication de tables<br />

induit une multiplication des appels à la BD.<br />

Une fois le travail terminé, nous avons obtenu les tables suivantes :<br />

– ”Personne” ; qui définit un utilisateur (administrateur, enseignant ou étudiant).<br />

– ”Projet”, qui définit un projet (exemple : projetXML).<br />

– ”Groupe” 5 , qui constitue un ensemble d’étudiants.<br />

– ”Association”, qui lie les 3 tables précédentes.<br />

3.4.2 Remplissage et tests<br />

La conception précédente nous a donné un ensemble de tables (Personne, Groupe,<br />

Projet et Association). Malheureusement, le remplissage de ces dernières a soulevé un<br />

5. Afin de ne pas confondre les groupes d’options avec les groupes d’étudiants, nous appelons ”multinômes”<br />

les groupes d’étudiants (monôme, binôme, etc.).<br />

15


ensemble de problème concernant la table Association. Pour pallier ce problème, nous<br />

avons découpé Association en plusieurs tables :<br />

– AssociationProjetGroupe ; qui lie un projet à un ou des groupes.<br />

– AssociationProjetFichiers ; qui lie un projet aux éventuels fichiers de tests apportés<br />

par l’enseignant pour ce projet.<br />

– AssociationGroupePersonne ; qui lie un groupe à une ou n personnes.<br />

– AssociationGroupeFichiers ; qui ≪ conserve ≫ les fichiers qu’un groupe soumet a la<br />

compilation.<br />

– AssociationEnseignantProjet ; qui permet à plusieurs enseignants d’être associés à<br />

un projet 6 .<br />

La figure suivante représente la structure finale de la base de données :<br />

Figure 3.3 – Structure de la base de données.<br />

Une fois la structure principale mise en place, nous avons remplis les tables avec quelques<br />

tuples afin de pouvoir effectuer des tests. Ces tests ont permis de soulever certaines choses<br />

tel que :<br />

6. Fonctionnalité non-utilisée pour l’instant.<br />

16


– un problème avec les clés primaires mal ciblées par les clés étrangères,<br />

– un problème d’unicité et d’indexation.<br />

Ces problèmes mineurs n’ont pas nécessité de refaire la conception de la base, mais ont<br />

permis de s’assurer de la bonne intégrité des tables.<br />

3.5 Connexions entre les différentes parties<br />

3.5.1 Connexion portail - Jenkins<br />

Comme nous l’avons vu précédemment, Jenkins peut être appelé à distance. Pour ce<br />

faire, il existe deux technologies. La première est une API offerte par Jenkins, dont le<br />

but est d’offrir un ensemble de méthode pour implémenter les fonctionnalités du serveur<br />

d’intégration continue dans un programme Java.<br />

La deuxième technologie consiste à utiliser des méthodes HTTP (HTTPMethod de type<br />

POST ou GET). Ces méthodes contiennent des ordres qui sont passés directement au<br />

serveur Jenkins.<br />

Nous avons décidé d’utiliser les méthodes HTTP. Pour cela, nous avons implémenté une<br />

servlet 7 qui utilise des requêtes HTTP en spécifiant l’URL de Jenkins. De cette façon, il<br />

est possible de manipuler des jobs (création, suppression ou modification) et de récupérer<br />

des informations sur ces derniers (dernière compilation réussie, résultat de la console,<br />

etc.). La servlet étant exécuté via le portail, on s’affranchi ainsi de l’interface graphique<br />

de Jenkins. La figure suivante permet de mieux comprendre le fonctionnement de cette<br />

servlet :<br />

Figure 3.4 – Fonctionnement d’une servlet dialoguant avec Jenkins.<br />

Avec cette première implémentation, la servlet de communication à Jenkins n’était pas<br />

7. Une servlet est une classe Java qui permet d’ajouter des fonctionnalités à un serveur.<br />

17


encore en mesure d’envoyer du code (.c ou .java par exemple). En effet, pour faire cela,<br />

il faut utiliser un protocole de transfert de fichier (le protocole HTTP n’étant pas prévu<br />

pour cela).<br />

Utilisation d’un FTP<br />

Pour pouvoir envoyer du code à Jenkins, nous avons utilisé le protocole FTP. Pour ce faire,<br />

nous avons développé une servlet qui effectue des connexions à vsftp, un serveur FTP sur<br />

Linux. Le problème d’une connexion FTP est qu’elle nécessite le plus souvent le login et<br />

le mot de passe d’un utilisateur Unix (root par exemple). Nous avons donc paramétré<br />

vsftp pour que ce dernier accepte les utilisateurs de la base de données. De de fait, un<br />

utilisateur logué sur le portail peut envoyer son code au serveur en étant automatiquement<br />

authentifié. Cette procédure permet de ne pas transformer les utilisateurs contenus dans<br />

la BD en utilisateur Unix.<br />

Liaison FTP - Jenkins<br />

Une fois le code déposé sur le FTP, le serveur déclenche la servlet qui dialogue avec Jenkins<br />

(figure précédente). Cette dernière se charge de créer un job et d’indiquer à Jenkins le<br />

chemin du fichier récemment uploadé. Jenkins récupère le fichier, le compile et l’exécute,<br />

puis transmet le résultat à la servlet. Cette dernière propage alors le résultat au portail<br />

qui l’affiche à l’utilisateur.<br />

3.5.2 Connexion portail - BD<br />

Nous avons aussi utilisé une servlet pour communiquer avec la base de données. Cette<br />

servlet utilise un driver JDBC 8 ) pour se connecter à MySQL.<br />

Une fois la connexion établie, il est possible d’effectuer un traitement sur la BD. Nous<br />

avons décidé d’implémenter différents traitements à partir de l’IHM du portail. Ces traitements<br />

regroupent par exemple :<br />

– la possibilité de créer/modifier/supprimer des utilisateurs (enseignants, étudiants,<br />

etc.),<br />

– la possibilité de créer/modifier/supprimer des projets,<br />

– la possibilité de visualiser les informations des différentes entités (projets, utilisateurs,<br />

etc.),<br />

– etc.<br />

L’annexe 2 présente deux exemples d’interrogation de la base de données via des requêtes<br />

SQL.<br />

Lorsqu’un utilisateur déclenche un événement qui doit modifier la BD, le portail demande<br />

à la servlet d’effectuer le traitement. La servlet s’exécute en déclenchant la bonne requête<br />

SQL qui a été pré-remplie avec les valeurs spécifiées par l’utilisateur. Par exemple, dans<br />

le cas d’une création d’un enseignant, la servlet déclenche une requête SQL en passant en<br />

paramètre les informations spécifiées par l’utilisateur (nom de l’enseignant, prénom, etc.)<br />

8. Java DataBase Connectivity<br />

18


Une fois la requête exécutée, la servlet reçoit une réponse de la BD. Cette réponse transite<br />

jusqu’à la partie cliente du portail. En fonction de cette réponse, l’utilisateur reçoit un<br />

message qui atteste de la réussite ou de l’échec de la création d’un nouvel enseignant. La<br />

figure suivante montre le fonctionnement d’un appel à la BD via le portail Web :<br />

Figure 3.5 – Exécution d’une requête SQL de création d’utilisateur à partir du portail<br />

Web.<br />

3.6 Ajouts de fonctionnalités<br />

3.6.1 Authentification et gestion des connexions au portail<br />

Nous avons vu que chaque type d’utilisateur possède son propre jeu de fonctionnalités.<br />

Ces fonctionnalités sont regroupés dans des pages (pageAdministrateur, pageEtudiant,<br />

pageEnseignant), qui sont des classes Java regroupant les widgets (boutons, onglet, etc.)<br />

ainsi que les appels aux servlets. Pour pouvoir faire en sorte que chaque utilisateur se<br />

connecte sous sa propre page en fonction de son profil, nous avons décidé d’implémenter<br />

un mécanisme d’authentification à l’entrée de l’application.<br />

Nous avons développé une servlet qui vérifie la présence ou non de l’utilisateur dans la<br />

base de données. Le résultat de la requête permet de charger une des pages en fonction<br />

du profil de l’utilisateur.<br />

Malheureusement, cette première version n’était pas suffisante, car le mot de passe de<br />

l’utilisateur transitait en clair sur le réseau. Nous avons donc ajouté une méthode de<br />

cryptage md5. Cette méthode crypte localement le mot de passe en une chaîne alphanumérique<br />

de 32 caractères, puis l’envoie à la base de données 9 . Cette dernière compare<br />

alors le login et le mot de passe crypté. Si le résultat de la requête est vide, cela veut<br />

9. Cette technique est couramment utilisée par les personnes voulant utiliser des mots de passe cryptés<br />

avec GWT<br />

19


dire le couple login/mot de passe n’est pas correct, l’utilisateur est donc invité à réitérer<br />

sa tentative de connexion. En revanche, si le résultat de la requête n’est pas vide, la<br />

méthode d’authentification récupère dans la base le profil de l’utilisateur et charge la<br />

page correspondante (pageEnseignant si le couple login/mot de passe spécifié appartient<br />

à un enseignant, etc.). La figure suivante montre l’algorithme derrière le mécanisme d’authentification<br />

au portail :<br />

Figure 3.6 – Mécanisme d’authentification au portail Web.<br />

3.6.2 Gestion des groupes d’étudiants<br />

Un projet pouvant être effectué par plusieurs étudiants, nous avons décidé de donner<br />

la possibilité au portail de gérer les groupes (binômes, trinômes, etc.) d’étudiants. Par<br />

manque de temps, nous n’avons pas eu le temps d’implémenter complètement cette fonctionnalité.<br />

Néanmoins, nous avons construit l’application de façon à ce que cette dernière<br />

puisse accepter facilement la gestion des groupes. En effet, nous avons créé la vue permettant<br />

à un enseignant de créer et modifier les groupes pour un projet donné, ainsi que<br />

les tables de la base de données pour accepter une telle implémentation.<br />

3.6.3 Gestion automatique des comptes FTP<br />

Chaque utilisateur du portail possède son propre espace sur le serveur FTP. Pour<br />

créer ces espaces automatiquement, nous avons implémenté une classe dont le but est de<br />

créer un répertoire personnel pour chaque utilisateur de la table ”Personne”. Cette classe<br />

se charge aussi d’affecter des droits particuliers aux utilisateurs. Ainsi, chaque étudiant<br />

est automatiquement monté dans son répertoire personnel, sans avoir la possibilité de<br />

voir les dossiers des autres étudiants. En revanche, les enseignants et l’administrateur ont<br />

la possibilité de voir les répertoires des étudiants.<br />

20


3.6.4 Documentation et mise en forme du livrable<br />

Un des points importants de notre TER était de faire quelques choses de facilement<br />

utilisable et compréhensible par d’autres personnes. Pour ce faire, nous avons attaché un<br />

soin particulier à la rédaction de la documentation et à la mise en forme de l’application<br />

dans sa version finale.<br />

Documentation utilisateur<br />

Pour rendre l’application plus ergonomique, nous avons écrit une documentation utilisateur<br />

expliquant le fonctionnement du portail. Cette documentation est déclinée en<br />

plusieurs versions (une par type d’utilisateur). Elle permet de comprendre comment utiliser<br />

les fonctionnalités de l’application. L’annexe 1 permet de voir à quoi ressemble cette<br />

documentation utilisateur.<br />

Mise en forme du livrable<br />

Une fois le code nettoyé et commenté, nous avons créé un fichier .war contenant notre<br />

portail. Ce fichier peut simplement être déposé dans un serveur Tomcat pour pouvoir<br />

être utilisé. Néanmoins, pour que le portail fonctionne, la machine hébergeant le serveur<br />

Tomcat doit posséder l’ensemble des applications utilisées par le portail (MySQL, vsftp,<br />

Jenkins, etc.).<br />

Documentation d’installation<br />

Pour réduire la complexité d’installation des différentes applications utilisées par le portail<br />

Web, nous avons écrit un tutoriel qui décrit les différentes étapes et technologies à installer<br />

pour utiliser le portail. Cette documentation, plutôt technique, est réservé principalement<br />

à l’administrateur du portail.<br />

3.6.5 Ergonomie de l’IHM<br />

Pour voir si l’application était ergonomique, nous avons fait tester le portail par deux<br />

personnes. Ces utilisateurs (des étudiants volontaires), ont d’abords utilisé l’application<br />

pendant une dizaine de minutes avant de répondre à un questionnaire de satisfaction. Ce<br />

questionnaire est divisé en 3 parties :<br />

– une partie A : dont le but est de noter le portail sur quelques critères.<br />

– une partie B : dont le but est de noter les tests utilisateurs (utilité des tâches et<br />

facilité de compréhension)<br />

– une partie C : qui permet aux utilisateurs de donner leur avis (qualités, défauts,<br />

fonctionnalités à ajouter, etc.)<br />

Ensuite nous avons demandé aux utilisateurs d’exécuter quelques tâches afin de les chronométrer<br />

pour s’assurer que les fonctionnalités étaient bien réalisables rapidement 10<br />

10. Dans un contexte réelle d’étude d’interface, cette méthode permet de s’assurer que l’application<br />

fait ce qu’on lui demande (efficacité) et qu’elle le fait dans un minimum d’effort (efficience).<br />

21


La liste ci-dessous montre les quelques tâches que les utilisateurs ont effectué :<br />

En tant qu’administrateur :<br />

– Créer trois étudiants (nom et informations imposés).<br />

– Modifier le prénom d’un des enseignants (prénom imposé).<br />

En tant qu’enseignant :<br />

– Créer un projet (nom et informations imposés).<br />

– Uploader un jeu de tests pour ce projet (choix du fichier imposé).<br />

En tant qu’étudiant :<br />

– Visualiser les infos d’un des enseignants.(choix libre).<br />

– Soumettre un code (choix du fichier imposé).<br />

Les résultats de cette étude sont disponibles en annexe 4. Néanmoins, nous pouvons<br />

dire ici que ces tests utilisateurs ont permis de soulever quelques problèmes comme par<br />

exemple :<br />

– Le manque de pertinence pour certains messages de popup (pas assez d’informations).<br />

– La nécessité d’appuyer sur le bouton ”Afficher Infos” pour charger les informations.<br />

– Le manque d’informations (format des dates non spécifié) dans le menu de création<br />

d’un projet.<br />

– Le panneau ”descriptif” d’un projet trop petit.<br />

Il pourrait être judicieux de prendre en compte ses critiques et de modifier le code pour<br />

pallier aux problèmes.<br />

22


Chapitre 4<br />

Gestion de projet<br />

Ce chapitre traite du pilotage du TER. Nous présentons dans un premier temps les<br />

mécanismes mis en place pour gérer le projet ainsi que le planning prévisionnel. Dans<br />

un second temps, nous discutons de l’évolution du planning prévisionnel au fil du projet.<br />

Nous traitons ensuite des problèmes logistiques rencontrés ainsi que des solutions retenues<br />

pour y pallier. Enfin, la dernière partie de ce chapitre a pour but de présenter le<br />

travail de chacun des membres du groupe.<br />

4.1 Stratégie de pilotage<br />

Nous avons mis à notre disposition un ensemble d’outils pour que le pilotage de notre<br />

projet soit le plus aisé possible. Pour cela, nous avons défini un diagramme de GANTT 1<br />

qui a permis d’avoir une représentation graphique des différentes tâches hebdomadaires<br />

à exécuter. Nous avons aussi mis en place une politique de gestion des risques afin de<br />

pallier à certains problèmes (manque de productivité, perte d’un membre, etc.).<br />

En plus de cela, nous avons utilisé l’environnement de gestion de projet Assembla[13],<br />

qui met à la disposition des développeurs plusieurs outils 2 , comme par exemple :<br />

– un SVN,<br />

– un site de type Wiki (pour partager des informations),<br />

– un partage de documents éditables de type Google Docs,<br />

– des stand’up (voir figure 4.1) qui permettent à un membre de l’équipe de dire ce<br />

qu’il a fait ou va faire durant sa journée de travail,<br />

– un serveur pour stocker des sauvegardes du code et des documents produits.<br />

De plus, ne travaillant pas au même endroit, nous avons utilisé le logiciel Skype pour<br />

communiquer entre nous. Enfin, nous avons fait des réunions hebdomadaires avec notre<br />

tuteur afin de définir les tâches prioritaires.<br />

1. voir annexe 3.<br />

2. Ces outils sont accessibles directement depuis Internet.<br />

23


Figure 4.1 – Mécanisme de stand’up.<br />

4.2 Évolution du planning<br />

Au fur et à mesure de l’avancement du projet, nous avons du revoir notre planning<br />

prévisionnel. La première raison à cela est que le planning était très optimiste et ne<br />

prenait pas en compte les difficultés de certains (problèmes de compréhension, problèmes<br />

pour installer des applications, etc.). Néanmoins, nous avons rapidement fait face à la<br />

situation en restructurant et en redistribuant les tâches.<br />

4.3 Problèmes rencontrés<br />

Nous avons rencontré plusieurs problèmes tout au long de notre TER :<br />

– des problèmes techniques (installations et configurations des logiciels utilisés, compréhensions,<br />

etc.),<br />

– des problèmes logistiques (membres géographiquement distants, niveaux différents),<br />

– des problèmes humains (départ d’un membre de l’équipe, manque de compétences).<br />

Problèmes techniques<br />

Notre implémentation nécessitant plusieurs logiciels différents (Jenkins, Eclipse, plugin<br />

Eclipse GWT, Tomcat, MySQL, PhpMyAdmin, Ant, etc.), nous avons installé ces logiciels<br />

sur nos machines. Malheureusement, certains ont eu du mal à effectuer ces étapes et cela<br />

nous a un peu ralenti dans notre implémentation.<br />

Problèmes logistiques<br />

N’étant pas géographiquement au même endroit, nous avons utilisé le logiciel Skype pour<br />

dialoguer entre nous. Ce type de communication peut être à la base d’une mauvaise<br />

compréhension d’un ordre ou d’une explication.<br />

24


Problèmes humains<br />

Après quelques semaines de travail, nous avons perdu un membre du projet qui, pour des<br />

raisons personnelles, a décidé de ne plus travailler. Ce problème a été de loin le plus difficile<br />

à gérer car il est survenu à un moment critique (début d’implémentation) et a perduré<br />

durant la quasi-totalité du projet. De plus, même si la gestion des risques prévoyait la<br />

perte éventuelle d’un membre, nous n’espérions pas tomber dans ce cas de figure, de peur<br />

de voir notre motivation et notre productivité décroître drastiquement.<br />

4.4 Solutions retenues<br />

Pour essayer de pallier aux problèmes énoncés ci-dessus, nous avons mis en place<br />

un certain nombre de solutions. Pour les problèmes techniques, nous avons essayé de<br />

dépanner la personne qui avait du mal avec une installation, en lui faisant part de notre<br />

expérience de l’installation et de la configuration du logiciel utilisé.<br />

Pour les problèmes d’ordre logistique, nous avons décidé pendant quelques temps, de<br />

nous retrouver physiquement au même endroit afin d’augmenter notre efficacité et notre<br />

motivation. Ce choix nous a aussi permis de résoudre les problèmes lié à Skype (difficulté<br />

pour expliquer et comprendre les choses, dialoguer plus facilement, etc.).<br />

Enfin, pour la perte d’un des membres, nous avons redéfini les priorités et nous avons<br />

réaffecté les tâches que cette personne devait faire. Cette réaffectation a dépendu de la<br />

productivité des autres membres.<br />

4.5 Travail de chacun<br />

4.5.1 Ken Albertini<br />

Analyse et conception<br />

– étude comparative des logiciels d’évaluation de code.<br />

Développement<br />

– servlet de connexion au serveur FTP.<br />

Documentation<br />

– document sur l’étude comparative des logiciels d’évaluation de code.<br />

25


4.5.2 Yoann Bertrand<br />

Analyse et conception<br />

– étude des fonctionnalités,<br />

– étude de l’IHM,<br />

– étude de l’architecture,<br />

Développement et production<br />

– mise en forme du code du portail (nettoyage, commentaires, corrections mineures),<br />

– servlet de connexion à Jenkins,<br />

– servlet d’authentification au portail,<br />

– code de gestion des utilisateurs FTP (création automatique des répertoires personnels),<br />

– connexion entre Jenkins et le serveur FTP,<br />

– configuration de la machine de tests (installation, configurations système et réseau),<br />

– intégration et tests des différentes parties de code.<br />

Chef de projet<br />

– pilotage du projet (distribution des tâches, dialogue avec l’enseignant),<br />

– mise en forme et validation des documents.<br />

Documentation<br />

– mise en forme du rapport et de la présentation,<br />

– tests utilisateur pour la partie IHM,<br />

– diagramme de GANTT,<br />

– documentation d’installation.<br />

4.5.3 Raphaël Franot<br />

Analyse et conception<br />

– étude comparative des technologies de base de données,<br />

– étude des fonctionnalités,<br />

– étude de l’IHM,<br />

– étude de l’architecture,<br />

Développement et production<br />

– développement du portail,<br />

– servlet de connexion à la base de données,<br />

– servlet de connexion au serveur FTP,<br />

– mise en forme du feedback de Jenkins,<br />

– intégration des requêtes SQL au portail,<br />

– gestion des tests sur Jenkins,<br />

– intégration et tests des différentes parties de code,<br />

26


– création du livrable.<br />

Documentation<br />

– participation au rapport,<br />

– document sur l’étude des bases de données.<br />

4.5.4 Daniel Lludice<br />

Analyse et Conception<br />

– étude comparative des technologies web,<br />

– étude de l’architecture BD,<br />

– étude de l’architecture globale.<br />

Développement et production<br />

– création et modification de la base de données,<br />

– développement des requêtes SQL,<br />

– tests de la BD.<br />

Documentation<br />

– participation au rapport,<br />

– document sur l’étude des technologies web,<br />

– documentation utilisateur.<br />

27


Chapitre 5<br />

Conclusion<br />

Ce chapitre de conclusion est divisé en deux partie. La première permet de lister le<br />

travail effectué, le travail restant à faire et les optimisations possibles. La deuxième partie<br />

permet de donner notre avis sur les différents acquis que ce TER a apporté.<br />

5.1 Travail effectué<br />

Nous avons développé une application qui permet les actions suivantes : (Adm = Administrateur,<br />

En = Enseignant, Et = Étudiant).<br />

– Se connecter au portail en utilisant MySQL. (Adm,En,Et)<br />

– Créer des étudiants. (Adm)<br />

– Créer des enseignants. (Adm)<br />

– Créer des projets. (Adm, En)<br />

– Supprimer des étudiants. (Adm)<br />

– Supprimer des enseignants. (Adm)<br />

– Supprimer des projets. (Adm, En)<br />

– Modifier les informations d’un utilisateur. (Adm)<br />

– Modifier les informations d’un projet. (Adm, En)<br />

– Visualiser les informations d’un utilisateur. (Adm, En, Et)<br />

– Soumettre du code. (Adm, En, Et)<br />

– Soumettre un jeu de test. (Adm, En, Et)<br />

– Voir les résultats d’un projet. (Adm, En, Et)<br />

Pour pouvoir utiliser les fonctionnalités ci-dessus, nous avons effectué un certain nombre<br />

de connexion entre les différentes parties de notre application :<br />

– Connexion Portail - MySQL<br />

– Connexion Portail - Jenkins<br />

– Connexion Portail - Serveur FTP<br />

– Connexion Serveur FTP - Jenkins<br />

– Connexion MySQL - Serveur FTP<br />

28


Nous avons aussi écrit plusieurs documents pour que notre travail soit réutilisable :<br />

– des documents sur les études préliminaires,<br />

– des documentations utilisateurs,<br />

– une documentation d’installation,<br />

– un certain nombres de schémas descriptifs et annexes.<br />

Enfin, nous avons effectué des tests pour valider certaines parties de l’application :<br />

– tests utilisateurs pour l’IHM,<br />

– tests divers avant et pendant le développement.<br />

5.2 Travail restant<br />

Nous n’avons pas effectué la totalité des tâches que nous devions faire. En effet, il<br />

manque un certain nombre de fonctionnalités, comme par exemple :<br />

– La gestion des dates de rendus et des crédits, afin de bloquer le dépôt de code après<br />

échéance.<br />

– L’implémentation de la virtualisation, qui permettrait d’exécuter du code dans des<br />

machines virtuelles, afin d’éviter les problèmes d’exécution d’un code malicieux ou<br />

plein de bugs.<br />

– La corrélation de code, pour pouvoir comparer des projets entre eux afin de s’assurer<br />

que les étudiants n’ont pas utilisé le même code.<br />

– Gérer les groupes d’étudiant, comme des binômes par exemple.<br />

– Créer plusieurs utilisateurs à la fois, afin d’éviter un remplissage de la BD à la main.<br />

Néanmoins, nous avons tout fait pour que ces fonctionnalités soient facilement ajoutées<br />

au portail. En effet, la base de données ainsi que l’architecture globale de l’application<br />

ont été développées dans ce sens 1 . Ainsi, pour les crédits et les dates, il suffirait de coder<br />

une classe qui interroge la BD pour savoir si l’étudiant dispose encore de crédits, et qui<br />

pourrait simplement griser le bouton d’upload le cas échéant.<br />

Pour le remplissage automatique de la base, il faudrait d’implémenter une requête SQL<br />

qui prend un fichier texte en paramètre et remplie automatiquement la base en fonction<br />

du contenu du fichier.<br />

De la même façon, le mécanisme de corrélation de code pourrait être fait grâce à une<br />

Servlet qui comparerait les codes entre eux, grâce à des commandes Unix comme chksum<br />

ou comm.<br />

Enfin, il existe déjà un plugin Jenkins qui met en place la virtualisation, nous n’avons<br />

simplement pas eu le temps de l’utiliser.<br />

1. Notre BD contient les dates, les crédits et les groupes utilisateurs, il manque simplement le code<br />

Java qui permet d’exploiter ces notions.<br />

29


5.3 Optimisation<br />

5.3.1 Simplification de l’installation<br />

Une application ergonomique doit aussi être facile à installer. Pour cela, nous avons<br />

dans un premier temps rédigé une documentation pour aider l’utilisateur à mettre en<br />

place le portail. Malheureusement, l’installation nécessite du temps et des compétences.<br />

Pour éviter ces problèmes, nous avons envisagé de simplifier l’installation avec des scripts.<br />

Pour ce faire, les scripts pourraient :<br />

– Télécharger directement les applications utilisées (Tomcat, MySQL, vsftp, etc.)<br />

grâce à des commandes de type ”wget”.<br />

– Installer automatiquement les applications (en utilisant des commandes idoines<br />

comme ”sh”).<br />

– Configurer automatiquement les applications en copiant directement des fichiers de<br />

configuration aux bons emplacements.<br />

5.3.2 Fonctionnalités<br />

Gestion des groupes<br />

Il pourrait être avantageux de continuer le travail déjà commencé pour permettre à<br />

l’application de gérer des groupes d’étudiants.<br />

Changement de mot de passe obligatoire<br />

Pour cela, il pourrait être envisageable de rajouter dans la table ”Personne” un champ ”is-<br />

FirstConnection” de type booléen. Ce champs (à ”true” par défaut), serait envoyé au portail<br />

qui chargerait alors une fenêtre de modification du mot de passe (déjà implémentée).<br />

Ainsi, l’utilisateur serait obligé de changer son mot de passe à la première connexion.<br />

Gestion dynamique des chemins<br />

Il pourrait être intéressant de faire en sorte que les chemins utilisés par l’application<br />

soit dynamiquement modifiable avec des fichiers de configuration. Une partie de l’IHM<br />

pourrait même servir à modifier ces fichiers, rendant de facto la manipulation encore plus<br />

simple.<br />

Installation sur d’autres systèmes d’exploitation<br />

Pour l’instant, le portail ne fonctionne que sur Linux, à cause de deux choses :<br />

– l’utilisation de chemins de type Unix (exemple : /usr/...)<br />

– l’utilisation de commandes Unix (exemple : chown, locate, etc.)<br />

Comme nous l’avons dit précédemment, le problème des chemins peut être corrigé avec<br />

des fichiers de configuration. En revanche, pour régler le problème des commandes, nous<br />

pourrions utiliser des design patterns.<br />

En effet, les commandes Unix sont relatives à une servlet en particulier, il pourrait être<br />

judicieux d’utiliser les design pattern ”Abstract Factory” et ”Factory Method” pour créer<br />

30


automatiquement des servlets en fonction du système sur lequel l’application est exécutée.<br />

Ainsi, un morceau de code pourrait déterminer le système d’exploitation et créer une servlet<br />

particulière en fonction de ce dernier. Cette solution aurait l’avantage d’être propre<br />

et évolutive et permettrait une meilleure interopérabilité.<br />

5.4 Gain de connaissances techniques<br />

Ce TER a été riche en enseignement d’un point de vue technique, car il a permis<br />

de nous familiariser avec des technologies nouvelles, comme par exemple Jenkins<br />

et l’intégration continue. De plus, nous avons aussi eu la possibilité de mieux comprendre<br />

les technologies vues ou évoquées au cours de cette année universitaire. Par exemple, nous<br />

avons utilisé les cours de M. Richard Grin pour les questions liées à la persistance des<br />

objets. De même, nous avons utilisé GWT, qui était une technologie proposée pour le<br />

projet XML de M. Philippe Poulard. Enfin dans une moindre mesure, nous avons utilisé<br />

les cours de système de M. Fabrice Huet et les cours de réseau de M. Bruno Martin pour<br />

nous aider à installer et configurer la machine de test. Enfin, nous avons mis à profit<br />

les cours d’IHM de Mme Aurore Russo pour essayer de rendre notre application la plus<br />

ergonomique possible, en travaillant dès le début sur l’interface, mais aussi en faisant des<br />

tests sur des utilisateurs en fin de projet.<br />

5.5 Gain de connaissances pratiques<br />

Ce TER nous a aussi permis de mieux appréhender les difficultés inhérentes au travail<br />

en équipe. Nous avons vu qu’il était compliqué de travailler à plusieurs et de prévoir les<br />

problèmes (difficultés techniques, perte d’un membre de l’équipe, etc.). De plus, le fait de<br />

ne pas travailler physiquement au même endroit peut aussi être une source de problèmes.<br />

Néanmoins, nous avons compris qu’une bonne communication entre les personnes était<br />

cruciale pour le bon déroulement du projet.<br />

31


Chapitre 6<br />

Glossaire<br />

A - D<br />

Abstract Factory<br />

Schéma de conception pour la création d’objets regroupés en familles. p.31<br />

ActionScript<br />

Langage de programmation ajoutant de l’interactivité aux objets multimédias (images,<br />

sons, vidéos) en répondant aux actions de l’utilisateur. p.6<br />

AJAX<br />

Asynchronous Javascript and XML. Ensemble de technologies pour la construction d’application<br />

web dynamiques. p.6<br />

Ant<br />

Logiciel d’automatisation de tâches à partir d’un code-source (production de logiciel, de<br />

document/rapports, etc). p.7<br />

API<br />

Application Programming Interface. Interface de programmation fournie par un langage<br />

informatique pour concevoir des programmes dans ce langage. p.7<br />

Bibliothèques<br />

Les bibliothèques informatiques sont des fichiers qui contiennent des fonctionnalités ajoutées<br />

à un langage informatique. p.1<br />

CSV<br />

Comma-separated values. Format informatique de représentation de données. p.7<br />

Design Pattern<br />

Schéma de conception pour la résolution d’un problème donné. p.30<br />

Diagramme de GANTT<br />

Outils graphique pour ordonnancer les tâches d’un projet en fonction du temps et des<br />

32


personnes. p.23<br />

DNS<br />

Domain Name System. Système de Noms de Domaine. Service permettant d’établir une<br />

correspondance entre une adresse IP et un nom de domaine. p.12<br />

Driver JDBC<br />

Pilote logiciel permettant d’établir une connexion entre un programme Java et un système<br />

de gestion de base de données. p.18<br />

F - R<br />

Factory Method<br />

Schéma de conception définissant une interface pour la création d’objet. p.31<br />

FTP<br />

File Transfer Protocol. Protocole de transfert de fichiers permettant, depuis un ordinateur,<br />

de copier des fichiers vers un autre ordinateur du réseau. p.18<br />

GWT<br />

Google Web Toolkit. Ensemble d’outil permettant la création de pages Web dynamiques.<br />

p.6<br />

ICPC<br />

International Collegiate Programming Contest. Un certain type de concours de programmation.<br />

p.11<br />

IDE<br />

Integrated Development Environment. Environnement de développement intégré. Programme<br />

regroupant un ensemble d’outils pour le développement de logiciels. p.8<br />

IHM<br />

Interface Homme-Machine. Moyens mis en œuvre afin qu’un humain puisse communiquer<br />

avec une machine.p.13<br />

HTTP<br />

HyperText Transfer Protocol. Protocole de communication client-serveur. p.17<br />

Maven<br />

Logiciel d’automatisation de production de logiciel à partir de code sources. p.6<br />

MXML<br />

Langage de description, dérivé du XML, pour décrire la présentation des interfaces. p.6<br />

33


MySQL<br />

Un système de gestion de base de données. p.10<br />

RPC<br />

Remote Procedure Call. Protocole réseau permettant de faire des appels de procédures<br />

sur un ordinateur distant. p.10<br />

S - Z<br />

Servlets<br />

Classe Java destinée à créer dynamiquement des données sur un serveur. Elles permettent<br />

aussi de rajouter des fonctionnalités. p.11<br />

SVN<br />

Logiciel de gestion de version de programmes. p.7<br />

Tomcat<br />

Serveur web qui gère des servlets. p.7<br />

URL<br />

Uniform Resource Locator. Chaîne de caractères utilisée pour localiser des ressources. p.17<br />

XML Extensible Markup Language Langage de balisage extensible. Langage informatique<br />

basé sur le principe de balises. Son objectif est de faciliter l’échange automatisé de<br />

contenus complexes. p 9<br />

34


Bibliographie<br />

[1] Google web toolkit. http://code.google.com/intl/fr/webtoolkit/.<br />

[2] Jaxcent. http://www.jaxcent.com/.<br />

[3] Adobe flash. http://www.adobe.com/fr/products/flashplayer/.<br />

[4] Adobe flex. http://www.adobe.com/fr/products/flex/?promoid=BPBOG.<br />

[5] Php. http://www.php.net/.<br />

[6] Microsoft silverlight. http://www.silverlight.net/.<br />

[7] Jenkins ic. http://jenkins-ci.org/.<br />

[8] Continuous integration and build server. http://www.atlassian.com/software/<br />

bamboo/.<br />

[9] Apache continuum. http://continuum.apache.org/.<br />

[10] Mooshak. http://mooshak.dcc.fc.up.pt/.<br />

[11] Domjudge. http://domjudge.sourceforge.net/.<br />

[12] code-cracker, a semi-automated online judge system. http://code.google.com/p/<br />

code-cracker/feeds.<br />

[13] Workspace assembla. http://www.assembla.com/spaces/Portail_KRYD/wiki.<br />

[14] Laurent Debrauwer. Design Patterns pour Java. ENI Ed., 2009.<br />

[15] Smart gwt showcase. http://www.smartclient.com/smartgwt/showcase/<br />

#toolstrip.<br />

[16] Rpc request builder in gwt. http://jagadesh4java.blogspot.com/2009/04/<br />

gwt-rpc-using-request-builder-hi.html.<br />

[17] Le sql de a à z. http://sqlpro.developpez.com/cours/sqlaz/sousrequetes/.<br />

[18] Ci feature matrix. http://confluence.public.thoughtworks.org/display/CC/<br />

CI+Feature+Matrix.<br />

[19] Javadoc. http://download.oracle.com/javase/6/docs/api/.<br />

[20] Martin Fowler. Patterns of Enterprise Application Architecture. Addison-Wesley,<br />

2009.<br />

[21] Richard Grin. Modèle pour la persistance des objets. 2011.<br />

[22] Philippe Poulard. Web - XML. 2011.<br />

[23] Aurore Russo. ergonomie. 2011.<br />

35


Université de Nice - Sophia-Antipolis<br />

Faculté des sciences Valrose<br />

28 avenue valrose, 06103 Nice<br />

Travail d’étude et de recherche<br />

Gestion-évaluation<br />

semi-automatique de projets<br />

ANNEXES<br />

1 er juin 2011<br />

Présenté par :<br />

M. Albertini Ken<br />

M. Bertrand Yoann<br />

M. Franot Raphaël<br />

M. Lludice Daniel<br />

Sous la direction de :<br />

M. Huet Fabrice


Table des annexes<br />

1 Documentation utilisateur I<br />

2 Requêtes SQL III<br />

3 Tests utilisateurs IV<br />

3.1 Tâches à effectuer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IV<br />

3.2 Résultats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IV<br />

4 Diagramme de GANTT VII


Annexe 1<br />

Documentation utilisateur<br />

Cette annexe montre une petite partie de la documentation utilisateur réalisée. Le<br />

but de cette documentation est de mieux comprendre comment utiliser le portail.<br />

I


Annexe 2<br />

Requêtes SQL<br />

Le schéma suivant montre le mécanisme d’interrogation de la BD via deux requêtes<br />

SQL. Pour faciliter la compréhension, seul les tables et tuples pertinents sont représentés.<br />

La requête 1 permet de récupérer les nom, prénom et email des personnes du groupe<br />

”TER”.<br />

La requête 2 permet de récupérer les projets dont fait parti l’étudiant Dupond.<br />

Figure 2.1 – Mécanisme d’interrogation de la base avec des requêtes SQL<br />

III


Annexe 3<br />

Tests utilisateurs<br />

3.1 Tâches à effectuer<br />

Cette partie décrit les résultats des tâches que nos utilisateurs ont effectué. Ces tâches<br />

exploitent les fonctionnalités de l’application dans un cadre d’utilisation normal. Nos<br />

utilisateurs sont trois ex-étudiants 1 qui ont utilisé l’application pendant 10 minutes avant<br />

de réaliser les tests.<br />

3.2 Résultats<br />

Tâche T1 :<br />

– Créer trois étudiants (nom et informations imposés).<br />

– Modifier le prénom d’un des enseignants (prénom imposé).<br />

Tâche T2 :<br />

– Créer un projet (nom et informations imposés).<br />

– Uploader un jeu de tests pour ce projet (choix du fichier imposé).<br />

Tâche T3 :<br />

– Visualiser les infos d’un des enseignants.(choix libre).<br />

– Soumettre un code (choix du fichier imposé).<br />

Résultats des tâches chronométrées<br />

Ces temps ne prennent pas en compte la connexion au portail.<br />

Noms T1 T2 T3 Total<br />

Nicolas 1min07 49 sec 27 sec 2min23<br />

Maxime 1min12 52 sec 25 sec 2min29<br />

Vincent 1m02 50 sec 22 sec 2min14<br />

1. Ils ne sont plus étudiants depuis moins d’un an.<br />

IV


Résultat de la partie A<br />

Cette partie permet de noter l’application sur quelques critères ergonomiques.<br />

Critères Nicolas (/10) Maxime (/10) Vincent (/10)<br />

Pertinence des menus 8 7 7<br />

Temps de ≪ chargement ≫ 10 10 9<br />

Dispositions des menus 7 8 7<br />

Facilité de navigation 8 8 9<br />

Facilité de compréhension 8 7 6<br />

Moyenne 8.2 8 7.6<br />

Résultat de la partie B<br />

Cette partie permet de voir si les tâches ont été comprises et si elles étaient pertinentes<br />

pour nos utilisateurs.<br />

Critères Nicolas ( /10) Maxime ( /10) Vincent (/10)<br />

Compréhension T1 10 10 9<br />

Compréhension T2 10 10 9<br />

Compréhension T3 9 10 9<br />

Efficacité T1 6 7 7<br />

Efficacité T2 7 8 6<br />

Efficacité T3 8 7 7<br />

Moyenne 8.33 8.66 7.83<br />

Globalement, on peut dire que nos utilisateurs ont trouvé que les tâches étaient pertinentes.<br />

Néanmoins, ils ont trouvé que la tâche 1 (la création de plusieurs étudiants par un<br />

administrateur) était fastidieuse, surtout si l’administrateur devait créer une promotion<br />

entière.<br />

De plus, les testeurs ont trouvé que la tâche 3 (visualiser des informations et soumettre<br />

du code) manquait un peu de substance. Pour pallier ce problème, ils ont proposé de<br />

rajouter une ou deux étapes, comme par exemple modifier son mot de passe ou déposer<br />

un projet fini.<br />

Résultat de la partie C<br />

Les testeurs ont trouvé que les tâches étaient facilement réalisables car les menus étaient<br />

bien ordonnées. En effet, ils ont considérés que le fait d’avoir ajouté des onglets rendait<br />

la navigation plus facile. De plus, ils ont trouvé les temps de chargement excellent et le<br />

design très sobre mais efficace.<br />

Néanmoins, nos utilisateurs ont émis un certain nombre de critiques sur le portail, comme<br />

par exemple :<br />

– Le manque de pertinence pour certains messages de popup (pas assez d’informations).<br />

V


– La nécessité d’appuyer sur le bouton ”Afficher Infos” pour charger les informations.<br />

– Le manque d’informations (format des dates non spécifié) dans le menu de création<br />

d’un projet.<br />

– Le panneau ”descriptif” d’un projet trop petit.<br />

VI


Annexe 4<br />

Diagramme de GANTT<br />

Cette section montre le diagramme de GANTT initialement produit en début de TER.<br />

Figure 4.1 – Diagramme de GANTT initial - partie 1.<br />

VII


Figure 4.2 – Diagramme de GANTT initial - partie 2.<br />

VIII

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!