Dans le thème de ma seconde année d'étude en BUT Informatique (systèmes et réseaux), il nous a été demandé, à moi et mon équipe, de concevoir une application d'enchères à plis fermés, communiquant avec d'autres entités sur le réseau via des sockets sécurisés.
La préparation
Afin de nous initier aux méthodes agiles et au processus Scrum, nous avons tout d'abord dû déterminer les besoins fonctionnels et non fonctionnels du produit directement auprès du Client, et les transformer en User Stories. Une fois ces éléments récoltés, nous avions dû les pondérer afin de définir un ordre de priorité, et ainsi façonner chacune des quatre itérations qui nous ont été donnés pour concrétiser ce projet.
L'application demandée devait être développée en Java, language que nous avions appris en première année. Cependant, les thématiques que le projet abordait (à savoir la communication et la sécurisation entre sockets, le chiffrement et l'authentification) nous étaient totalement inconnues.
Le déroulement des itérations (sprint)
Un sprint se déroule de cette manière : Tout d'abord, les professeurs nous communiquent une date de début et de fin. Pendant ce temps, nous avons la charge de remplir toutes les User Stories que nous avons choisi d'effectuer pendant cette itération.
L'outil d'organisation et de suivi que nous utilisons est GitLab, outil d'hébergement de code et de gestion très reconnu par les entreprises.
Une fois le sprint terminé, nous devons présenter l'avancement auprès du Client, qui approuvera ou non le travail effectué et pourra nous réorienter vers ce qu'il demande, ou affiner ses exigences si cela lui semble nécessaire.
La communication au sein du groupe
Afin d'optimiser les efforts et de rester à jour sur ce qui est fait et en train d'être fait, et de manière à maintenir une bonne motivation au sein du groupe, notre Scrum Master a organisé des Daily Mettings à intervalles réguliers (environ 1 fois par semaine). Pendant ces périodes, nous faisions le point sur ce qui avait été fait, qui voulait se charger de quoi, les personnes qui avaient besoin d'aide pour le développement de certaines fonctionnalités, etc.
En-dehors des Daily Meetings, nous communiquions via un serveur Discord qui, en plus de nous fournir un endroit pour discuter, nous tenait à jour sur ce qu'il se passait sur GitLab et sur les prochaines réunions prévues, grâce à des intégrations.
Ma responsabilité
::image-align
Pendant ce projet, j'ai occupé le rôle de développeur actif (bien que j'ai pu quelques fois incarner le rôle du Product Owner pour la réorganisation des User Stories sur le GitLab).
Je me suis chargé de programmer les fondements de l'application, comme la communication entre les terminaux qui a commencé par des fichiers avant de passer aux Sockets réseau sécurisés.
J'ai grandement contribué à la structure opérationnelle et au respect des principes SOLID du code, en proposant des diagrammes de classes de conception et en codant le squelette du code avant l'intervention des autres membres de l'équipe.
::
Compétences acquises pendant ce projet
Au cours de ce projet, j'ai pu apprendre à m'organiser au sein d'une équipe, répartir les responsabilités, mettre en application concrète les principes abordés pendant les cours de développement (comme les principes SOLID et les Design Patterns), et surtout avoir une vision réaliste de ce qu'il est possible ou non de faire dans un temps imparti.