|
Projet de développement 2015-2016
De $1
Licence 3 Informatique parcours MIAGE, semestre 6.
Responsable : Philippe Collet
Intervenants : Philippe Collet, Philippe Renevier
Volume : 12h de cours (4 x 3h), 14h de TD (7 x 2h d'encadrement + 2 à 3h en autonomie à chaque séance).
Objectif
Réalisation, en équipe d'un développement OO de taille conséquente à partir d'un cahier des charges et d'une architecture préétablis en Java
Evaluation
- Code livré : architecture, qualité et tests : 40 %
- Gestion de projet (ticket, git, organisation) : 25 %
- Soutenance : 20 %
- Avancement en TD : 15 %
Plate-forme de gestion de projet (Atlassian JIRA)
La plate-forme de gestion de projet est disponible à l'adresse https://atlas.i3s.unice.fr
- connexion sur http://atlas.i3s.unice.fr/crowd en suivant le guide : ATLAS-USR-Changersonmotdepasse.pdf (votre login est : l3ig5-LOGINUNIV, votre mot de passe doit être réinitialisé).
- lire la documentation ATLAS - ETUDIANT - Gérer son projet.pdf
En cas de problème de certificat avec votre client git (message d'erreur de type _error: server certificate verification failed. CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: none_), il vous faut désactiver le support SSL lors de vos connexions git (c'est hélàs un bug des clients git lorsqu'ils sont utilisés sur des systèmes Linux/Ubuntu ou Windows). Vous pouvez soit désactiver le support globalement :
git config --global http.sslVerify false git clone ...
ou le faire à chaque commande :
env GIT_SSL_NO_VERIFY=true git clone ...
Création d'un fichier .gitignore à la racine du projet : créer ce fichier avec au moins le pattern "*.class" sur une ligne, afin que git ignore les fichiers class compilées par Java lors des commits.
Calendrier
- Lundi 18 janvier : cours 1
- Lundi 25 janvier : cours 2
- Lundi 1er février : cours 3, publication du sujet, date limite de retour par mail des formations des équipes (4 étudiants max par équipe, équipes de 3 tolérées)
- Lundi 8 février : cours 4
- Lundi 22 février : TD 1, atelier et premier TD de suivi
- Lundi 29 février : TD 2
- Lundi 7 mars : TD 3
- Lundi 14 mars : TD 4
- Lundi 21 mars : TD 5
- Lundi 4 avril : TD 6
- Lundi 11 avril : TD 7, dernier TD de suivi
- Dimanche 17 avril, 23h59 : arrêt du développement (site de gestion du projet et des sources)
- Mardi 19 avril : soutenance
Livraison finale
La livraison finale doit contenir :
- code, tests et README disponibles sur le repository git
- le dernier commit de référence doit être taggé FINAL (voir ci-dessous)
- un fichier README.pdf doit expliqué brièvement l'état de votre projet, et surtout vos choix de conception (stratégies des robots, etc.)
- le fichier pom.xml qui permet de compiler, tester et d'exécuter(voir ci-dessous)
Gestion des tags en git
Pour tagger la tête de votre repository local avec un tag (nommé ESSAI ici) :
git tag ESSAI
git push origin ESSAI
Vous pouvez aussi exécuter "git push origin --tags" pour pusher tous les tags existants à la fois.
Si vous souhaitez déplacer le tag FINAL, vous pouvez d'abord l'effacer :
git tag -d ESSAI
git push origin :refs/tags/ESSAI
Puis retagger comme vu précédemment.
Pour information, je clonerai votre projet par une commande "git clone" classique, puis je récupérerai votre code par :
git checkout FINAL
Si vous n'êtes pas capable d'exécuter la dernière commande sur un autre clone de votre git, c'est que le tag est mal fait, ou pas pushé...
Exécution du projet avec maven (MISE A JOUR DU POM.XML LE 14 MARS)
Voici un fichier (à renommer pom.xml) à modifier pour le rendre compatible avec votre propre projet. Les grandes sections du fichier devraient rester inchangées :
- groupId : mettre votre nom de projet (la clé JIRA par exemple)
- project.build.sourceEncoding : placé à UTF-8, à modifier sur vous utilisez ISO-8859-1 par exemple
- compile.source / compiler.target : placé à 1.8, à modifier si vous utilisez 1.7
- sourceDirectory / testSourceDirectory : redéfinis à src et test pour être compatibles directement avec un projet Eclipse. Attention, les valeurs par défaut de maven sont src/main/java pour les sources, etc.
- mainClass : le nom complet de votre classe principale (complet signifie avec le nom des packages, mais aucun suffixe, ni .class, ni .java)
ATTENTION, LE FICHIER POM.XML ET LE RESTE DU PROJET DOIVENT ETRE A LA RACINE DU DEPOT, PAS DANS UN SOUS-REPERTOIRE QUELCONQUE.
Résultat attendu pour l'exécution :
- aucune interaction sur la ligne de commande (nous ne devons rien avoir à saisir)
- affichage sur la sortie standard de l'exécution de :
- 1000 parties de votre meilleur bot contre le second
- 1000 parties de votre meilleur bot contre lui-même
- L'affichage doit comprendre le nombre et pourcentage de parties gagnées/perdues/nulles, et le score moyen de chaque bot (pas tout le log des 1000 parties !)
Le reste des informations sur maven sera fourni par la suite...
Pour information, après avoir récupéré la bonne version du projet grâce au tag FINAL, j'exécuterai :
- mvn clean package (attention, tous les tests doivent passés, si certains sont défectueux, ajoutez leur un @Ignore)
- mvn exec:java (les paramètres devront être gérés dans le pom.xml, comme indiqué ci-dessus)
Script de test de la livraison
Le script utilisé pour tester votre livraison sera équivalent aux commandes suivantes (en remplaçant ESSAI par FINAL, les noms de login et repo, etc.) :
git clone https://https://LOGIN@atlas.i3s.unice.fr/stash/scm/REPOID/private.git repertoireEquipe
cd repertoireEquipe
git checkout ESSAI
mvn clean package
mvn exec:java
Vous pouvez essayer ces commandes sur un répertoire séparé pour vérifier la configuration de votre repository, la pose du tag git et la compilation/exécution maven.
Sujet
Il s'agit de réaliser une version électronique du jeu "L'age de Pierre"
Il faut pour cela réaliser les fonctionnalités suivantes :
- représentation de jeu (représentation des plateaux village, ressources, ouvriers, tuiles et cartes)
- moteur de jeu (début de la partie, validité des coups, gestion des "mains" des 2 joueurs, règles spécifiques, calcul des points)
- robots de jeu, en partant d'une version très simple à des stratégies de jeu plus sophistiquées
- simulation de parties entre robots (des parties à 2 robots suffisent), comptage des points, des victoires et classement entre vos robots
- visualisation de l'état du jeu (tout au long de la partie). Cette visualisation doit être au minimum textuelle. Une version graphique N'EST PAS demandé.
Attention, il NE s'agit PAS non plus de réaliser une version interactive de ce jeu.
Il est important de démarrer le jeu par un moteur très simple :
- plateau simple
- 1 toute petite partie des règles (un ouvrier, une resource)
- 1 robot avec une IA aléatoire (peut être même pas de coup valide)
Puis avancer en trouvant des ensemble de fonctionnalités cohérentes :
- 2 robots
- A chaque nouvel élément du jeu modélisé, le moteur et l'IA doivent suivre
- ...
Equipes
- LTMPDVQUIA : Florian MULLER, Frederic TESTANIERE, Michaël GIANFALDONE, Estelle ROSTAN (4)
-
LTMPDVQUIB : VALVERDE Thomas, FERRERO Karl, DEI Léonard, BARNINI Nicholas (4) - LTMPDVQUIC : Alexis Fourrier, Nicolas Kircun, Kevin Bouzidi, Maxime Pavard (4)
- LTMPDVQUID : Caroline GARCIA, Julien HUBERT, Clément JOLLIET, Romain TERI (4)
- LTMPDVQUIE : Lerda Guillaume, Oualid Perle, Melay Cécile, Fagnola Thibaut (4)
- LTMPDVQUIF : Laeticia Pierre, Athina Schmitt, Pierre Tuaillon, Alexandre Milanesio (4)
- LTMPDVQUIG : ETEVENARD Guillaume, HUGUET Antoine, MIRALLES Guillaume, SARAMAGO Alexandre (4)
- LTMPDVQUIH : Delieux Alexis, Ezzaher Zayneb, Moncade Nathan, Pinna Denis (4)
- LTMPDVQUII : Nadia Magharbi, Cassandra-Tiffany Villeronce, Jaouad Essika, Brahim Ben Allel (4)
- LTMPDVQUIJ : Mamadou THIAW, Nordine BOUCHTI, Thierno NDIAYE, Thierno DIALLO (4)
- LTMPDVQUIK : IBEGHOUCHENE Nadir, Hamza Hbiyel (2)
- LTMPDVQUIL : Isaline Deschanels, Jason Maurisset, Maxime Fontanili, Christian Pagh-Birk (4)
- LTMPDVQUIM : Manon Ingrassia et Kévin Schieb (2)
- LTMPDVQUIN : BOULMA Karima, NITEKA Aimé(2)
- LTMPDVQUIO : TRAORE Aichatou, Tanouti Mohammed, Alaoui Mohammed, Azelarab Haouech (4)
-
LTMPDVQUIP : TRAORE Doumbe (salarié), Mohamed EL MANSURI (2) -
LTMPDVQUIQ : Lydia Dekkiche (1) -
LTMPDVQUIR : DIOP Fatou, NDIAYE Maguette (2)
Soutenance
Chaque soutenance dure :
- 20 minutes pour les personnes seules (8 minutes de présentation),
- 25 minutes pour les équipes de 2 (10 minutes de présentation)
- 30 minutes pour les équipes de 3 ou 4 (12 minutes de présentation),
La présentation est suivie d'un période de questions. Une démo peut être demandée (il vous faut préparer un scénario de démo ou une trace d'exécution d'une partie type entre vos meilleurs robots). Chaque membre du projet doit être capable de répondre aux questions sur les choix de conception généraux, les parties qu'il a développées, etc.
Le contenu de la présentation est imposée (1 transparent par points suivants, pas plus, pas moins). Le temps de présentation est chronométrée, aucun dépassement ne sera accepté. Chaque présentation doit faire intervenir tous les membres de l'équipe de façon équivalente.
- Transparent 1 : Titre, membre de l'équipe, etc
- Transparent 2 : Fonctionnalités réalisées : bilan à gros grain de ce qui a été fait
- Transparent 3 : Grands Choix de conception, organisation du code
- Transparent 4 : Organisation des tests : comment sont testés les éléments du jeu, comment est testée l'IA, etc.
- Transparent 5 : Points forts et points faibles de votre implémentation (parties bien conçues et bien testées vs parties moins stables ou qui ont besoin d'amélioration)
- Transparent 6 : Gestion du projet, problèmes rencontrés et différence entre jalons prévus et jalons effectifs
Ordre de passage
- 8h15: LTMPDVQUII : Nadia Magharbi, Cassandra-Tiffany Villeronce, Jaouad Essika, Brahim Ben Allel (4)
- 8h45: LTMPDVQUID : Caroline GARCIA, Julien HUBERT, Clément JOLLIET, Romain TERI (4)
- 9h15: LTMPDVQUIH : Delieux Alexis, Ezzaher Zayneb, Moncade Nathan, Pinna Denis (4)
- 9h45: LTMPDVQUIK : IBEGHOUCHENE Nadir, Hamza Hbiyel (2)
- 10h10: PAUSE
- 10h25: LTMPDVQUIN : BOULMA Karima, NITEKA Aimé(2)
- 10h50: LTMPDVQUIM : Manon Ingrassia et Kévin Schieb (2)
- 11h15: LTMPDVQUIF : Laeticia Pierre, Athina Schmitt, Pierre Tuaillon, Alexandre Milanesio (4)
- 11h45: LTMPDVQUIC : Alexis Fourrier, Nicolas Kircun, Kevin Bouzidi, Maxime Pavard (4)
- 12h15: LTMPDVQUIR : DIOP Fatou, NDIAYE Maguette (2)
- 12h40: PAUSE
- 13h45: LTMPDVQUIL : Isaline Deschanels, Jason Maurisset, Maxime Fontanili, Christian Pagh-Birk (4)
- 14h15: LTMPDVQUIG : ETEVENARD Guillaume, HUGUET Antoine, MIRALLES Guillaume, SARAMAGO Alexandre (4)
- 14h45: LTMPDVQUIE : Lerda Guillaume, Oualid Perle, Melay Cécile, Fagnola Thibaut (4)
- 15h15: LTMPDVQUIB : VALVERDE Thomas, FERRERO Karl, DEI Léonard, BARNINI Nicholas (4)
- 15h45: PAUSE
- 16h00: LTMPDVQUIP : TRAORE Doumbe (salarié), Mohamed EL MANSURI (2)
- 16h25: LTMPDVQUIA : Florian MULLER, Frederic TESTANIERE, Michaël GIANFALDONE, Estelle ROSTAN (4)
- 16h55: LTMPDVQUIO : TRAORE Aichatou, Tanouti Mohammed, Alaoui Mohammed, Azelarab Haouech (4)
- 17h25: LTMPDVQUIJ : Mamadou THIAW, Nordine BOUCHTI, Thierno NDIAYE, Thierno DIALLO (4)
- 17h55: LTMPDVQUIQ : Lydia Dekkiche (1)
|