====== Génie Logiciel et Gestion de Projet ====== ===== Objectifs du module ===== * Apprendre à gérer un projet en équipe de la définition du problème, à la réalisation de la solution. * Définir les bonnes pratiques et outils indispensables au génie logiciel. ===== Modalités d'évaluation ===== Le module sera évalué sur les 4 axes suivants : * Gestion de projets (GP) * Outils pour le GL (OGL) * Pratique du GL (PGL) * Projet tutoré (P) L'assiduité ainsi que la participation en cours et en TD participeront à l'évaluation de la note de GP. Des rendus et des exposés détaillés dans la planification permettront d'évaluer l'ensemble des axes. Evaluation de Gestion de Projets (S1 - Coeff 1,5) : - Assiduité en cours TD : - Présentation de premier sprint (JIRA, Git) - Présentation de second sprint (JIRA, Git, tests) - Coaching et retrospective Evaluation en Outils de GL (S1 - Coeff 2,5) : - TD de Versioning : - TD Service REST - TD Tests - TD Packaging et Intégration Continue - Cours exploitation des design patterns - Définition des user stories - Préparation d'une cartographie du système Evaluation en Pratique du GL (S2 - Coeff 2) : - Présentation de troisième sprint (JIRA, Git, tests) - Présentation finale (JIRA, Git, tests) Evaluation en Projet Tutoré (S1 - Coeff 1,5) : - Présentation de premier sprint (code et présentation) - Présentation de second sprint (code et présentation + prise en compte du feedback) Evaluation en Projet Tutoré (S2 - Coeff 1,5) : - Présentation de troisième sprint (code et présentation + prise en compte du feedback) - Présentation finale (code et présentation + prise en compte du feedback) ===== Intervenants ===== ^ Nom ^ Affiliation ^ Adresse ^ | __[[blay@unice.fr|Mireille Blay-Fornarino]]__(MBF) | IUT /UNS/ I3S | Bureau XXX Ou Bâtiment Templiers :Bureau 449 ([[http://www.polytech.unice.fr/~blay|www]]) | | [[urli@i3s.unice.fr|Simon Urli]] (SU) |Start-up The 6th Screen / I3S | Bureau XXX | ===== Planification ===== ==== Première partie ==== * **07/09/15** : Introduction au module et au sujet : * [[http://goo.gl/forms/oL6cO131gG|Qui êtes-vous ?]] * Cours **SU** : * {{:2015_2016:lp:idse:gl:intro.pdf|Présentation du module}} * {{:2015_2016:lp:idse:gl:gestion_de_version.pdf|Retour sur la gestion de version}} * TD **SU** : * [[2015_2016:lp:idse:gl:sujet_projet|Présentation du projet et des objectifs]] * [[http://goo.gl/forms/oPKFoUUX6W | Constitution des groupes]] * **28/09/15** : Agilité : * Cours **MBF** : * Introduction aux méthodes Agiles * User stories, Sprints etc. * TD **SU & MBF** : * Atelier USTA * Définition des Stories * **05/10/15** : Versioning : * Cours **SU** : * Introduction à la gestion de version et {{:2015_2016:lp:idse:gl:atlas_-_etudiant_-_g_rer_son_projet.pdf|aux outils JIRA}} * Git & Git flow * TD **SU** : * [[2015_2016:lp:idse:gl:stash_git|Connection à Stash et Prise en main de Git]] * [[2015_2016:lp:idse:gl:git_references|Pour aller plus loin avec Git]] * Evaluation OGL * **12/10/15** : Tests : * Cours **SU** : * {{:2015_2016:lp:idse:gl:tests.pdf|Tests et mocks}} * {{:2015_2016:lp:idse:gl:code-tests.zip|Exemple de tests présenté en cours}} * TD **SU** : * Mise en place de tests * Evaluation OGL * **19/10/15** : Packaging et Intégration continue : * Cours **SU** : * {{:2015_2016:lp:idse:gl:maven-jenkins.pdf|Packaging, Automatisation et Integration Continue}} * [[2015_2016:lp:idse:gl:maven_jenkins_ressources|Ressources Maven & Jenkins]] * TD **SU** : * Prise en main de Maven : {{:2015_2016:lp:idse:gl:pom.xml.zip|pom.xml}} * Connection avec Jenkins * Evaluation OGL * **02/11/15** : Avancement sur le projet * Mise en place de l'[[http://iut-outils-gl.i3s.unice.fr/jenkins/|accès à Jenkins]] * **07/11/15** : Fin du premier Sprint et Architecture de services : * Cours **SU** : * {{:2015_2016:lp:idse:gl:rest.pdf|Architecture de services et services web}} * {{:2015_2016:lp:idse:gl:code-service-web.zip|Code d'un service web}} * Release du premier Sprint (Tag Git et Release JIRA) * Evaluation : * Statut Jenkins * Projet Maven * Tickets * Commits * Tests * Qualité du code * Valeur ajouté de la solution (qu'est ce qui a été développé ?) * **Démo Obligatoire** * **16/11/15** : Avancement sur le projet * **23/11/15** : Patrons de conceptions : * Cours **SU** * Introduction aux design pattern * Catalogue et usages * TD **SU** : * Recherche et applications de patterns par groupe * **30/11/15** : Patrons de conceptions (suite) : * Cours **SU** * Retrospective sur l'application des patterns * Evaluation OGL * TD **SU** : * Avancement sur le projet * **07/12/15** : Projet : * TD **SU** : * Avancement sur le projet * **13/12/15** : [[2015_2016:lp:idse:gl:sprint2|Fin du second sprint]] : * Présentation : * Objectifs attendus * Démonstration * Etat actuel du projet (test, qualité, etc) * Projection pour la suite * Evaluation * GP (Git, JIRA, IC) * P (code + présentation) ==== Deuxième partie ==== - **18/01/16** : Reprise de code : * TD **SU** : * Dispatching des anciens codes * Réalisation de tests et fonctionnalités * [[http://goo.gl/forms/x3s0U7jiOV|Auto-évaluation]] - **18/01/16** : Redéfinition du projet : * TD **SU** : * Nouveaux objectifs : * Réaliser un jeu de UNO avec tous les [[2015_2016:lp:idse:gl:sujet_projet|objectifs]] * {{:2015_2016:lp:dam:gl:jira.pdf|Slides}} et {{:2015_2016:lp:dam:gl:atlas_-_etudiant_-_ge_rer_son_projet.pdf|document}} JIRA - **25/01/16** : Développement du premier Sprint * Fonctionnalités attendues (Rendu pour lundi 01/02/16 23h59) : * Initialiser une partie (peut être IHM) * Rejoindre une partie - **02/02/16** : Fin du Sprint 1 * Démo : * IHM : connection en tant qu'invité. Liste des parties sur le tableau de bord. * API REST : créer une partie / rejoindre une partie / démarrer une partie / récup joueur et main joueur. Token d'authentification -> à revoir. Deux joueurs ne peuvent pas se connecter avec le même nom -> revoir la récup sur erreur. Seul le joueur qui a créé la partie peut lancer la partie. idcard : position de la carte dans la main. * Rien niveau stat. * Moteur : initialisation plateau et carte. * Fonctionnalités Sprint 2 (Rendu pour lundi 08/02/16 23h59) : * Initialisation partie niveau IHM * Inscription et authentification utilisateur * Jouer une partie avec toutes les règles. * Discussion de refonte de l'API REST, structuration du code pour l'IHM * Toujours pas de README * Organisation du code dans le moteur - **09/02/16** : Fin du Sprint 2 * Démo : * IHM possible de créer une partie nb de joueurs de 2 à 6. Possible de rejoindre une partie et de la lancer. Guest géré avec un token. * Moteur : Problème de mélange des cartes (à voir ?). Possible de poser des cartes, +2, changement de sens et passage de tour implémenté dans les cartes. * API REST améliorée. * Stats : base de données réalisée. Table user pour gérer les utilisateurs enregistrés. Table pour gérer la sauvegarde / import de partie. Pas de classe pour gérer la DB pour le moment. * Fonctionnalités Sprint 3 (Rendu pour **dimanche 21/02/16 23h59**) : * Côté IHM pouvoir jouer la partie * Côté REST pouvoir gérer inscription des users * Côté model faire les actions des cartes spéciales * Faire l’inscription au jeu de bout en bout * Faire le bump des versions (cf [[http://maven.apache.org/maven-release/maven-release-plugin/update-versions-mojo.html]]) * Attention groupe stats en chûte libre ! * IHM : faire plusieurs scripts pour gérer lancement jenkins / build complet de l'appli * Moteur : attention à la structuration du code et aux tests * REST : attention à ne pas ajouter du code sans savoir ce qu'il fait exactement - **23/02/16** : Sprint 3 * Démo : * Inscription possible à partir de l'interface (unicité de l'email et du login) * Cas d'erreur pris en compte si l'utilisateur existe déjà * Cas d'erreur pour un login/password incorrect * Connection à partir d'un user * Rafraîchissement des infos de la partie toutes les 5 secondes * Possibilité de jouer : * Affichage du tour du joueur suivant * Cartes spéciales non fonctionnelles * API REST : méthodes prennent un token d'authentification * Moteur de jeu : * Accès aux classes de règles : possibilité de créer des variantes * Base de données : * Inscription utilisateur * Structure réalisée pour la gestion des stats * Participation au projet (1 min / personne) * Fonctionnalités Sprint 4 : * Déconnection d'un user * Sortie d'une partie non commencée * Sortie d'une partie en cours -> suppression de la partie * Variante de base + autre variante * IA Basique * Release attendue pour le **dimanche 13 mars à 23h 59** - **01/03/16** * Cours : début du cours sur l'automatisation du déploiement - **15/03/16** * Fin du cours {{:2015_2016:lp:idse:gl:deploiement.pdf|automatisation du déploiement}} * [[http://www.telecom-valley.fr/workshop-docker-birthday-celebration-3/|Journée Docker organisée par Telecom Valley le 23/03/16]] * Fonctionnalités attendues pour le Sprint 5 : * * Prochaine release attendue pour le **dimanche 20/03/16 23h 59** - **22/03/16** : Sprint 5 * Démo : * Interface d'administration : affichage des stats sur les parties en cours * Langue cassée sur le serveur * Bot implémenté mais pas lié à l'IHM * Variante de jeu idem * Sauvegarde pas intégrée dans le moteur * Ergonomie pioche : changement de curseur pour la pioche et effet sur les cartes * Bug +2 et +4 résolus * Fonctionnalités attendues pour le Sprint 6 : * Admin : liste des parties : pouvoir voir joueur et pouvoir détruire partie * Test IA * Refactoring BDD * User BDD * Refactoring board/game dans une branche feature/refacto * Variante 7 * Release attendue pour le **lundi 28/03/16 12h 00** - **29/03/16** : Sprint 6 * Utilisation Log4J : http://www.mkyong.com/logging/log4j-hello-world-example/ * Utilisation Selenium : http://www.seleniumhq.org/docs/02_selenium_ide.jsp * Démo : * Relance : pas de tests * Administration : connection réalisée aux WS * Debug effectué pour la traduction côté IHM * Suppression de partie possible dans l'admin : pas de notifs pour les users présents * Prise en compte dans l'affichage du fait que le joueur ne peut pas interragir avec ses cartes quand ce n'est pas son tour * Fonctionnalités attendues pour le Sprint 7 * Refactoring moteur game/board * Correction bugs IHM * Admin : voir tous les joueurs / filtres pour la recherche de joueurs * Admin : changement de rôles pour les joueurs (+ bannir) * Possibilité de choisir la variante à la création de la partie * Possibilité de choisir d'autres connecteur pour la BD (+ tests) * Relance et sauvegarde d'une partie (moteur) * Tests du player * Tests de l'IA * Ajout des logs * Release attendue pour le **dimanche 17 Avril 23h 59** - **19/04/16** : Sprint 7 * Présentation Globale du projet (20 min) : * Présent : Jérémie Elbaz, Jérémy Froment, Baptise Etienne, Damien Clémenceau, Marina Helie-Zadeh * Contexte du projet * Fonctionnalités attendues / Fonctionnalités réalisées * Organisation au sein du projet * Architecture logicielle * Points forts / points faibles * Planning * Présentations par équipes : * Organisation de l'équipe (interne / externe) * Travail réalisé + Focus technique * Points forts / Points faibles * IHM (10 min) : Jérémy Froment, Téva Locandro, Nicolas Claisse * Moteur / IA / Règles (10 min) : Baptiste Etienne, Kevin Detti, Tom Phily, Pierre-Antoine Charpentier, Régis Parpex, Stéphanie Carrie, Nassim Omrani * Sauvegarde / REST (10 min) : Damien Clémenceau, Jocelin Heinen, Jérémie Elbaz * BDD (10 min) : Marina Helie-Zadeh, Ugo Paneccasio, Pierre Echardour, Mehdi Ibnettalib, Loic Monot - **26/04/16** : Sprint 8 * Objectifs : * Recherche d'utilisateur dans l'admin * Tests IA * Tests relance / sauvegarde * Intégration des variantes * Démo : * Erreur dans la démo (bug aléatoire - Effet démo) * DAO intégré mais pas totalement * Démo : uniquement le moteur de recherche sur le nom du joueur * Prévue pour la release du 03/05/16 : * Intégration IA * Intégration Variantes * Intégration sauvegarde - **26/04/16** : Sprint 8 * Démo : * IA pas intégrée mais tests ajoutés. * Correction des "token not found" lorsque l'on quittait une partie * Sauvegarde à intégrer * Amélioration Javadoc + tests IA - **02/05/15** : Exposé final : * Sprint final attendu pour le **15/05/16 23h 59** * Critères des présentations : * Contexte (du projet ou si équipe, au sein du projet) * Fonctionnalités attendues / réalisées / abandonnées * Organisation (interne à l'équipe et externe) + Utilisation des outils * Architecture logicielle (gros grain et fin grain) * Quels sont les points forts / points à améliorer * Comment vous referiez les choses ? * **8h30** -> **9h05** : Présentation Globale du projet (25 min + 10 min de questions) * Jérémie Elbaz, Jérémy Froment, Baptise Etienne, Damien Clémenceau, Marina Helie-Zadeh * Retour sur les Sprint * **9h 10** -> **9h 50** : Présentation du moteur (30 min + 10 min de questions) * Partie "Cœur" : Baptiste Etienne, Kevin Detti, Nassim Omrani * Partie Règle : Tom Phily, Pierre-Antoine Charpentier * Partie IA : Régis Parpex, Stéphanie Carrié * **10h** : Présentation BDD (20 min + 5-10 min de questions) * Marina Helie-Zadeh, Ugo Paneccasio, Pierre Echardour, Mehdi Ibnettalib, Loic Monot * **10h 30** : Présentation Sauvegarde / REST (20 min + 5-10 min de questions) * Damien Clémenceau, Jocelin Heinen, Jérémie Elbaz * **11h** : Présentation IHM (20 min + 5-10 min de questions) * Jérémy Froment, Téva Locandro, Nicolas Claisse