Projet pour cours TIC409 et TIC421

Thème

Questionnaires de type QCM (questionnaire à choix multiples) pour les étudiants.
Des enseignants gèrent les questionnaires (ajouter, modifier, supprimer) et des étudiants répondent aux questionnaires.
Les réponses des étudiants sont enregistrées dans la base de données.

Sujet

Écrire une application Web Java avec JSF 2.0.
2 types d’utilisateur :

Les utilisateurs de l’application doivent entrer dans l’application en saisissant un login et un mot de passe et on doit connaître leur email.
Les enseignants peuvent tout faire :

Les étudiants ne peuvent que répondre aux questionnaires. Lorsqu’un étudiant répond à un questionnaire, ses réponses et sa note sont enregistrées dans la base de données.
Un questionnaire ne peut être supprimé ou modifié si un étudiant a déjà répondu à ce questionnaire.
Une question ne peut être supprimée ou modifiée si un étudiant a déjà répondu à un questionnaire qui contenait la question.
L’application ne gère pas les utilisateurs : on suppose qu’ils sont déjà dans la base de données. Un nouvel utilisateur ne peut pas s’inscrire en ligne. Les utilisateurs seront créés au moment de l’initialisation de l’application (voir « Implémentation » ci-dessous).

Implémentation

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 « questionnairesufeA » pour le groupe A (celui de Fadi), « questionnairesufeB » pour le groupe A (celui de Omar), « questionnairesufeC » pour le groupe C (celui de Ahmed).
Le projet doit être un projet NetBeans, le SGBD Java DB et le serveur d’application GlassFish.
L’application doit pouvoir fonctionner en français et en anglais (selon la configuration du navigateur).
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 (au moins un enseignant et 3 étudiants) et des questionnaires (au moins 3 questionnaires et une quinzaine de questions). Plus il y en a, mieux c’est.
Mettez-vous à la place d’un utilisateur ; vous devez lui faciliter la vie. Par exemple, un enseignant doit pouvoir facilement ajouter une question avec ses réponses et constituer un questionnaire à partir des questions déjà entrées dans la base. Les détails ne vous sont pas imposés ; faites comme vous voulez.
Pour le calcul de la note obtenue par un étudiant, vous faites comme vous voulez. Il y a plusieurs façons de calculer la note d’une question de type QCM. Renseignez-vous auprès de vos enseignants ou sur Internet. Vous pouvez même permettre à l’enseignant de choisir parmi plusieurs types de calculs (mais attention au paragraphe suivant).
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. Voir section « Minimum demandé » à la fin de ce document.

Comment rendre le projet

Mettez le projet dans un fichier projetA.zip (pour le groupe A ; projetB.zip et projetC.zip pour les groupes B et C) 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 (au plus 2 personnes pour chaque partie).

Respectez bien les noms des fichiers, ça facilitera 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 UFE du groupe … » ; indiquez la lettre du groupe de projet dans les pointillés (A, B ou C).
L’email doit être envoyé par le chef de projet du groupe.

Questions

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 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 problème

Que doit-on faire si un des participants au projet met en péril le projet en ne faisant pas son travail ?
Réponse :
Le chef de projet doit intervenir rapidement car une intervention trop tardive peut occasionner l'échec pour tout le groupe (et une note en conséquence pour tout le groupe).
Si le participant ne fait pas son travail par mauvaise volonté, le chef de projet doit le rappeler à l'ordre (soyez diplomate, svp). S'il ne participe toujours pas, le chef de projet répartit ses tâches entre les autres participants et signale le problème dans le fichier "quiafaitquoi". La note de l’étudiant fautif en tiendra compte.
Si le participant ne fait pas correctement son travail parce que son niveau est insuffisant, le chef de projet peut le faire aider ponctuellement par un autre membre du projet. Si cette aide ne suffit pas car son niveau est vraiment insuffisant, le chef de projet lui donne une tâche plus facile et répartit son ancienne tâche entre les autres membres. En ce cas, il faut signaler le problème dans le fichier « quiafaitquoi ».
En cas de profondes divergences entre membres du groupe, que le chef de projet ne peut résoudre, signalez-le-moi et j’essaierai d'intervenir.
Cela signifie qu'une partie non négligeable de ce que l'on attend du chef de projet devrait être de se tenir au courant de l'avancement des différentes tâches. Il faut en tenir compte dans la répartition des autres types de tâches (codage en particulier). Ceci n'est qu'un conseil, chaque groupe est libre de s'organiser comme il l'entend.

Date pour rendre le projet

Le 31 janvier 2013.

Minimum demandé

Pour être certain de rendre une application qui fonctionne, je vous conseille de faire plusieurs itérations.
Voici les fonctionnalités minimales demandées pour le projet (itération 1) :

Lorsque vous avez réussi à faire marcher ce minimum, vous pouvez passer aux itérations suivantes, en ajoutant à chaque itération des fonctionnalités suivant votre imagination et vos capacités ; par exemple : modifier les questionnaires et les questions, dessiner l’évolution des notes d’un étudiant par un graphique, afficher la moyenne pour tous les étudiants d’un cours, conserver les réponses des étudiants (pas seulement les notes), avoir le choix entre plusieurs évaluateurs pour calculer la note d’une question, ajouter la possibilité d’avoir des questions qui ont plus de poids que les autres pour calculer la note d’un questionnaire, associer des mots-clés aux questions pour faciliter la définition des questionnaires (l’enseignant choisit ses questions parmi celles qui existent déjà et qui ont un certain mot-clé), ajouter une image aux questions ou aux réponses (chargées par upload par l'enseignant), envoi des notes par email aux étudiants,…
Une itération 1 parfaite peut déjà vous donner une note de 15 sur 20. Toute fonctionnalité supplémentaire vous ajoutera des points.

Un autre cours que vous pouvez étudier

Il est indispensable de vous aguérir dans la programmation JSF. Vous pouvez pour cela terminer les TPs du cours si vous n'avez pas eu le temps de tout faire pendant le cours. Je vous conseille aussi de suivre au moins le TP 1 (tous les TP si vous pouvez) de ce cours qui est un bon complément au cours que vous avez suivi.

Je peux vous aider dans la compréhension de ce cours en répondant à vos questions.