Scrum - Gestionnaire de packages

Voici la Fiche de sprint Scrum du Projet 2017 : Gestionnaire de package.

Page d'accueil du projet

= Équipe =
 * Rémi Gattaz
 * Germain Lecorps (Chef de Projet)
 * Thibaut Nouguier
 * Régis Ramel (Scrum Master)

= User Stories et Tâches =

User stories

 * UU1 : En tant qu'utilisateur, je veux me connecter afin d'utiliser l'application
 * UU2 : En tant qu'utilisateur, je veux pouvoir visualiser la liste des packages afin de rechercher un package
 * UU3 : En tant qu'utilisateur, je veux pouvoir créer un ticket afin de demander l'ajout d'un package
 * UU4 : En tant qu'utilisateur, je veux pouvoir modifier un ticket que j'ai créé afin de modifier ma demande
 * UU5 : En tant qu'utilisateur, je veux pouvoir créer un vote sur un ticket afin de montrer mon interêt à l'ajout d'un package
 * UU6 : En tant qu'utilisateur, je veux pouvoir modifier/supprimer un vote sur un ticket afin de changer mon avis
 * UA1 : En tant qu'administrateur, je veux pouvoir créer un package à partir d'un ticket afin d'ajouter un package sur le repository
 * UA2 : En tant qu'administrateur, je veux pouvoir modifier/supprimer un package afin de retirer un package du repository
 * UA3 : En tant qu'administrateur, je veux pouvoir modifier le statut d'un ticket afin de caractériser la demande
 * UA4 : En tant qu'administrateur, je veux pouvoir ajouter/supprimer un administrateur à l'application afin de modifier les utilisateurs capable d'administrer l'application
 * UA5 : En tant qu'administrateur, je veux pouvoir forcer la mise à jour d'un package afin de lancer un build de façon immédiate
 * UA6 : En tant qu'administrateur, je veux pouvoir visualiser les résultats des builds d'un package
 * US1 : En tant que super administrateur, je veux pouvoir ajouter/supprimer un super administrateur à l'application pour autoriser un autre utilisateur à créer des packages
 * US2 : En tant que super administrateur, je veux pouvoir gérer les droits d'accès au repository pour gérer les accès privé au repository

La nomenclature utilisé pour les identifiants des user stories est la suivante :
 * UU : User story Utilisateur
 * UA : User story Administrateur
 * US : User story Super administrateur

Taches
La nomenclature utilisé pour les identifiants des tâches est la suivante :
 * TFR : Frontend
 * TBC : Backend Controller
 * TBB : Backend builder
 * TBR : Backend Repository
 * TEX : Extra

= Sprints Scrum = Un scrum board est disponible sur l'organisation github que nous avons créé : Scrum board

Objectif initial :

 * Étudier la faisabilité du projet
 * Rencontrer des enseignants compétents dans la gestion de packages debian
 * Commencer à se documenter et à étudier des solutions pour la réalisation du projet
 * Établir la structure de l'application
 * Faire le choix des technologies à utiliser

Réalisation :

 * Rencontre avec M. Palix et M. Danjean, enseignants compétents en packages Debian
 * Formalisation du sujet
 * Design de la structure de l'application
 * Définition des User stories

Revue de sprint :
Objectifs atteints :
 * La faisabilité du projet est établie
 * Le sujet a été défini précisément (voir SRS)
 * La structure de l'application a été définie (voir Conception)
 * Le choix des technologies a été fait (voir SRS)

Préparation des sprints suivants :
 * Établissement des User Stories
 * Établissement des tâches

Objectif initial :

 * Établir une structure d'interface Web
 * Créer les premières fonctionnalités de l'API
 * Obtenir une première version de la création de package dans le composant Builder

Réalisation :

 * Frontend
 * Création de la structure du site
 * Création des pages
 * Login
 * Liste des packages
 * Liste des tickets
 * Contribution
 * FAQ / Tutoriels
 * Lecture dynamique des FAQ, tutos, packages et tickets à partir de fichiers Json


 * Backend Controller :
 * Mise en place des environnements de dev/tests/production
 * Construction de l'API nécessaire à la complétion du Frontend


 * Backend Builder :
 * Première version du Builder
 * Support basique de projet de type :
 * Makefile
 * Maven
 * Ant
 * Gradle
 * Exécutable
 * Python

Revue de sprint :
La structure du site est développée. La navigation entre les pages est opérationnelle, il est possible d'obtenir une liste des packages/tickets, et d'effectuer des fonctions de tri/filtre. De plus, la FAQ et les tutoriels sont générés à partir de fichiers Json.

L'API est suffisamment avancée pour permettre de lier au Frontend au Backend.

La première version du Builder permet de générer des packages Debian selon certaines conditions (Makefile, Maven, ...).

Objectif initial :
Application :
 * Prévoir un déploiement de l'application

Frontend :
 * Intégrer les appels API au Frontend
 * Faire la section Administration (Gestion tickets + Résultats des builds)
 * Ajouter gestion des votes à la liste des tickets

Backend :
 * Controller
 * Régler la question du Login
 * Construction des infos pour le Builder
 * Commencer l'automatisation des mises à jour
 * Ecriture de la documentation de l'API
 * Mise en place de tests automatique de l'API (tests externes)
 * Mise en place de tests automatiques du modèle utilisé par l'API (tests internes)
 * Builder
 * Améliorer le Builder (support, adaptabilité)
 * Repository
 * Construction ou utilisation d'une image docker Aptly
 * Mettre en place un Repository

Réalisation :
Application :

Frontend :

Backend :
 * Controller
 * Construction automatique d'une image docker (latest et stable)
 * Mise en place de tests automatiques du modèle utilisé par l'API (tests internes)
 * Mise en place de tests automatiques de l'API à partir de sa description (tests externes)
 * Lint de tous le code (opération de normalisation des sources)
 * Builder
 * Repository