Skip to main content

Checklist activité intégrative

Contraintes

Cette checklist est pour l'itération 1 mais la seule chose qui change au itérations suivantes sont les AI à valider.

Préalablegénérales

Tous ces éléments sont à observer pour que le travail soit évaluable

  • UneLa archivestructure .zipdes estfichiers déposécorresponds à celle montrée sur Moodle.
  •  L'archive comporte un projet eclipse mentionnantdans le nom et le prénom (une infraction de nommage tolérée sur les 3 itérations)PDF
  • Le projet respecteutilise la structureversion demandée11 (présencede des répertoires srcJava et tests,intègre fichiersl'interface sourcesgraphique dansSwing
  • les
  • bonsLe paquetages.projet -0,25est compatible avec la version d'Eclipse de référence (voir ressources informatiques sur la note finale par fichier mal placé)Learn)
  • Les versionstests unitaires sont effectués à l'aide de Java, Junit et Eclipse sont conformes à celles demandées (une infraction tolérée sur les 3 itérations)JUnit5
  • EclipseLe neprojet mentionneutilise pasle plug-in PMD avec le ruleset donné sur Learn

Acquis d'apprentissages

  •  Respect des principes de problèmela deprogrammation compilationorientée (sauf problèmes de liaison au JDK, à JUnit 5)objet
  • Les comportements du programme sont testé à l'aide de tests unitaires
  •  Le programme est bien documenté à l'aide de la JavaDoc (et calcul de la CTT si demandée)
  •  Les utilisations des interfaces de collections et de ses implémentations sont justifiées

Itération 1

Fonctionalités

AI-1:1 : Créer une partie

En tant que joueur, je souhaite démarrer une nouvelle partie afin de l’afficher à l’écran

  •  L’application démarre en affichant un menu principal composé de deux items : « Nouvelle partie » et « Quitter »
  • L’activation de l’item « Nouvelle partie » débute la création d’une partie.
  •  La création d’une partie commence par le chargement de la carte depuis le fichier resources/maps/map-sample.txt. Nous vous fournissons à cette fin la classe treasurequest.io.CharArrayFileReader.
  •  Une fois la carte chargée, l’application y place des trésors sur les cases creusables. Une case est creusable si elle n’est pas de type Eau.
  •  Le nombre de trésors à placer correspond à 10% du nombre de cases creusables, avec au moins 1 trésor à trouver.
  •  La valeur d’un trésor est un nombre aléatoire allant de 10 à 20 pièces.
  •  Toutes les cases sont non-creusées.
  •  Une case active est désignée. Elle correspond à une case du centre de la carte.
  •  Le joueur possède une bourse correspondant à 2 fois le nombre de trésors. Cette bourse est exprimée en pièces (s’il y 20 trésors à placer, la bourse de départ du joueur sera de 40 pièces).
Tests d'intégration
  •  Quand je lance l’application, celle-ci me présente le menu principal composé de deux items « Nouvelle partie » et « Quitter »
  •  Quand je sélectionne l’item « Quitter », l’application termine son exécution.
  •  Quand je sélectionne l’item « Nouvelle partie », l’application change d’écran

AI-2:2 : Voir une partie

En tant que joueur, je souhaite voir l’état d’une partie afin de décider des actions à entreprendre

  •  Une seconde vue présente l’état de la partie.
  • Une carte montre les cases. En début de partie, aucune case n’est creusée.
  •  La case active de départ est au « centre » de la carte.
  •  Un panneau affiche la bourse du joueur, le nombre de trésors à trouver et le cout à payer pour creuser la case active.
  •  Creuser une case Sable coute 1 pièce. Le cout des autres types de cases est déduit de cette valeur.
Tests d’acceptation

Important : pour les tests d’acceptation, nous utiliserons des cartes autres que celles fournies.

  •  Quand je lance une nouvelle partie, l’application me présente la carte donnée dans l’exemple.
  •  Quand je lance une nouvelle partie, la case active est celle au « centre » de la carte
  •  Quand je lance une nouvelle partie, l’application me dit qu’il y a XX trésors à trouver, que le joueur à une bourse de 2*XX
  •  Quand je lance une nouvelle partie, l’application m’affiche le cout correct de la case active

AI-3 : Revenir au menu principal

En

Acquistant 1que :joueur, Programmerje despeux énoncésabandonner deune conceptionpartie et revenir au menu principal, afin d’en Javarelancer selonune les principes de la POO

Seuil de réussite (tous sont à valider pour obtenir l'acquis)nouvelle.

  • [Prog.Appuyer Procedurale]sur PMDla relèvetouche au« plusEsc 2» méthodesquand tropune longuespartie et/ouest tropen complexescours permet de revenir à l’écran principal.
  • [Cohésion] PMD relève au plus 2 classes comportant 5 attributs ou plus.
  •  [Cohésion] PMD relève au plus 1 classe divine ouDemander une classenouvelle partie relance la création d’une nouvelle partie. En particulier, le rechargement de données
  •  [Encapsulation] PMD relève au plus 2 attributs d'accès autres que private
  •  [Encapsulation] Au moins 2 méthodes ou constructeurs respectent le principe de copies défensives pour les collections.
  •  [Masquage] Les classes métiers respectent la loi de Déméter (2 infractions tolérées)
  •  [RDD] La plupart des types du domaine correspondent aux candidats identifiés pendant l'étape de conception.
  •  [Polymorphisme] Les paramètres des constructeurs des superviseurs sont des types abstraits (interfaces ou classe abstraite)
  •  [Polymorphisme] PMD ne lève pas d'alerte LooseCoupling
  •  [Architecture] Les tests ArchUnit ne révèlent pas de problème d'architecturecarte.

Acquis

Tests 2 : Valider les comportements des objets programmés par des tests unitaires

Seuil de réussite (tous sont à valider pour obtenir l'acquis)

d’acceptation
  • Chaque classe du domaine est validée parSoit une classepartie lancée avec une case creusée, quand je reviens au menu principal et que je relance une nouvelle partie, le jeu revient à son état de test. Les classes de test sont finis dans le même package (mais dans le répertoire tests).part.
  • L'ensembleSoit desune classespartie delancée, testquand je change le fichier à charger et que je reviens au menu principal, alors l’application présente la carte du domainenouveau couvre au moins 90% des classes du domaine.
  •  Tous les tests unitaires des classes du domaine réussissent. (1 test en échec toléré)fichier

Acquis 3 : Documenter son code

Seuil

Phase de réussiteconception (touset sontproblèmes à validerrésoudre

pour

Diagramme obtenirde l'acquis)

conception

générale
  • Les typesCandidats et les méthodes publics sont documentéResponsabilités par de la javadoc inspirée par lesont énoncés (cf. PMD, 5 fautes tolérées)identifiées
  • Les précartes ouCRC postconditionset demandéesles figurentliens entre elles ont été faites
  •  Le diagramme de séquence/collaboration a été créé
  •  Le diagramme de classe a été fait

La classe de fabrique (Factory)

  •  Une classe de fabrique (Factory) est créée dans le package domains comme les autres classes et sert à synchroniser le jeu sur les différents superviseurs
  •  La classe de fabrique est passée aux superviseurs au travers d'une interface
  •  Les superviseurs se synchronise avec la javadoc,classe de fabrique dans l’en-têles méthodes onEnteret onLeave
  •  La classe de fabrique est insanciée dans Programet est passée au constructeur des superviseurs concernés

La représentation de la carte de cases

  •  Pas de tableau 2D pour preprésenter l'association des coordonnées aux cases et choisir la collection appropriée pour mémoriser la carte et les cases

Questions supplémentaires d'algo et de POO

Questions algorithmiques

  •  Ecrire dans l'entête de la méthode PlayGameSuperviser.onEnter,PlayGameSupervisor.onEnterles post-conditions les classes Player, CaseMap et les réponsesCase concernentde lesla 3carte classesdoivent Player,respecter CaseMapaprès etla Casecréation etde sontla correctes.partie pour pouvoir commencer à creuser/jouer.
  • La CTT demandée est correctement évaluéeIndiquer dans lal'entête JavadocJavaDoc de la classe TreasureQuestGameFactoryCaseMap l'interface de collection a été utliisée pour représenter la carte et justifier son choix en expliquant les différentes opérations à y effectuer
  •  Indiquer dans cette même JavaDoc quelle implémentation de la collection a été utilisée pour représenter la carte et justifier son choix en déterminant la CTT des principales opérations utilisées dans l'itération 1
  •  Indiquer la CTT du placement des trésors sur les cases creusables dans la javadoc en entête de CaseMap (Pour répondre à cette question, examinez la partie de votre code concernée, et identifiez les boucles, les imbrications, mais aussi les collections utilisées et leurs opérations ou les appels de sous-méthodes ou de méthodes d’autres objets. Quand vous répondez, n’oubliez pas d’indiquer à quoi correspondent vos libellés N,M, etc)
  •  Les Superviseurs collabore avec la fabrique (Factory) de Game au travers d'une interface

Acquis

Questions 4 : Justifier le choix d'une structure de données particulière

Seuil de réussite (tous sont à valider pour obtenir l'acquis)

POO
  • Les choixclasses sont dans treasurequest.domains et n'ont pas de typelien avec les vues (tout ce qui pourrait être en dehors de collectiondomains)
  •  L'encapsulation (attributs private) et les copies défencives sont correctementbien documentéseffectuées sur toutes les classes du domains
  •  Ecrire des méthodes courtes et peu complexes (et tenter de respecter la règle de Demeter)
  •  Ecrire des classes timides (c'est à dire qui font le boulot et qui ne nécessite pas de tout le temps leur demander des choses depuis d'autres classes)
  •  Bon usage du polymorphisme
  •  Bonne utilisation des interfaces
  •  Aucune alerte PMD
  •  Tests unitaires JUnit5 dans le codedossier pourtests lesqui casesdonne un coverage d'au moins 90% sur chaque classe du terraindomains (pour un degré de jeu,maitrise danssupplémentaire la javadoccoverage de la classe CaseMap.
  •  Les choix d'implémentation sont correctement documentés dans le code pour les cases du terrain100% de jeu,ces dans la javadoc de la classe CaseMap.classes)

Degré de maitrise

Vérifiés SI tous les critères de seuil de réussite ont été observés pour affiner la cote

  •  PMD ne rélève aucun problème de méthode trop complexe et/ou trop longue
  •  Plus de 2 méthodes ou constructeurs appliquent le principes de copies défensives sur les collections
  •  Au moins 2 constructeurs ou méthode de fabrique valident leurs paramètres.
  •  PMD ne relève aucun problème de type data class ou god object
  •  Les méthodes ne faisant pas partie du diagramme de classe ou des diagrammes de collaboration sont private (voire protected)
  •  Le paquetage domain est couvert à 100% par les classes de tests du même package.
  •  La documentation de plusieurs méthodes fait état de précondition et de postcondition correctes
  •  Les collections sont utilisées sans réinventer la roue (pas de reprogrammation de méthodes existantes, ou de parcours séquentiel quand l'accès direct est prévu par exemple)