SRS - Gestionnaire de packages

Voici la fiche SRS 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)

= Description générale =

Le but du projet
Le but de ce site est de fournir une plateforme de rencontre et de mise en relation des particuliers ou des professionnels qui souhaitent proposer des produits à la vente d'occasion, ou chercher des articles hors des magasins ou sites de vente traditionnels. Ce site a pour but d'être accessible et facile d'utilisation pour les personnes qui n'ont pas une grande expérience dans l'utilisation de sites webs.

Fonctionnalités

 * Visualisation des packages disponibles
 * Filtrage sur la visualisation des packages (Mots-Clés, Filière, Matière)
 * Connexion utilisateur
 * Dépôt d'une archive pour la création d'un package par un utilisateur authentifié
 * Suppression d'un package existant par l'utilisateur qui a demandé sa création
 * Création d'un package en traitant l'archive (tar, zip, ...) déposée par un utilisateur
 * Ajouter/Supprimer des packages
 * Ajouter/Supprimer des utilisateurs
 * Mise à jour / maintenance automatique des packages

Utilisateurs potentiels
Personne souhaitant téléchargé des packages spécifiques à sa formation
 * 1 Étudiant

Personne souhaitant créer un package pour sa matière.
 * 2 Enseignant

Il peut également ajouter des packages ou en supprimer. Il peut aussi accéder à la maintenance des packages en cas d'erreur pendant l'automatisation.
 * 3 Administrateur

Cas d'utilisations
//TODO

//Nécessite de mettre au point l'IHM

Contraintes générales
Pour déposer un package : Environnement de l'application :
 * Avoir un compte enseignant pour s'authentifier sur la plate-forme
 * Avoir un minimum de connaissances sur les outils qui doivent être déposé pour constituer l'archive
 * Les composants builder et coordinateur sont sur des machines de types Debian (64 bits).
 * Le Repository doit également être un Debian (64 bits)
 * Le traitement des archives doit s'effectuer avec un langage de script (shell, ruby, perl).

= Fonctionnement des composants =

Liste des packages
Cette page sert aux utilisateurs à consulter la liste des packages disponibles sur le repository.

En haut de la page, un tutoriel explique aux utilisateurs comment utiliser le repository sur linux, c'est à dire à le rajouter dans les sources de packages, puis à installer les packages avec les commandes "sudo apt-get install ...".

Le reste de la page correspond à la liste des packages disponibles sur le repository, ainsi que des options de filtre pour restreindre la liste à certaines filières, matières, etc.

Dépôt d'une contribution
Cette page consiste en un formulaire à remplir pour proposer une contribution.

En haut de la page, un tutoriel explique aux utilisateurs ce qu'ils doivent saisir dans chacun des champs du formulaire, ainsi que les différents types de dépôts gérés par le système.

L'utilisateur doit d'abord se logguer avec ses identifiants AGALAN, puis effectuer le dépôt de l'outil. Il y a pour cela plusieurs solutions :
 * L'utilisateur dépose un lien Git contenant déjà tout ce dont le système a besoin pour générer un package.
 * L'utilisateur dépose un lien Git ne contenant pas tous les fichiers nécessaires à la création du package.
 * L'utilisateur dépose un lien vers une archive (tarball) sur le site de téléchargement de l'outil.
 * L'utilisateur dépose directement la tarball en mode dépôt de fichier.
 * L'utilisateur n'a pas su trouver un lien pour télécharger l'outil. Il peut alors déposer un lien vers le site de l'outil, pour laisser au gérant du système le soin de trouver les fichiers dont le système a besoin.

De plus, l'utilisateur doit renseigner le nom du package, le numéro de version, l'architecture (32/64 bits), le maintainer (responsable), la filière pour laquelle cet outil est requis (ex : RICM5), la matière pour laquelle cet outil est requis (ex : TMA). Il est possible de laisser une description expliquant l'utilité de l'outil, ainsi que de spécifier des dépendances.

La contribution doit ensuite être soumise pour être envoyé à l'administrateur pour la validation.

Administration
Cette page propose des outils d'administration du repository, tels que :
 * La liste des packages disponibles
 * La page de validation/refus des contributions
 * Une interface de monitoring (logs)

Builder
Le Builder est le composant qui va gérer la création du package. Il utilise les lien Git envoyé par le Controller pour obtenir les fichiers sources de l'outil à packager.

Le Builder est basé sur un composant Docker de génération de Package (choix à définir). La construction consiste en une suite de commande Unix, c'est pourquoi nous avons choisi le Shell.

Nous avons décidé qu'une fois le package crée, le Builder le renvoi au Controller au lieu de directement le copier sur le Repository. Nous avons fait ce choix pour ce soit le Controller qui effectue les copies sur le Repository.

Repository
= Appendices =

Structure du SRS
The document is based on template of the Software Requirements Specification (SRS) inspired of the IEEE/ANSI 830-1998 Standard.

References :

 * http://www.cs.st-andrews.ac.uk/~ifs/Books/SE9/Presentations/PPTX/Ch4.pptx
 * http://en.wikipedia.org/wiki/Software_requirements_specification
 * IEEE Recommended Practice for Software Requirements Specifications IEEE Std 830-1998