TP 4
Intégration continue, joueurs dynamiques et visibilité du projet.
Méta
- Date limite : 19 avril, 23 h 59
- Remise : GitLab
- Équipes : Équipes de trois étudiants, mêmes équipes que pour le TP précédent.
- Remise en retard : Impossible. Vous serez évalués selon le contenu présent sur votre branche master/main à la date limite.
Il est de votre responsabilité de remettre votre code à temps. N’attendez pas à la dernière minute, GitLab pourrait échouer.
Objectifs d’apprentissage
Dans ce dernier TP, vous transformerez votre projet Skyjo en une application présentable que vous pourrez ajouter à
votre CV ou à votre portfolio.
Cette dernière étape est plus courte que les TPs précédents, mais elle vous aidera à démontrer votre polyvalence avec
des outils et des pratiques avancées en génie logiciel. L’objectif est d’utiliser l’intégration continue et des
techniques de documentation afin d’amener votre projet à un état soigné - de cette façon, les personnes intéressées à
vous embaucher pourront facilement être convaincues de vos compétences.
Plus concrètement, dans ce dernier TP, vous allez…
-
Compléter votre code fonctionnel avec une pipeline d’intégration continue (CI).
-
Votre pipeline CI doit réexécuter toutes les vérifications de qualité de code Maven introduites précédemment.
- Votre pipeline CI doit prendre en charge des publications continues de la documentation sur une page Web dédiée ( HTML).
-
Votre pipeline CI doit prendre en charge des publications continues des versions binaires sur une page de téléchargement (JAR).
-
Prendre en charge des parties dynamiques
-
noms de joueurs arbitraires
- nombre (valide) arbitraire de joueurs
- remplacement automatique de noms de joueurs spécifiques par des joueurs robots
Aperçu étape par étape
- Corrections : Vérifiez votre remise précédente.
- Utilisez la rétroaction reçue sur GitLab (cela peut encore prendre quelques jours, vous pouvez déjà relancer vos tests).
- Corrigez tout problème, en particulier les tests en échec. Utilisez le débogueur.
-
Ajouter une page de documentation du projet :
- Ajoutez un
README.mdservant de point d’entrée lisible pour un humain. - Assurez-vous qu’il contient des liens vers la documentation, le téléchargement binaire et qu’il explique comment utiliser votre logiciel.
- Ajoutez un
-
Mettre en place une pipeline CI utile :
- Configurez la réexécution automatique de toutes les vérifications de code Maven.
- Configurez des publications continues de la documentation.
- Configurez des publications continues des fichiers
jar.
-
Modifiez votre lanceur pour permettre des parties arbitraires.
- Prenez en charge des noms et des quantités de joueurs dynamiques.
- Prenez en charge des joueurs robots (au moins Keksli et MadMax).
Instructions détaillées
Vérifiez votre remise précédente
- Mettez à jour vers les interfaces et les tests finaux :
- Interfaces :
- Tests :
- Assurez-vous que tous les tests réussissent, y compris les nouveaux scénarios de fin de partie.
Documentation
- La première chose que les gens voient en accédant à votre projet est le
README.md. - Une bonne page d’accueil doit présenter l’intérêt et l’utilisation de votre application, sans submerger l’utilisateur.
- Ajoutez ou modifiez le README.md existant et créez au moins les sections suivantes :
- Nom du projet
- Contexte du projet
- Lien vers la documentation (voir section CI)
- Lien vers le téléchargement du
JAR - Instructions d’exécution, c.-à-d. comment lancer votre
JAR - Contributeurs
CI
- La CI est essentielle pour assurer une qualité de code constante. Vous configurerez votre pipeline CI pour réexécuter toutes les vérifications de qualité déjà imposées par Maven.
- Ajoutez un profil de build Maven personnalisé (non par défaut) nommé
nomutationqui ignore les tests de mutation. Le pipeline CI doit utiliser exclusivement ce profil afin d’accélérer son exécution. - Un bon logiciel possède une documentation accessible. Vous activerez une tâche
pagespour héberger le javadoc à jour de votre code sur une page Web dédiée, liée depuis leREADME.md. - Un bon logiciel prend en charge des publications continues. Vous réutiliserez la tâche
pagespour également héberger le fichierJARfonctionnel de votre application sur une URL dédiée, liée depuis leREADME.md.
Lanceur
- Jusqu’à présent, le code du lanceur démarrait toujours la même partie, avec les mêmes joueurs.
- Modifiez votre code pour accepter les noms des joueurs comme arguments, par exemple :
java -jar Skyjo.jar Max Ryan Hafedh. (2 à 4 joueurs doivent être pris en charge) - Modifiez votre code pour substituer automatiquement les joueurs robots, c.-à-d. si un nom de joueur est
KeksliouMadMax, le joueur doit être remplacé par une instance d’IA correspondante. - Si vous avez implémenté votre propre IA / joueur robot, vous pouvez réserver des mots-clés supplémentaires pour votre IA.
Barème de correction
| Critère | Pourcentage max |
|---|---|
| Tous les tests réussissent | 15 % |
Toutes les métriques de qualité de code précédentes respectées dans le pom (mutations, couverture, checkstyle, complexité, javadoc) |
25 % |
| CI | 25 % |
| Configuration dynamique des parties via des arguments à l’exécution | 15 % |
| README + liens fonctionnels vers le javadoc et le JAR | 10 % |
Recommandation
Simulez le processus de correction avant la remise : reclonez votre propre projet et exécutez mvn clean verify, puis assurez-vous que votre projet se construit sans avertissements ni erreurs.
Refus automatique
Voici une liste de vérification des éléments à éviter absolument. Si au moins un élément s’applique, votre remise perdra tous les points liés au code. D’autres critères de refus peuvent s’appliquer.
- Solution non fournie dans le répertoire GitLab dédié, ou non présente sur la branche
main. - Solution répartie sur plusieurs branches.
- Le dépôt contient un fichier zip.
- Le code ne compile pas avec la commande Maven fournie.
- Le fichier
pom.xmlcontient des plugins ou dépendances non autorisés. - Les classes fournies n’implémentent pas les interfaces fournies.
- L’implémentation des classes de tests abstraites n’est pas fournie dans le package de test.
- La structure du projet a été modifiée / n’est pas respectée.
- Le programme tente de communiquer sur le réseau à l’exécution.
- Le programme se bloque à l’exécution.
DIVERS
Cette section fournit des ressources supplémentaires pour la réalisation technique de votre TP.
Parties d’exemple
- Le TP3 ne contenait pas de tests d’intégration allant jusqu’à la fin de partie.
- Vous trouverez ci-dessous les fichiers de journal pour trois scénarios de test supplémentaires atteignant la fin de partie.
Fichiers
| Itérations | Joueurs | Fichier de traces |
|---|---|---|
| 61 | Keksli VS Keksli | keksliColEliminationEnd.txt |
| 82 | Keksli VS Keksli VS MadMax | keksliVsKeksliVsMadMaxEnd.txt |
| 144 | MadMax VS MadMax | madMaxVsMadMaxR43End.txt |
| 445 | MadMax VS MadMax VS MadMax VS MadMax | maxMaxQuadrupelR51End.txt |