| author : | Erwan NEMA <nemawan@hotmail.com> |
|---|---|
| author : | Nolwenn Rannou <rannou@codelutin.com> |
| revision : | 2738 |
| date : | 2009-08-20 17:12:21 +0200 (jeu 20 aoû 2009) |
Le projet Pollen vise à mettre en place une application de vote libre en mode Web enrichie en fonctionnalités par rapport à ce qui existe déjà sur le marché. Le principe est le suivant. Un utilisateur crée un sondage puis il envoie le lien aux participants du sondage. Ensuite il peut suivre l'évolution du sondage en ligne. Les participants votent en saisissant leur nom et leur choix.
La création d'un vote doit être simple mais doit permettre les opérations suivantes :
Ce paragraphe présente les différents concepts manipulés dans l’application de vote. Le tableau représente le dictionnaire de données de notre application.
Dans un premier temps, nous allons implémenter les types de dépouillements les plus usuels.
Chaque votant peut ne pas avoir le même poids lors d'un vote, cette pondération aura donc des conséquences lors du dépouillement des résultats. La pondération sur chaque votant est possible dans le cas d'une liste restreinte. De même un groupe de votant pourra lui aussi être pondéré lors de la participation de plusieurs listes à un sondage.
L'application permet de voter anonymement dans le cas des sondages basés sur une liste restreinte de votant. L'anonymat est assuré pour la totalité des votants de la liste. Dans ce cas, le vote sera comptabilisé pour le votant, mais l'application ne liera pas le vote au votant. Le fait de fournir son identité dans le cas d'un vote anonyme (seul moyen de savoir si le votant a déjà participé au sondage) est gênant pour le votant. Donc dans le cas du vote anonyme, le votant s'identifiera grâce à un numéro d'anonymat. Le votant ne connaît pas le fonctionnement interne de l'application pour la gestion des votes anonymes, cette approche le confortera concernant la prise en compte de son anonymat dans le sondage.
Le diagramme de cas d'utilisation au format UML 2.0 de l'application permet de présenter de manière simple et concise les différents acteurs de l'application ainsi que ses fonctionnalités. Pour rappel, le stéréotype <<includes>> précise une décomposition du use case avec une prise en compte obligatoire du cas d'utilisation inclus, le stéréotype <<extends>> précise une extension optionnel de fonctionnalité, le stéréotype <<generalize>> fait référence à la notion d'héritage.
Les acteurs du système sont au nombre de 3 :

Les cas d'utilisations « créer un sondage », « voter » et « dépouiller un sondage » seront explicités dans les paragraphes suivants.
Le scénario détaillé de la création d'un sondage.
Acteur :
l'utilisateur.
Pré-conditions :
Scénario de base :
Variations :
1a. L'utilisateur s'authentifie.
1a1. Si le user est black listé, la connexion est impossible, un message d'erreur apparaît.
2a. L'utilisateur choisit un sondage de type restreint.
2a1. L'utilisateur choisit une liste prédéfinie.
- L'utilisateur peut pondérer chaque votant de la liste pour le sondage.
2a2. L'utilisateur choisit plusieurs listes prédéfinies (groupes).
- L'utilisateur peut pondérer chaque votant de chaque groupe
- L'utilisateur peut pondérer chaque groupe
2a3. L'utilisateur choisit de créer une liste restreinte en saisissant le nom et l'adresse email des votants.
L'utilisateur spécifie si un choix peut être ajouté par un des votants.
L'utilisateur spécifie s'il s'agit d'un sondage anonyme.
5a. Si l'utilisateur est black listé, la création est impossible, un message d'erreur apparaît.
7a. L'utilisateur choisit le type de vote options de date.
7b. L'utilisateur choisit le type de vote options d'image.
9a. L'utilisateur peut choisir un sondage à choix multiple si le nombre d'options >2
L'utilisateur choisit le type de dépouillement.
10a. Si l'utilisateur s'est authentifier ou a saisi son email : le système demande si l'utilisateur souhaite recevoir un email lors de chaque vote.
11a. Si l'utilisateur a saisi son email, un email contenant les 2 URLs du sondage est automatiquement envoyé au créateur du sondage.
11b. Si l'utilisateur est authentifié, un mail contenant les 2 URLs du sondage est automatiquement envoyé lors de la création du sondage.
11c. Dans le cas d'un sondage sur liste restreinte, un email contenant l'URL pour voter et l'identifiant de vote du votant est automatiquement envoyé à tous les votants du sondage.
12a. L'utilisateur non authentifié ne sauvegarde pas les URLs : l'utilisateur ne peut pas accéder au sondage.
13a. Si le sondage est invalidé par l'administrateur : le sondage sera supprimé, les URLs ne seront plus accessibles.
Si l'utilisateur a saisi des informations d'authentification ou possède un compte, celui ci est black listé.
Extensions :
5a. L'utilisateur saisit son nom et son email.
5a1. voir variation 5a.
10a. L'utilisateur peut saisir un commentaire avant de valider le sondage.
Une illustration des actions reprenant le scénario de base et ses variations est fournie par le diagramme d'activité suivant :


Acteur :
Le votant
Pré-conditions :
Le votant connaît l'URL du sondage. Le sondage est accessible.
Scénario de base :
Variations :
2a. Si le sondage est restreint et si cette option est autorisé sur le sondage en cours, le votant peut ajouter un choix de vote, le créateur du sondage et tous les participants sont alertés par email de la modification du sondage. 4a. Si le votant n'a pas saisi un identifiant de vote valide: un message d'erreur apparaît, le vote n'est pas comptabilisé. 4b. Si le votant est black listé par le créateur du vote, il n'est pas autorisé à voter : un message apparaît, le vote n'est pas enregistré.
Extensions :
3a. L'utilisateur saisit son identifiant de vote + son email. 3b. Le votant saisit un commentaire sur son vote. 4a. L'utilisateur reçoit un email de confirmation de vote. 4b. Le créateur du sondage reçoit un email concernant le vote du votant. 4c. Le votant peut modifier son vote.

Acteur
L'utilisateur
Pré-conditions
Le sondage est terminé.
Scénario de base :
Variations :
1a. L'utilisateur s'authentifie dans l'application et choisit le sondage dans une liste de ces sondages
1a1. voir 1b
1b. Si le sondage a déjà été dépouillé, les résultats sont affichés.
2a. Le sondage est automatiquement dépouillé lorsque la date de fin de sondage est atteinte.
4a. Dans le cas d'un sondage avec une liste de votants anonymes: les informations concernant les votants ne sont pas affichées.
Extensions :
4a. Les résultats peuvent être exportés au format XML.
La chronologie des interactions entre les différentes entités définies dès l'étape d'analyse est présentée dans le diagramme de séquence d'analyse suivant :


L'application ne doit pas seulement prendre en compte les exigences formulées dans le cahier des charges par la maîtrise d'ouvrage. Un certain nombre de contraintes doivent être obligatoirement étudiées. Ces exigences sont les suivantes :
Le processus d'analyse fournit le diagramme de classe cohérent de la partie données de l'application. Ce diagramme servira de base pour l'implantation du schéma de base de données.

Classes et commentaire associé :
Classe Result (Résultat du sondage) :
Attribut :
Classe Poll (Sondage) :
Attributs :
Classe PreventRule (Règles de notification) :
Des règles de notification sont associées aux sondages. Elles sont utilisées pour exécuter des actions (affichage d'un message, envoi d'un email...) en fonction de certains critères.
Attributs :

La classe PreventRuleManager permet de gérer des règles de notification. Lorsque la méthode execute() est appelée, la méthode définie par la règle est exécutée à condition que sa sensibilité et sa portée soient valides.
Exemple : affichage d'un message tous les 100 votes :
// Définition d'une règle : portée "vote", sensibilité 100, répétitive
PreventRuleDTO preventRule = new PreventRuleDTO("vote", 100, true,
PreventRuleManager.PRINT_ACTION);
PreventRuleManager manager = new PreventRuleManager(preventRule);
// On lance l'exécution en précisant une portée et une sensibilité
// Le manager se charge de vérifier si l'action doit être effectuée
// en fonction de la règle et des paramètres
manager.execute("vote",100,"un message"); // affiche "un message"
manager.execute("vote",200,"autre message"); // affiche "autre message"
// Exemples n'exécutant rien
manager.execute("scope",100); // "scope" n'est pas la bonne portée
manager.execute("vote",50); // 50 n'est pas la bonne sensibilité
Les notifications sont utilisées dans Pollen pour envoyer un message de confirmation à la création d'un compte, pour prévenir le créateur d'un sondage lorsque des votes ont lieu ou pour relancer les personnes qui n'ont pas encore voté...
Initialement un sondage ne possédait que deux états : ouvert et fermé, auxquels s'ajoutait une notion de date de début et de date de fin. Une fois qu'il a été rendu possible d'ajouter des choix à un sondage en cours, il est devenu nécessaire d'ajouter une date de début d'ajout de choix ainsi que les états définis dans le diagramme suivant.
