Rapport Final EDCampus

From air
Jump to navigation Jump to search


L'équipe

  • Samuel Courthial (chef de projet)
  • Sebastian Fougère
  • Robin Delbos

Supervisé par : Gérard Pollier, Anthony Geourjon, Didier Donsez

Qu'est ce qu'EDCampus?

Dashboard EDCampus

EDCampus est une plateforme de gestion de projet développé par Disrupt Campus Grenoble depuis 4 ans. Elle est actuellement en production avec 2400 comptes utilisateurs , 500 utilisateurs actifs et plus de 500 projets. Au cours de son histoire la plateforme a eu de multiples contributeurs : environ 50 étudiants + Anthony Geourjon EDCampus a été développé principalement pour que les professeurs puissent créer des projets pour leurs étudiant et pouvoir communiquer plus facilement au cours de celui-ci. Mais la plateforme regroupe de nombreuses autres fonctionnalités comme la création de sondages, un calendrier, une fonctionnalité de gestion des finances...

Plus précisément, EDCampus permet la création de projet avec lesquels il est possible d'effectuer diverses actions:

  • Création d'une hiérarchie en créant des sous-projets, rattachés à un parent. Ces projets peuvent alors partager certaines ressources.
  • Partage de dossiers, fichiers et liens externes.
  • Création de tâches, pouvant être manipuler et organiser dans des Kanban ou des Gantt.
  • Suivi de l'évolution d'un projet depuis le calendrier. Ce dernier répertorie tous les évènements passés et futurs, a propos d'un ou plusieurs projets suivis.
  • Organisation d'atelier (Brain-storming, tableau blanc, visio, Business Model, Lean et SWOT Canvas).
  • Gestion des ressources (nom, quantité, prix).
  • Sondages.
  • Création de publications (si le projet est publique, naturellement).
  • Gestion des contacts liés au projet.
  • Gestion de la finance du projet.
  • Création de demande de livrable, auprés des membres du projet.

Notre objectif au cours de ce projet était de contribuer à EDCampus par de la correction de bugs et de l'ajout de fonctionnalités, ainsi que par la refactorisation d'un chat.

Architecture du système

Architecture générale


Nous voyons donc que l'architecture est plutôt classique avec une partie front, une partie back et une base de données. Cependant il y a également une deuxième partie back-node utilisée pour la fonctionnalité de chat. Cette partie contient le serveur SocketIO qui permet d'informer les utilisateurs lors d'envoi de message. Ce serveur gère des salles pour chaque discussions qu'il est possible de rejoindre pour être notifié quand un message est envoyé. Le serveur ne contient ni les discussions, ni les messages envoyés, qui doivent ensuite être récupérés côté client en allant les chercher dans la BDD.

Technologies et outils

Technologies

  • PHP : technologie utilisée pour le BackEnd
  • AngularJS : technologie utilisée pour le FrontEnd
  • SQL : technologie utilisée pour la base de données
  • SocketIO : technologie utilisée pour le chat
    • Il s'agit d'une bibliothèque JavaScript permettant une communication bidirectionnelle temps réel entre les clients et les serveurs. Cette bibliothèque facilite l'envoi et la réception d'évènement de différents type, de contenu varié. De plus, Socket.io permet facilement la création de "salles", des canaux pouvant être rejoint ou quitter par des sockets. Elles permettent notamment l'envoi de messages à un sous-ensemble précis de client(ceux ayant rejoint la même salle).
Le concept de "salles" de socket.io

Outils

  • GitLab : Plateforme pour le travail collaboratif
  • GitKraken : Outil pour utiliser Git plus facilement
  • PHPStorm : Editeur pour le developpement BackEnd
  • WebStorm : Editeur pour le developpement FrontEnd
  • MySQL : Outil pour accéder a la base de données
  • Docker : Outil d'empaquetage d'une application et de ces dépendances

Réalisations techniques

Correction de bugs

Nous avions plusieurs types d'issues de correction de bugs

  • Traduction manquante
  • Erreurs d'affichage
  • Fonctionnalités ne se comportant pas de la bonne façon

Ajout de fonctionnalités

  • Envoi de notifications aux utilisateurs
  • Ajout d'un bouton de suppression
  • Affichage des prochaines échéances dans un projet

Ajout du chat

Le chat d'EDCampus était déjà présent mais de nombreuses fonctionnalités ne fonctionnaient pas correctement. Nous avons donc du débuguer les fonctionnalités mais aussi remplacer Firebase (qui était l'outil utilisé pour faire fonctionner le chat) par SocketIo afin que EDCampus ne soit pas dépendant d'outil externe comme Firebase.

Organisation

Méthode

Nous avons travaillé en méthodologie agile avec GitLab. Nous avons repartis notre travail en sprints d'une semaine chacun pour un total de 6 sprints. A chaque sprint nous organisions au moins une réunion le lundi matin avec Anthony Geourjon afin de s'organiser pour la semaine et faire un récapitulatif de la semaine précédente. Pendant chaque sprint nous avions des issues données par Anthony Geourjon que nous nous répartitions selon nos préférence et notre avancement.

Le contenu

Notre travail s'organisait en deux parties :

  • Dans les 4 premiers sprints nous avons travaillé sur de la correction de bugs et de l'ajout de fonctionnalités, choisies chaque semaine par Anthony Geourjon.
  • Dans les 2 derniers sprints nous avons travaillé sur la fonctionnalité de chat.

Rôles

  • Dans la première partie nous choisissions les issues selon nos préférences, certaines issues nécessitaient doc des modifications coté front et back, Nous avions donc tous un rôle de développeur FullStack.
  • Dans la deuxième partie Samuel travaillait sur SocketIO alors que Robin et Sebastian travaillaient sur des issues d'ajout de fonctionnalités du chat et de la correction de bugs des fonctionnalités existantes. Puis une fois les fonctionnalités ajoutées nous avons tous travaillés sur l'intégration de SocketIO et sur les tests.


Métriques

Répartition du travail

Nous avons réalisés des métriques sur le nombre de lignes de code ainsi que sur le nombre d'issues; Cependant celles ci ne sont pas forcement représentatives puisque certaines issues nécessitaient plus de travail que d'autres sans forcement nécessiter plus de code.

  • Lignes de code :
  • Nombre d'issues :

Cout développeur

Conclusion

Finalement le projet était enrichissant nous avons pu travailler sur un projet concret et même avoir des retours d'utilisateur sur notre travail. De plus nous avons eu l'occasion de travailler sur des fonctionnalités front et back avec des langages que nous n'avions que peu utilisé jusqu'à présent.

Cependant le projet manque de documentation. De plus le projet ayant eu de nombreux contributeurs il est parfois compliqué de comprendre comment fonctionne le code avec toute les façons différentes de coder.

Glossaire

Bug : Défaut de conception d'un programme informatique à l'origine d'un dysfonctionnement.

Back/BackEnd : Partie d'un système avec laquelle un utilisateur n'interagis pas directement.

Chat : Fenêtre de discussion.

Front/FrontEnd : Partie d'un système avec laquelle un utilisateur interagis.

Fullstack : Un développeur fullstack travaille sur toute les parties du système.

Git : Git est un logiciel de gestion de versions décentralisé.

Issue : Tâche à réaliser lors d’un sprint.

Refactorisation : réécriture d'un programme pour l’améliorer.

Sprint : Période de travail définie avec un certain nombre d'issues.

Bibliographie

EDCampus

Gitlab EDCampus

Fiche de suivi

Flyer

Poster

Pitch

[ Présentation finale]