Denis Conan et Christian Bac Revision : 430 CSC4102 Télécom SudParis 19 Novembre 2007
Avertissement : cet exemple de spécification et de conception correspond à un sujet donné en bureau d étude noté du module CSC4002 il y a quelques années. Par conséquent, le programme ayant changé depuis, il y manque des éléments, comme la formalisation des préconditions et des postconditions des cas d utilisation, ou encore la préparation des tests de validation. Par ailleurs, la modélisation est très incomplète. 1 Cahier des charges Connaissez-vous Doodle 1? Doodle helps scheduling meetings and other appointments. Doodle is simple, quick, free and requires no registration. Nous nous proposons de construire une application pour aider à la planification de réunions et à la prise de décisions, appelée DoodlINT, très simple, permettant d exprimer des préférences parmi plusieurs choix. Les choix sont de deux types : (1) des plages horaires (date avec heures de début et de fin) et (2) des chaînes de caractères quelconques. Le premier type de vote est utilisé par une personne qui désire organiser une réunion. Cette personne, dite l organisatrice, crée un vote, renseigne les plages horaires possibles, et ajoute les participants à la réunion. Ensuite, les participants peuvent exprimer leurs préférences en indiquant pour chaque plage horaire s ils votent «pour» (ils sont disponibles et annoncent leur intention de participer) ou «contre». Enfin, l organisatrice récupère les résultats du vote à la fin du vote et annonce la plage horaire choisie (par exemple, en maximisant le nombre de participants à la réunion). La décision n est pas prise automatiquement par DoodlINT, mais «manuellement» par l organisatrice. Le second type de vote est utilisé par une personne qui désire consulter avant de prendre une décision. Cette personne, aussi appelée l organisatrice, crée un vote, renseigne les différentes réponses possibles à la question posée, et ajoute les participants à la consultation. Ensuite, les participants peuvent exprimer leurs préférences en indiquant pour chaque réponse s ils votent «pour» ou «contre». Enfin, l organisatrice récupère les résultats du vote et annonce la décision prise (par exemple, en maximisant le nombre de vote «pour»). Là encore, la décision n est pas prise automatiquement par DoodlINT, mais l organisatrice prend la décision en fonction des résultats fournis par DoodlINT. Les règles de gestion de l application sont les suivantes : toutes les personnes peuvent créer des votes ; elles sont dans ce cas organisatrices ; l organisatrice est de facto une participante au vote ; seule l organisatrice est autorisée à gérer un vote : gestion du cycle de vie du vote, ajout/retrait de participants, ajout/retrait de choix... ; seuls les participants enregistrés comme tels par l organisatrice peuvent participer au vote et consulter les résultats ; pour que les participants puissent voter, il faut que le vote soit ouvert (datedujour > datedebutvote). Par analogie, la durée d ouverture du vote est limitée. Par ailleurs, l organisatrice qui crée le vote doit indiquer la date de destruction automatique du vote, ceci afin de libérer le système des votes passés. Toutes ces dates permettent de gérer de manière automatique le cycle de vie d un vote. En outre, il est aussi demandé que les transitions du cycle de vie puissent être effectuées à la demande de l organisatrice : en d autres termes, l organisatrice peut ouvrir le vote prématurément (ce qui revient à avancer la date d ouverture à la date du jour) ; elle peut fermer le vote prématurément ; et elle peut demander la destruction du vote avant la date de destruction indiquée lors de la création du vote. Pour simplifier, nous supposons que toutes les personnes susceptibles d organiser et de participer à un vote sont créées dans l application avant sa première utilisation. Nous n aurons donc pas à tester si une personne existe. En outre, la décision prise par la personne organisatrice n est pas mémorisée dans DoodlINT ; autrement dit, la décision est communiquée via un autre moyen (courriel, etc.) que le système. Pour compléter l exercice, nous souhaitons visualiser quelques statistiques pour comptabiliser les votes créés (global et par type), ainsi que les organisations et les participations à des votes. 1. http://www.doodle.ch Télécom SudParis Denis Conan et Christian Bac 19 Novembre 2007 CSC4102 2
2 Spécification et conception 2.1 Liste des classes et des attributs Les classes et attributs obtenus après analyse du texte sont les suivants : DoodlINT : classe «interface» du système, patron de conception Façade ; Personne nom, prénom, nombre d organisations de vote, nombre de participations à des votes + attributs de classe pour statistiques : en une seule classe toutes les personnes ; Vote intitulé du vote avec un texte complémentaire d explication ou description, date de création, date de début du vote, date de fermeture et date limite d existence - : la classe représentant l organisation du vote ; VotePlagesHoraires et VotePréférences : la généralisation/spécialisation permettant d organiser les deux types de vote ; Choix nombres de scrutins pour et contre cette «alternatives» : la classe représentant la participation d une personne sur une des «alternatives» du vote ; PlageHoraire et Préférence : la généralisation permettant de classer les types de choix proposés pour chacun des types de votes organisés ; Résultat pouroucontre : la classe représentant un scrutin de vote sur un des choix d un vote. 2.2 Diagramme de cas d utilisation La figure suivante présente les acteurs et cas d utilisation du système. Voter à un vote Consulter les résultats d un vote participant Se retirer d un vote Créer un vote Ajouter un choix Supprimer un choix Ajouter un participant organisateur Retirer un participant Ouvrir un vote Fermer un vote Supprimer un vote 2.3 Diagramme de classes La figure suivante présente le diagramme de classes. Télécom SudParis Denis Conan et Christian Bac 19 Novembre 2007 CSC4102 3
Personne <<abstraite>> Vote nbtotalparticipations nbtotalorganisations nbparticipations nborganisations prenom nom organise participe intitulévote textcommentairevote datecréation datedébutvote datelimitevote datelimiteexistence nbtotalvote nbchoix VotePlagesHoraires VotePréférences nbtotal nbtotal DoodlINT Résultat pouroucontre PlageHoraire date heuredébut heurefin Préférence intitulépréférence textecommentairepréf Choix /nbscrutinspour /nbscrutinscontre 2.4 Diagramme de machine à états de la classe Vote La figure suivante présente le diagramme de machine à états de la classe Vote. EnConstruction entrée : constructeur() [datedujour >= datedebutvote] ouverture du vote par l organisateur/ avancerdateouverture() VoteOuvert clôture du vote par l organisateur/ avancerdatefermeture() [datedujour > datelimitevote] EnDestruction entrée : detruire [datedujour > datelimiteexistence] suppression du vote par l organisateur/ avancerdatelimiteexistence() VoteFermé 2.5 Diagramme de communications ou de séquence Voici le diagramme de communications qui correspond au cas d utilisation : «consulter/afficher les résultats d un vote». Il s agit d afficher, pour chaque participant et pour chaque choix du vote, si le participant est pour ou contre le choix. Durant l interaction, nous vérifions que la personne qui demande les résultats participe au vote. Nous rappelons que la décision n est pas calculée automatiquement par DoodlINT, mais «manuellement» par la personne organisatrice. Son calcul ne fait donc pas partie de la solution. Télécom SudParis Denis Conan et Christian Bac 19 Novembre 2007 CSC4102 4
consulter(nom,prénom,intitulévote) :Personne 1:[p=null]p=correspondre(nom,prénom) :DoodlINT 2:v=vérifierParticipationVote(intituléVote) :Vote 2.1:[v=null] v=correspondre(intitulévote) p:personne 3:[i=1..N]afficherRésultat(v) :Personne 3.i.1:[attributVote=v] afficherinfosparticipant() r:résultat :Choix 3.i.2:[attributVote=v]afficherInfosChoix() 2.6 Conception de la classe Vote : les attributs doodlint : @DoodlINT organisateur : @Personne participants : Collection @Personne resultats : Collection @Résultat Télécom SudParis Denis Conan et Christian Bac 19 Novembre 2007 CSC4102 5