Attention ! Vu les problèmes que j'ai eu avec des projets précédents, je ne testerai plus les projets qui ne respectent pas les conventions de nommages des projets et de la base de données qui sont données ci-dessous en rouge. Un projet qui ne les respectera pas aura 6 points en moins et il sera noté sur 14.
De même, les commentaires javadoc sont obligatoires sur toutes les classes et sur les méthodes des classes qui n'ont pas une spécification évidente.
Aide à l'apprentissage de vocabulaire anglais pour un utilisateur francophone.
Écrire une application Web qui permet de réviser du vocabulaire anglais. L'anglais est imposé pour faciliter la correction mais l'application doit permettre d'étendre facilement ses fonctionnalités pour travailler sur d'autres langues que le français et l'anglais. Cette extension n'est pas demandée mais il faudra expliquer dans le guide de programmation comment d'autres langues pourraient être utilisées.
Voici une description du minimum à implémenter. Toute autre fonctionnalité qui pourrait aider à apprendre du vocabulaire sera la bienvenue (voir la fin de cette section).
L'application permet de construire des listes de mots anglais-français (un mot en français et sa traduction en anglais). L'utilisateur peut construire ses propres listes ou utiliser les listes contruites par d'autres utilisateurs. Un mot peut faire partie de plusieurs listes/tests différents.
Les mots (en français, avec leur traduction en anglais) peuvent être saisis par l'utilisateur ou récupérés d'une façon ou d'une autre sur des sites Web (extraction à partir du code HTML d'une page d'un site, par exemple du site http://www.eguens.com/v2/anglais/vocabulaire/liste-vocabulaire-theme-26-a-table.php ou du site http://www.glossaire.be/english_french/grammar_expression_anglais_francais.htm ou de http://www.englishspeak.com/fr/english-words.cfm) ou depuis des fichiers qui sont "uploadés" sur le site (JSF 2.2 contient un composant pour uploader un fichier). Au minimum le projet doit pouvoir récupérer des mots d'un fichier uploadé ; la récupération à partir d'un site Web est un plus.
Les mots peuvent être modifiés ou supprimés. Interdit de toucher à un mot qui fait partie d'un test enregistré dans un historique (voir ci-dessous).
Les utilisateurs sont identifiés par le nom qu'ils donnent à l'entrée dans le site. On ne vous demande pas de sécuriser cette identification ; pas de mot de passe et on suppose que l'utilisateur donne bien son identifiant qui est supposé unique. L'utilisateur peut réviser du vocabulaire ou passer des tests.
L'utilisateur peut faire afficher sur une page les mots en français et en anglais pour réviser du vocabulaire ou il peut passer des tests pour voir s'il a bien appris les mots.
Un test utilise une liste de mots. Un test affiche les mots en français de la liste et demande leur traduction en anglais (ou l'inverse). L'utilisateur tape la réponse et il peut alors demander la bonne traduction. Quand la bonne traduction est affichée, c'est l'utilisateur lui-même qui dit s'il a bien répondu ou non ; il s'agit d'un logiciel d'aide à l'apprentissage, pas d'un logiciel pour faire passer un examen à l'utilisateur. Une autre façon de faire : l'utilisateur "corrige" son test à la fin, quand il a tapé toutes les traductions des mots. Les réponses de l'utilisateur ainsi que le fait qu'elles sont bonnes ou pas est enregistré dans la base de données. Les tests sont notés sur 20 (vous choisissez la façon de les noter).
Les tests peuvent avoir été créés par n'importe quel utilisateur, celui qui le passe ou un autre utilisateur.
Une liste de mots peut être modifiée ou supprimée. Interdit de toucher à une liste de mots qui est utilisée par un test enregistré dans l'historique (si le test a déjà été passé par un utilisateur).
L'utilisateur peut demander à voir un historique d'un test qu'il a déjà passé. Il peut refaire plusieurs fois les mêmes tests. Il peut aussi demander la moyenne obtenue par tous les utilisateurs sur ce test, pour évaluer son niveau. Les tests enregistrés dans l'historique peuvent être supprimés par l'utilisateur qui les a passés (pas par les autres utilisateurs).
L'application doit utiliser un template JSF et doit permettre de garder les listes de mots dans un marque-page/favori du navigateur (étudié dans le cours).
Quelques idées à implémenter pour ceux que ça intéresse (ça ne fait pas partie du minimum à implémenter) :
Toute autre idée originale et efficace pour apprendre du vocabulaire est la bienvenue.
N'implémentez des fonctionnalités supplémentaires qu'après avoir implémenté le minimum. Si ce minimum est bien programmé et bien documenté et si votre application est agréable à utiliser, vous aurez déjà une bonne note. Même si vous n'avez pas implémenté le minimum, mais si votre code est propre et bien documenté, vous pouvez avoir une meilleure note qu'avec une application qui a beaucoup de fonctionnalités mal implémentées et documentées, qui n'est pas robuste et qui est difficile à utiliser.
Un groupe de projet est constitué de 3 étudiants. 1 ou 2 groupes peuvent être constitués de 2 étudiants seulement si le nombre d'étudiants n'est pas divisible par 3. Pas de "groupe" formé avec un seul étudiant.
Un des membres du groupe sera le chef de projet. Il sera l'unique correspondant du groupe avec le correcteur.
La liste des groupes devra m'être envoyée (grin@unice.fr et richard.grin@free.fr) par le délégué de la classe avant la fin du mois de mai ; le sujet de l'email : "[Projet Java EE UFE] Liste des groupes". La liste sera de la forme suivante :
UFEA : Nom, prénom et email des étudiants du groupe A
UFEB : Nom, prénom et email des étudiants du groupe B
etc.
IMPORTANT : pour que le correcteur puisse tester tous les projets, ceux-ci doivent utiliser des bases de données différentes. Les bases de données s’appelleront donc « xyzUFEA » pour le groupe A, « xyzUFEB » pour le groupe, « xyzUFEC » pour le groupe C, etc. De même, le nom du projet NetBeans, toutes les ressources du serveur qui peuvent provoquer un conflit de nom, telles qu'un pool de connexion, une ressource JDBC doivent être suffixées de la même façon.
Le projet doit être un projet NetBeans, le SGBD Java DB et le serveur d’application GlassFish. Vous devez utiliser la dernière version stable (pas de version beta) de ces logiciels au moment où ce sujet de projet vous est proposé.
L’application doit pouvoir fonctionner pour un utilisateur français ou anglais (selon la configuration du navigateur). Par exemple le titre d'une page sera écrit en anglais si le navigateur indique qu'il préfère l'anglais. Ça n'est pas difficile car JSF offre des facilités pour cela ; faites des recherches sur Internet.
Une charte graphique doit être respectée sur toutes les pages de l’application en utilisant un template « Facelets ».
Pour faciliter le test de l’application, la page de démarrage de l’application doit comporter un bouton « Initialisation » qui déclenche l’initialisation de la base de données en ajoutant des utilisateurs et des listes de mots (au moins 3 listes et une cinquantaine de mots). Plus il y en a, mieux c’est.
Mettez-vous à la place d’un utilisateur ; vous devez lui faciliter la vie.
IMPORTANT : il est préférable de rendre une application qui fonctionne et qui est facile à utiliser, même si elle a peu de fonctionnalités, plutôt qu’une application qui a de nombreuses fonctionnalités mais qui n’est ni robuste, ni fiable, ni ergonomique.
Attention, le non respect d'un point du format décrit dans cette section sera comptabilisé dans la note du projet.
Mettez le projet dans un fichier projetUFEA.zip (pour le groupe A ; projetUFEB.zip et projetUFEC.zip pour les groupes B et C, etc.) qui contient
Remarque : n'indiquez pas que tout le monde a participé à toutes les parties du projet ; vous devez vous partager les tâches et chacun doit être responsable d'une partie (même si vous travaillez à 2 sur certaines parties).
Respectez bien les noms des fichiers pour faciliter la tâche du correcteur.
Ce fichier zip devra pouvoir être récupéré par l’enseignant qui va corriger le projet. Dans un email que vous envoyez à grin@unice.fr et à richard.grin@free.fr, donnez-moi une adresse Web pour aller le récupérer, ou indiquez-moi un moyen quelconque simple pour aller le récupérer (fichier dropbox par exemple). Cet email devra rappeler les noms des étudiants du groupe de projet et avoir un objet qui contient « Projet Java EE UFE du groupe … » ; indiquez le nom du groupe de projet dans les pointillés (UFEA, UFEB ou UFEC,...).
L’email doit être envoyé par le chef de projet du groupe.
Le guide de programmation est un guide qui explique comment vous avez programmé votre application (par exemple l'architecture de votre application, la structure des classes et des données, etc.) et qui contient ce qui pourrait permettre à un autre développeur de comprendre votre application et éventuellement de la modifier ou d'étendre ses fonctionnalités. Je ne demande pas un document très détaillé mais plutôt un document de 4 ou 5 pages maximum qui décrit les grandes lignes de votre application, en détaillant éventuellement les points délicats (par exemple pourquoi vous avez choisi telle portée pour un backing bean particulier). Un document qui facilitera aussi la correction de votre projet.
Ce descriptif est nécessairement incomplet. Beaucoup de détails ne sont pas donnés à dessein pour que chaque groupe puisse écrire sa propre version, différente de la version des autres groupes.
Il se peut aussi qu’il manque des informations ou que des informations ne soient pas assez claires. En ce cas, vous pouvez envoyer un email aux mêmes adresses que pour rendre le projet (grin@unice.fr et richard.grin@free.fr) en commençant l’objet par « [Projet Java EE UFE] ».
Si vous avez un gros problème technique que vous n’arrivez pas à résoudre, vous pouvez demander aux autres groupes s’ils savent le résoudre (attention, n’aidez pas vos camarades en donnant du code, les projets ne doivent pas comporter du code commun). Si vous n’avez toujours pas la réponse, vous pouvez vous inscrire à des forums pour poser des questions (il y en a plusieurs ; http://stackoverflow.com/ est un bon forum en anglais pour JSF, et pour bien d'autres choses ; http://www.developpez.net/forums/f300/java/developpement-web-java/frameworks/jsf/ en est un autre en français ; il y en a sans doute plein d’autres). En dernier recours, envoyez-moi un email et j’essaierai de vous mettre sur la voie. L’email doit être envoyé par le chef de projet du groupe.
En cas de conflit grave dans un groupe, que vous ne pouvez résoudre (c'est déjà arrivé), contactez-moi. Il est interdit de scinder un groupe sans mon autorisation (qui sera très difficile à obtenir...).
Un conseil : consultez les problèmes relevés après la correction des projets de l'année dernière (une différence avec cette année : pas de mots de passe à conserver).
*** 2014, minuit.
n jours de retard retire n points (sur 20) à la note du projet. Un projet qui a plus de 4 jours de retard a la note 0.