====== 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. **Semestre 1 :** 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) */: - Définition des user stories - TD Service REST (Sprint 0) - TD de Versioning - TD Packaging et Intégration Continue - Cours exploitation des design patterns - Rapport intermédiaire (second sprint) 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) **Semestre 2 (peut évoluer) :** Evaluation en Pratique du GL /*(S2 - Coeff 2)*/ : - Utilisation des outils au cours du projet - Présentation de quatrième sprint (JIRA, Git, tests) - Présentation finale (JIRA, Git, tests) Evaluation en Projet Tutoré /*(S2 - Coeff 1,5)*/ : - Rapport de troisième sprint - Présentation de quatrième (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]]) | | __[[camillie@i3s.unice.fr|Cécile Camillieri]]__ (CC) | I3S | Bâtiment Templiers : Bureau 403 | | __[[duffau@i3s.unice.fr|Clément Duffau]]__ (CD) | I3S/Axonic | Bâtiment Templiers : Bureau 402 | | __[[lazreg@i3s.unice.fr|Sami Lazreg]]__ (SL) | I3S/Visteon | Bâtiment Templiers : Bureau 402 | ===== Planification ===== ==== Première partie ==== * **06/09/16** : Introduction au module et au sujet : * [[https://goo.gl/forms/zAReAQdQKP7unJwW2|Qui êtes-vous ?]] * Cours **CC** & **CD** : * {{:2016_2017:lp:idse:gl:0_introduction.pdf|Présentation du module}} * {{:2016_2017:lp:idse:gl:1_project_management.pdf|Introduction à la gestion de projet}} * {{:2016_2017:lp:idse:gl:2_intro_versionning.pdf|Introduction à la gestion de version}} /* {{:2015_2016:lp:idse:gl:gestion_de_version.pdf|Introduction à la gestion de version}} */ * TD **CC** & **CD** : * {{:2016_2017:lp:idse:gl:3_project.pdf|Présentation du projet et des objectifs}} /* [[2015_2016:lp:idse:gl:sujet_projet|Présentation du projet et des objectifs]] */ * [[https://goo.gl/forms/rB3UW5G9XnC0SGGf1 | Constitution des groupes]] * **13/09/16** : Agilité : * Cours **CD** : * {{:2016_2017:lp:idse:gl:4_agility.pdf|Introduction aux méthodes Agiles et User Stories}} * TD **CD** : * Atelier de découverte de l'agilité : Paper Plane * Définition des Stories : Forum de discussion * Evaluation : * (OGL) Par équipe de projet : Users stories à rendre en **début de séance** le 20/09. **Rendu des Users Stories sur papier en début du cours du 20/09. Pas rendu = 0.** * **20/09/16** : Services web : * Cours **CC** : * {{:2016_2017:lp:idse:gl:5_ws.pdf|Architecture de services et services web}} * {{:2016_2017:lp:idse:gl:ws-example.zip|Code d'un service web}} * TD **CC** : * {{:2016_2017:lp:idse:gl:td1_shapesws.pdf|Enoncé du TD}} * {{:2016_2017:lp:idse:gl:td-shapes-ws.zip|Reprise du service web de formes}} * (OGL) En binôme. Sprint 0: Rendre selon les consignes de l'énoncé pour le 2/10/2016. * **27/09/16** : Versioning : * Cours **CC/CD** : * {{:2016_2017:lp:idse:gl:7_git.pdf|Gestion de version avancée, Git}} * Présentation des outils Jira /*{{:2015_2016:lp:idse:gl:atlas_-_etudiant_-_g_rer_son_projet.pdf|aux outils JIRA}}*/ * Présentation sur {{:2016_2017:lp:idse:gl:8_kanban_in_practice.pdf|Kanban dans la pratique}} * TD Git **CC** : * {{:2016_2017:lp:idse:gl:td-git.pdf|Enoncé du TD Git}} * (OGL) Seul. Rendu à faire pendant la séance. * TD Jira **CD** : * Prise en main de Jira * Sujet du projet : {{:2016_2017:lp:idse:gl:project.pdf|Projet}} **Fin du Sprint 0 (TD Web Services). Livraison attendue au plus tard le 2 octobre à 23h59 (heure française). Retard = 0.** * **04/10/16** : Travail libre sur le Projet (CD) * Cours **CD** : * Rétrospective début d'année * Planning Poker * TD : Travail libre sur le Projet (CD) * **11/10/16** : Tests : * Cours **CD** : * {{:2016_2017:lp:idse:gl:10__software_testing.pdf | Les tests logiciels}} * {{:2016_2017:lp:idse:gl:11_Sprint_1_kick-off.pdf | Kick-off Sprint 1 }} * JUNIT /*{{:2015_2016:lp:idse:gl:tests.pdf|JUNIT}}*/ * Tests et mocks /*{{:2015_2016:lp:idse:gl:tests.pdf|Tests et mocks}}*/ * Démo /*{{:2015_2016:lp:idse:gl:code-tests.zip|Exemple de tests présenté en cours}}*/ * TD **CD** : * Mise en place de tests pour le service web de formes * Evaluation OGL **Mise en ligne du sprint-0 Sur Github. Livraison attendue au plus tard le 16 octobre à 23h59 (heure française). Retard = 0.** * **18/10/16** : Packaging et Intégration continue : * Cours **CC** : * {{:2016_2017:lp:idse:gl:12_debrief_git_.pdf|Débrief TD Git et Sprint 0}} * {{:2016_2017:lp:idse:gl:13_debrief_ws.pdf|Débrief TD Web Service}} * {{:2016_2017:lp:idse:gl:14_maven_ci.pdf|Packaging, Automatisation et Integration Continue}} * {{:2016_2017:lp:idse:gl:15_authentication_ws.pdf|Service d'authentification}} * TD **CC** : * Prise en main de Maven, projet de base : {{:2016_2017:lp:idse:gl:game.zip|projet.zip}} * Connection avec Jenkins * Evaluation OGL /* * **11/10/16** : Tests le retour & integration continue: * Cours & TD **CC** : */ * **25/10/16** et **01/11/16** : Vacances * **08/11/16** : Travail sur Projet * Séance encadrée **CC** **Fin du Sprint 1. Livraison attendue au plus tard le 13 octobre à 23h59 (heure française). Retard = 0.** * **14/11/16** : Introduction à UML (2h) * Cours **MBF** * TD sur les cas d'utilisation appliqués à l'étude de cas. (rendu) * **15/11/16** : Fin du premier Sprint - Evaluation * Cours **CC** & **CD** * 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** * **21/11/16** : Diagrammes de classe et de séquence (4h) * Cours **MBF** * TD sur l'étude de cas (rendu) * **22/11/15** : Rétrospective Sprint 1 et Kick-Off Sprint 2 * Cours **CD** * {{:2016_2017:lp:idse:gl:17_sprint_1_retrospective.pdf|Retrospective Sprint 1}} * {{:2016_2017:lp:idse:gl:18_sprint_2_kickoff.pdf|Kick-off Sprint 2}} * **29/11/16** : Patrons de conception * Cours **CC** : * {{:2016_2017:lp:idse:gl:18_solid.pdf|Présentation des principes SOLID}} * {{:2016_2017:lp:idse:gl:19_design-patterns.pdf|Introduction aux Design Patterns}} * Catalogue et usages * [[http://www.labri.fr/perso/xblanc/teaching.html | Cours de Xavier Blanc sur la COO (le cours 5 traite des design pattern)]] * TD **CC** : * Recherche et applications de patterns par groupe * **06/12/16** : Travail libre sur le Projet (CC) **Fin du Sprint 2. Livraison attendue au plus tard le 11 décembre à 23h59 (heure française). Retard = 0.** * **12/12/16** : UML (4h) * Cours **MBF** * TD * **13/12/16** : Fin du second sprint - Evaluation * Cours **CC** & **CD** * 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) * **03/01/15** : Rétrospective globale et Kick-Off Sprint 3 * Cours **CC** * {{:2016_2017:lp:idse:gl:20_sprint_2_retrospective.pdf|Retrospective premier semestre}} * {{:2016_2017:lp:idse:gl:21_sprint_3_kickoff.pdf|Kick-off Sprint 3}} + {{:2016_2017:lp:idse:gl:21b-sprint3-appendix.pdf|Appendice (déploiement BDD)}} * {{:2016_2017:lp:idse:gl:angular_basic_project.zip|Projet Angular de base, version corrigée}} * TD **CC** : * Définition des nouveaux groupes * Mise en place et travail sur le projet ==== Deuxième partie ==== (Planning non final : des séances de cours remplaceront parfois le coaching.) * **10/01/15** : Introduction à l'intégration * Cours **CD** * {{:2016_2017:lp:idse:gl:22_integration.pdf|Comment intégrer plusieurs projets?}} * TD **CD** : * Travail sur le projet * **17/01/17** : Travail encadré sur le Projet et Coaching (**SL**) * **24/01/17** : SoapUI et Sonar * Cours **CD** * {{:2016_2017:lp:idse:gl:23 _continuous_integration_tools.pdf| Outils et intégration continue}} * **31/01/17** : Travail encadré sur le Projet et Coaching (**SL**) * **07/02/17** : Travail encadré sur le Projet et Coaching (**SL**) **Fin du Sprint 3. Livraison attendue au plus tard le 19 février à 23h59 (heure française). Release Git&Jira (sprint-3) + rapport technique. Retard = 0.** * **21/02/17** : Travail encadré sur le Projet et Coaching (**SL**) * **28/02/17** : Travail encadré sur le Projet et Coaching (**SL**) * **13/03/17** : * Cours **CC** * {{:2016_2017:lp:idse:gl:24_test_mock_continued.pdf| Retour sur les tests unitaires et mocks}} * **14/03/17** : Travail encadré sur le Projet et Coaching (**SL**) * **21/03/17** : Travail encadré sur le Projet et Coaching (**SL**) **Fin du Sprint 4. Livraison attendue au plus tard le 26 mars à 23h59 (heure française). Release Git&Jira (sprint-4). Retard = 0.** * **28/03/16** : Fin du quatrième sprint - Evaluation * Cours **CC** & **CD** * Présentation : * Objectifs attendus * Revue de code * Etat actuel du projet (test, qualité, etc) * Projection pour la suite * Evaluation : * PGL (Git, JIRA, IC) * P (code + présentation) * **04/04/17** : Travail encadré sur le Projet et Coaching (**SL**) * **25/04/17** : Travail encadré sur le Projet et Coaching (**SL**) * **02/05/17** : Travail encadré sur le Projet et Coaching (**SL**) * **09/05/17** : Travail encadré sur le Projet et Coaching (**SL**) **Fin du Sprint 5. Livraison attendue au plus tard le 14 mai à 23h59 (heure française). Release Git&Jira (sprint-5) + slides soutenance. Retard = 0.** * **16/05/17** : Fin du sprint final - Evaluation * Cours **CC** & **CD** * Présentation : * Objectifs attendus * Démonstration * Etat du projet (test, qualité, etc) * Prise de recul * Evaluation : * PGL (Git, JIRA, IC) * P (code + présentation) /* Liens QGL: TDD: https://github.com/polytechnice-si/3A-OGL-TDD_Kata Test integration (by Mireille): http://www.i3s.unice.fr/~mosser/_media/teaching/15_16/se/mbf_testintegration-2015.pdf Crowd: Identity Management – http://atlas.i3s.unice.fr/crowd JIRA: Project Tracker – http://atlas.i3s.unice.fr/jira Stash: Git repository – http://atlas.i3s.unice.fr/stash */ /* - **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 */