Contexte & description du projet
Le projet de ma première année en BUT Informatique par excellence : pendant 3 semaines au mois de juin 2025, par groupes de cinq étudiants, nous avons développé une réplique du jeu de société "Qui Est-ce ?" en Kotlin. Il s'agissait de notre Situation d'Apprentissage et d'Évaluation (SAE) "Développement d'une application", visant (d'après le programme national) à développer une application simple avec interface graphique. Analyse d'une librairie et de sa documentation, conception avec maquette et diagrammes UML, implémentation en MVC, tests, multiples livrables, tout y était.
Méthodologie et outils
Dès le début, nous nous sommes divisés les tâches pour optimiser notre efficacité : une partie du groupe concevait une maquette de l'interface, l'autre se chargeait de l'analyse de la librairie fournie (pour interagir avec le serveur de l'établissement et donc jouer en réseau) puis la conception de diagrammes de classes UML.
Principe du MVC
Ces phases préliminaires établies et validées par tous, on a continué en deux groupes distincts. D'un côté, développer l'interface graphique (Vue du MVC) et les contrôleurs (Contrôleur du MVC). De l'autre, implémenter les classes et méthodes qui utiliseront le contenu de la librairie (Modèle du MVC) ainsi que les tester en localhost.
Pour finir, on a fusionné les deux parties pour obtenir une application fonctionnelle, elle aussi validée par une série de tests.
Pour faire tout cela, on s'est servi en premier lieu de GitLab pour mettre en commun nos avancées et gérer le versionnage du code. La maquette a été réalisée sur Canva, les diagrammes sur Draw.io, et le code en Kotlin dans IntelliJ IDEA. Les frameworks rajoutés comprenaient JavaFX pour l'interface graphique, JUnit et MockK pour les tests.
Contributions personnelles
Une des diapos de la maquette
Maquettage du client
Ma première action a été de réaliser une maquette de l'interface utilisateur sur Canva, car je souhaitais proposer ma vision. Accompagné d'un de mes collègues, nous avons donc défini le design et amélioré mes idées initiales (notamment sur ce qui vient avant l'entrée dans une partie) puis soumis cette maquette au reste du groupe, lequel a validé. Ainsi, nous avions une représentation visuelle pour commencer le développement.
Vues et contrôleurs
Immédiatement après la phase de conception, j'ai pris en charge le développement de l'interface graphique conformément à la maquette définie, ainsi que la création des contrôleurs pour pour passer d'une étape à l'autre de l'interface et gérer les interactions utilisateur. Je sauvegardais cela sur ma branche dédiée du projet GitLab, puis lorsque tout fut prêt je l'ai intégrée à la branche principale. Afin d'aider mes collègues à intégrer le code pour faire le lien entre l'interface et le serveur, j'ai documenté mon travail et leur ai expliqué le fonctionnement de la vue et des contrôleurs, puis je suis resté avec eux pour modifier ce qu'ils pointaient du doigt (notamment un bouton pour rafraîchir la liste des parties existantes, rendre responsive l'application, etc.).
Tests et rapports
Deux semaines après le début du projet, j'ai commencé avec les autres à rédiger des tests unitaires grâce à JUnit afin d'assurer la fiabilité de notre application. Ces tests ont permis de détecter et corriger plusieurs bugs avant de rendre le code final. Parallèlement, j'ai rédigé un rapport de tests présentant quelques conceptions de tests unitaires par approche fonctionnelle (analyse partitionnelle, plus précisément), de l'analyse de testabilité, implémentation de tests unitaires et diagnostics (en même temps, c'est moi qui ait - involontairement - donné l'idée à un enseignant d'ajouter ce rapport aux livrables).
Exemples de tests unitaires dans IntelliJ IDEA
Exemple d'analyse partitionnelle
Résultats et livrables
Pour un projet de trois semaines, je suis plus que satisfait du résultat : une application fonctionnelle et esthétique pour jouer au "Qui Est-ce ?" aussi bien en local qu'en réseau (avec un serveur distant mis en place dans l'établissement). Grâce à notre travail commun, nous ne trouvons plus aucun bug pendant nos parties et près de 200 tests unitaires vérifient l'intégrité du code. À titre personnel, j'ai obtenu une note de 15/20 pour ma contribution individuelle au projet, soit un peu moins de 2 points derrière la meilleure note de la promotion (16.76).
Les livrables rendus comprenaient le code source complet et les tests sur GitLab, la maquette de l'interface, les diagrammes de classes UML et le rapport de tests. Nous sommes aussi passés par une revue technique du projet (démonstration, revue de code, etc.) et une revue de tests (évaluant la pertinence et la qualité des cas de tests). N'ayant aucun droit sur les librairies utilisées, je ne mettrai à disposition du code source que le dossier src, mais les autres livrables sont bien compris en téléchargement ici.
Compétences développées
Pour prendre dans l'ordre, ce projet a été une première expérience significative en conception d'interface utilisateur (UI) et en ergonomie. J'ai développé de bonnes compétences en développement Kotlin et JavaFX ainsi qu'en conception et implémentation de tests unitaires, l'approche fonctionnelle étant une technique que j'approuve sincèrement. Un peu de rédaction de documentation technique aussi, il est vrai. En termes de compétences transversales, je relèverai d'importantes notions de travail en équipe et de gestion de projet, essentielles pour mener à bien ce projet collectif où nous avions constamment besoin de l'avis des autres et de se synchroniser.
Bilan
En conclusion, ce projet fut mon favori parmi ceux réalisés durant mon deuxième semestre en BUT Informatique. Pour cause, je le trouve concret et complet : analyse, conception, développement, tests et documentation, tout y est, comme avec le Projet SQL. Le résultat final est partfaitement opérationnel, agréable à utiliser et je suis fier d'y jouer. Qui plus est, réaliser cela dans une équipe plus grande qu'à l'accoutumée et en un cours laps de temps était un challenge stimulant et c'est avec plaisir que je m'y suis consacré durant ces trois dernières semaines de cours. En définitive, c'est pour acquérir les compétences nécessaires à des projets comme celui-ci que je suis venu dans cette formation, ce que je ne regrette pas.