rapport cosse

8
  Anne-Lucie Vion (épous e Cosse) - Licence 3 Miage (2011-201 2) [email protected] CONCEPTION ET IMPLEMENTATION D'UN SYSTEME BASIQUE DE GESTION D'INSCRIPTION A UN GALA Rapport Le projet que j'ai réalisé sous le nom d'iGala a été pensé et conçu à l'aide de méthodes « agiles ». Étant membre du comité d'organisation de l'Agile Tour Bordeaux depuis deux ans, et ayant expérimenté ces méthodes du point de vue du management, je voulais réaliser mon premier projet « complexe » de programmation de manière agile : notamment avec TDD (Test Driven Development : écriture de tests unitaires avant même l'implémentation). L'utilisation de ces méthodes m'a ainsi permis d'écrire mon code de manière propre et de tester l'ensemble de mon application de manière automatique et pertinente. Fonctionnalités implémentées Généralités L'interface utilisateur comprend une succession de menus en ligne de commande pour guider les utilisateurs du programme. Chaque élément du menu principal est détaillé en sous-menus. À tout moment, l'utilisateur peut revenir au menu précédent en tapant « retour », et quitter l'application en tapant « quitter ». Persistance des données Pour conserver toutes les inscriptions et réservations faites par les utilisateurs même lorsque le programme est arrêté puis relancé, j'ai mis en place un système de sauvegarde & de chargement des informations dans un même f ichier. Gestion des inscriptions Nouvelle inscription (annexe 1) iGala permet de gérer l'inscription de 100 invités (ce nombre peut être changé aisément). Ces invités peuvent être de différentes natures (appelées « qualité ») : étudiants,  jeunes diplômés, membres d u corps enseignant (une procédure interne de la réservation des tables permet d'inscrire un ou plusieurs invités).  A l'inscription, il est demandé au participant de ren seigner son nom, son prénom e t son adresse e mail (pour les étudiants, il est également demandé de renseigner la promotion (L3, M1, M2). L'inscription nécessite le paiement d'un prix unique fixé à 24  ! ; ainsi l'application demande à l'utilisateur d'inscrire un numéro de carte bancaire (16 chiffres), une date de validité (MM/AAAA) et un cryptogramme (3 chiffres). Une fois que l'utilisateur a renseigné les critères ci dessus, et validé leur inscription, l'application retourne un numéro d'inscription utile pour accéder au reste des fonctionnalités.

Upload: karl-cosse

Post on 21-Jul-2015

75 views

Category:

Documents


0 download

TRANSCRIPT

Anne-Lucie Vion (pouse Cosse) - Licence 3 Miage (2011-2012) [email protected] CONCEPTION ET IMPLEMENTATION D'UN SYSTEME BASIQUE DE GESTION D'INSCRIPTION A UN GALA Rapport

Le projet que j'ai ralis sous le nom d'iGala a t pens et conu l'aide de mthodes agiles . tant membre du comit d'organisation de l'Agile Tour Bordeaux depuis deux ans, et ayant expriment ces mthodes du point de vue du management, je voulais raliser mon premier projet complexe de programmation de manire agile : notamment avec TDD (Test Driven Development : criture de tests unitaires avant mme l'implmentation). L'utilisation de ces mthodes m'a ainsi permis d'crire mon code de manire propre et de tester l'ensemble de mon application de manire automatique et pertinente.

Fonctionnalits implmentesGnralits L'interface utilisateur comprend une succession de menus en ligne de commande pour guider les utilisateurs du programme. Chaque lment du menu principal est dtaill en sous-menus. tout moment, l'utilisateur peut revenir au menu prcdent en tapant retour , et quitter l'application en tapant quitter . Persistance des donnes Pour conserver toutes les inscriptions et rservations faites par les utilisateurs mme lorsque le programme est arrt puis relanc, j'ai mis en place un systme de sauvegarde & de chargement des informations dans un mme fichier.

Gestion des inscriptionsNouvelle inscription (annexe 1) iGala permet de grer l'inscription de 100 invits (ce nombre peut tre chang aisment). Ces invits peuvent tre de diffrentes natures (appeles qualit ) : tudiants, jeunes diplms, membres du corps enseignant (une procdure interne de la rservation des tables permet d'inscrire un ou plusieurs invits). A l'inscription, il est demand au participant de renseigner son nom, son prnom et son adresse e mail (pour les tudiants, il est galement demand de renseigner la promotion (L3, M1, M2). L'inscription ncessite le paiement d'un prix unique fix 24 ; ainsi l'application demande l'utilisateur d'inscrire un numro de carte bancaire (16 chiffres), une date de validit (MM/AAAA) et un cryptogramme (3 chiffres). Une fois que l'utilisateur a renseign les critres ci dessus, et valid leur inscription, l'application retourne un numro d'inscription utile pour accder au reste des fonctionnalits.

Annulation d'une inscription Pour se dsinscrire l'utilisateur doit renseigner son numro d'inscription puis confirmer l'annulation en renseignant le nom associ au numro (pour viter les annulations frauduleuses). L'utilisateur n'est alors plus connu en tant que participant, et peut demander le remboursement de ses frais d'inscription (non gr). Son numro d'inscription ne sera toutefois pas r-attribu une futur nouvel inscrit. Recherche d'informations (annexe 2) L'utilisateur peut, par le biais de l'interface, demander l'affichage d'une liste rcapitulative du nombre d'inscrits, du nombre d'inscrits par promotion et la liste des participants (Nom et Prnoms).

Gestion de rservation de tablesiGala permet de grer la rservation des 10 tables du GalaMiage. Chaque table compte 8 chaises. Rservation & gestion des invits (annexe 3) En tout premier lieu, l'application demande l'utilisateur de renseigner son numro d'inscription (condition obligatoire pour accder aux diffrentes fonctionnalits de rservation (bus et tables). Aprs avoir confirm son identit, le participant renseigne le nombre d'externe qu'il souhaite inviter (dans la limite autoris 1 pour les tudiants et les enseignants, 3 pour les jeunes diplms). Le participant renseigne le nom, le prnom et l'email de ses invits ; cette procdure permet de les inscrire automatiquement. L'utilisateur peut consulter la liste des tables et le nombre de places disponibles correspondant chacune (n'apparaissent disponibles uniquement les tables o le nombre de place(s) disponible(s) est suprieur ou gal au nombre de personnes placer (utilisateur + invits)). L'utilisateur fait son choix. La rservation ncessite un paiement. Son montant se calcule simplement : le montant des frais d'inscription des invits + le prix de la rservation pour chaque personne. Le tarif appliqu est diffrent suivant la qualit de chacun 20 par jeune tudiant, 25 par tudiant , 32 pour les invits et le corps enseignant. Une fois le paiement effectu (suivant la mme mthode que pour le rglement des frais dinscription), l'application renvoi un rcapitulatif contenant : le numro de rservation du participant le numro de la table et de la/des chaise(s) choisies. Gestion des priorits Un jeune diplm est prioritaire sur un tudiant L3, M1 et M2. Si toutes les places sont rserves, l'application annule automatiquement la rservation d'un ou plusieurs tudiant(s) (L3, puis M1, puis M2) pour permettre au jeune diplm de rserver pour lui mme et ses invits. Annulation de la rservation Un participant peut choisir d'annuler sa rservation ainsi que celle de ses invits. Il reste toutefois inscrits au Gala. Attention, un participant ne peut annuler sa rservation que sept jours aprs la confirmation (paiement) de sa rservation, et dix jours avant le dbut du Gala (par dfaut 01/06/2012). Consultation du plan de table

A tout moment, le participant peut afficher une liste rcapitulative du plan d'occupation des tables (numro de table, numro de chaise et occupant).

Gestion de rservation de busRserver une place de bus (annuler une rservation) (annexe 4) L'utilisateur peut rserver pour lui et ses invits, une place de bus. Toutefois, il est ncessaire d'tre inscrit et d'avoir rserv une table (participants + invits) pour avoir accs cette fonction. De la mme manire qu'il rserve une table, le participant rserve sa place de bus (gratuit). Il ne peut choisir son bus, ni son sige : les places sont attribues par ordre de rservation (premier arriv premier servi). la fin de la rservation, le participant voit la place et le bus qui lui ont t attribus, lui ainsi qu' ses invits. Il peut galement afficher le rcapitulatif complet des places rserves.

Ides d'amliorationJe n'ai pas eu le temps de grer la prsence d'accent dans l'affichage. Pour un meilleur confort d'utilisation et de lecture, cette amlioration gagnerait tre implmente. De mme, il sera judicieux de mettre les tarifs en double.

Choix de conception Architecture de l'applicationClasse Gala La classe Gala chapeaute la plupart des autres classes puisqu'elle contient une liste de participants, de tables et de bus (map). C'est dans la classe Gala que sont implmentes toutes les fonctions phares du programme : inscrire, rserver un bus, une table etc Cette faon de procder se justifie par le fait qu'un Gala contient la fois des tables, des bus et des participants (condition ncessaire la tenue dudit Gala). Classe Participant La classe Participant reprsente un individu qui peut tre inscrit au Gala. Deux sortes de participants : les Miage (qui peuvent s'inscrire directement) et les Externes (qui ne peuvent tre inscrits que par des Miage par le biais de la procdure de rservation des tables). Ces deux classes hritent donc de la classe Participant (et de ses mthodes et attributs). Classe Miage Les classes tudiants, JeunesDiploms et Enseignants hritent de la classe Miage, de ses mthodes et attributs. J'ai du utiliser le masquage pour certaines mthodes : ainsi par exemple, la mthode maxInvite() qui renvoie le nombre maximum d'invits par utilisateur (contenue dans Participant) a t masque pour que les jeunes diplms puissent inviter jusqu' trois personnes, les tudiants une, et le corps enseignant et les externes, aucune. Classe Table et Bus La classe Table et la classe Bus hritent de la classe EspaceDeReservation. En effet j'ai identifi un comportement identique entre les tables et les bus. Tous deux contiennent des chaises qui peuvent tre ou non occupes par des participants. La seule diffrence rside dans la quantit de chaise qui varient pour une Table ou pour un

Bus ainsi que la mthode d'attribution des places. Cependant comme j'ai plac cette rgle de gestion dans la classe Gala, je n'ai pas l'implmenter ni dans Table ni dans Bus. La classe Table contient une liste de chaises (map) La classe Bus contient une liste de chaises (map) que nous nommerons siges Le Systme de rservation table/bus est ainsi simplifi. Classe Action Afin de faciliter la navigation dans les menus et sous-menus de l'interface graphique, j'ai mis au point une classe abstraite Action qui peut possder des sous-actions (map numro action Action). S'il n'y a pas d'actions alors on pourra effectuer un traitement (mthode traiter). Lenchanement des actions lors d'un traitement se fait en utilisant des tapes . A chaque donne saisie par l'utilisateur, je regarde si les donnes sont valides ou non. Si elles sont valides alors on change d'tape, sinon on effectue un traitement spcifique.

Classe MapPour la gestion des inscriptions et des rservations, j'avais besoin de crer diverses listes : une liste de participants (inscrits) une liste de tables une liste de bus une liste de chaises/siges Les lments de ma liste ne devaient pas ncessairement tre tris, mais devaient tre associs des cls ; les doublons n'taient pas autoriss et les cls et les valeurs devaient tre spares : j'ai donc choisi d'utiliser des map, qui font parti des classes standards. L'utilisation de cette bibliothque m'a permis d'optimiser la recherche d'information sans avoir parcourir chaque requte l'intgralit des mes tableaux et d'apprhender avec clart l'ajout/suppression d'lments dans mes tableaux .

Classe donnesCette classe permet d'assurer la persistance des donnes, l'enregistrement et le chargement.

Bonus : Les testsJe dfinis l'avance comment je dois utiliser mes mthodes ainsi que leur comportement attendu. Je lance les tests qui seront en chec puisque je n'ai pas encore crit l'implmentation de ces mthodes. Dernire tape, faire passer mes tests au vert en ralisant une implmentation correcte. L'norme bnfice que j'en retire c'est que cette technique m'a permis de tester en permanence, de faon automatique et rapide l'intgralit des fonctionnalits d'iGala. Je n'avais donc nul besoin de tester manuellement une une mes nouvelles implmentations. Je m'assurais ainsi de la non rgression du code. Pour lancer les tests de mon application il suffit d'aller dans le dossier iGala et de lancer la commande : $ make test Le rsultat des tests s'affichera dans la console. Vous pouvez consulter le code des tests dans le fichier tests/GalaTest.cpp

Annexes

menu principal de l'application

S'inscrire au Gala

Afficher la liste/nombre des inscrits

Rserver une table

Voir le plan de table

Rserver une place de bus