Hackat'Web Hackat'Orga Hackat'Manage
Hackat'Orga
Contexte

Hacka't Orga est notre seconde application du projet Hackat'Innov. Elle est développée en Java avec le modèle DAO sous l'éditeur ItelliJ IDEA. La mission principale est de procéder au développement de la phase d'initialisation à un hackathon. On y retrouve l'acteur principal : l'organisateur.

Au même titre que la première application Hackat'Web, nous disposons d'une application de départ avec un modèle fourni. Nous utilisons également le même système de gestion de BDD PostgreSQL. L'application Hackat’Orga doit permettre de gérer les étapes du processus visant à configurer le hackathon : initialisation et planification à destination de l'organisateur du hackathon.

Ressources

Une nouvelle fois, nous disposions de la même documentation qui nous avait servie pour l'application Hackat'Web et Hackat'Manage. Parmi les ressources, on y trouvait des détails quant à la phase de planification d'un hackathon. Voir la documentation.

Cahier des charges
Users story

Pour ce second sprint, un nouveau cahier des charges nous était attribué et contenait les nouveaux scénarios utilisateurs avec un niveau de priorité et un état. Notre objectif dans un premier temps est d'analyser le besoin imposé par le prestataire informatique à travers ces fonctionnalités. Cette étape est nécessaire pour bien cerner la demande de chaque users story.

Users story
Organisation
Les grandes étapes

Nous avons suivi la même progression concernant l'organisation de début de sprint : mise en place de l'environnement de développement, création du projet sur Framagit et récupération du script Java donné par nos professeurs.

Mais cette fois-ci, nous avons pris davantage de temps en ce qui concerne l'analyse des users story. En effet, dans la rétrospective du sprint précédent, nous avons mentionné que nous devions être plus rigoureux dans l'organisation et qu'il était aussi important de ne pas partir directement dans le développement.

Pour cela, mon équipe et moi avons pris le temps de réfléchir à la priorisation des users story ainsi que les attributions à chaque membre. Nous avions également un autre détail à prendre en compte : l'utilisation du modèle DAO en Java. En effet, l'architecture restait assez nouvelle malgré le fait que nous l'ayons abordée un peu plus tôt en cours d'année.

De nouveau, nous appliquons la même habitude à chacune de nos séances à savoir : discuter entre nous des fonctionnalités en cours et des difficultés rencontrées de la séance précédente. Puis à chaque fin de séance, nous faisions un point sur notre avancée et prenions note des prochaines étapes pour le développement. Enfin, nous avons passé une petite épreuve orale à la fin de ce sprint afin de faire un compte rendu autour de la gestion de projet et la gestion d'équipe. Voir notre diaporama

Architecture
Modèles MVC et DAO

La solution est établie sur deux designs pattern : MVC et DAO. Nous avons vu le modèle MVC dans la première application Hacka't Web. Pour rappel, c'est un modèle qui permet de séparer la logique du code en trois parties distinctes : le Modèle pour l'accès aux données, la Vue pour l'affichage côté utilisateur et le Controller qui permet le traitement et la redirection de route dans l'application.

Puis nous avons le modèle DAO (Data Access Object) autrement dit l'objet d'accès aux données qui s'inspire du MVC. Ce pattern permet de séparer le modèle où sont situés les scripts SQL, de la base de données.

Ainsi, le modèle communique d'abord avec une interface DAO où sont listées un certain nombre de noms de méthodes. Puis, ces méthodes sont implémentées par un DAO qui cette fois-ci implémente l'interface. C'est ici que le code sera écrit et que l'échange avec la base de données se fera.

Schéma DAO
Continuité et sauvegarde
Avec Framagit et DBeaver

Voici une description des moyens établis concernant la sauvegarde du projet et le déroulement de sa continuité.

Versionning

Au cours du projet Hacka't Innov, nous utiliserons toujours Framagit pour le versionning de chacune de nos trois applications.

Base de données

Pour rappel, nous réutilisons ici la même base de données PostgreSQL. Voici un aperçu de la base de données en cours de développement après ajout de nouvelles tables. Nous avons décidé de mettre en place un héritage à partir de la classe utilisateur. Des modifications ont également été apportées à certaines tables pour correspondre aux nouveaux besoins du projet.

Diagramme de classe
Déploiement de l'application

De la même manière que la première application Hackat'Web, nous avons utilisé le logiciel Filezilla pour le déploiement d'Hackat'Orga.

Gestion de projet
Planification et suivie avec Clickup

Cette fois-ci, nous avons choisi d'utiliser l'outil de suivie de projet Clickup. Premièrement, nous avons fait ce choix car l'organisation ainsi que le suivi des tâches était plus compréhensible et intuitive pour l'équipe.

De plus, il y a la possibilité d'ajouter des items pour chaque users story telle que l'estimation du temps, l'ajout de commentaires ou encore les dates de début et d'échéance. Enfin, Clickup nous offre la possibilité d'avoir un diagramme de GANTT, ce qui est très pratique pour la visualisation du temps de développement des tâches.

Cependant, cela représentera quelques inconvénients notamment au niveau du diagramme de GANTT car la durée de réalisation des tâches n'est pas totalement fidèle à la réalité. L'estimmation est donnée en fonction du nombre de jours et non pas en fonction du nombre d'heures.

Vue d'ensemble
Détails d'une tâche
Diagramme de GANTT
Fonctionnalités applicative
Schéma UML des fonctionnalités de l'organisateur

Une nouvelle fois, nous avons réalisé un schéma UML comme nous l'avons fait pour Hackat'Web lors du premier Sprint. Voici les fonctionnalités que peut effectuer un organisateur quant à l'étape d'inscription d'un hackathon :

Fonctionnalités de l'organisateur
Visuel de l'application

Pour cette application, le visuel correspond à une interface graphique qui sera mise en place grâce au plugin JFormDesigner sous l'éditeur IntelliJ IDEA.

Page d'accueil d'un nouvel Hackathon
Formulaire Hackathon
Création d'un juré
Modification d'un juré
Ajout et suppression d'un juré
Ajout et suppression d'un animateur
Sprint Retrospective

Pour ce second sprint, nous avions des difficultés concernant l'adaptation de la base de données pour cette nouvelle application. De plus, le design pattern n'était pas évident à prendre en main et nous étions moins efficaces.

Nous avons donc pu faire un point en équipe sur le déroulement du sprint. Après avoir discuté, nous avons établi une seconde rétrospective pour laquelle nous tenterons d'en retirer les leçons et de s'améliorer lors du sprint précédant.

Cependant, nous nous sommes mieux organisé concernant l'attribution des tâches et nous avons pris davantage de temps à la réflexion.

Schéma retrospective
Les outils
Environnement de développement

IntelliJ

Java

DBeaver

PostgreSQL

Clickup

Framagit