Checklist activité intégrative
Préalable
Tous ces éléments sont à observer pour que le travail soit évaluable
- Une archive .zip est déposée sur Moodle.
 - L'archive comporte un projet eclipse mentionnant le nom et le prénom (une infraction de nommage tolérée sur les 3 itérations)
 - Le projet respecte la structure demandée (présence des répertoires src et tests, fichiers sources dans les bons paquetages. -0,25 sur la note finale par fichier mal placé)
 - Les versions de Java, Junit et Eclipse sont conformes à celles demandées (une infraction tolérée sur les 3 itérations)
 - Eclipse ne mentionne pas de problème de compilation (sauf problèmes de liaison au JDK, à JUnit 5)
 - AI-1: Créer une partie
 - AI-2: Voir une partie
 - AI-3 : Revenir au menu principal
 
Acquis 1 : Programmer des énoncés de conception en Java selon les principes de la POO
Seuil de réussite (tous sont à valider pour obtenir l'acquis)
- [Prog. Procedurale] PMD relève au plus 2 méthodes trop longues et/ou trop complexes
 - [Cohésion] PMD relève au plus 2 classes comportant 5 attributs ou plus.
 - [Cohésion] PMD relève au plus 1 classe divine ou une classe 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'architecture
 
Acquis 2 : Valider les comportements des objets programmés par des tests unitaires
Seuil de réussite (tous sont à valider pour obtenir l'acquis)
- Chaque classe du domaine est validée par une classe de test. Les classes de test sont définis dans le même package (mais dans le répertoire tests).
 - L'ensemble des classes de test du domaine couvre au moins 90% des classes du domaine.
 - Tous les tests unitaires des classes du domaine réussissent. (1 test en échec toléré)
 
Acquis 3 : Documenter son code
Seuil de réussite (tous sont à valider pour obtenir l'acquis)
- Les types et les méthodes publics sont documentés par de la javadoc inspirée par les énoncés (cf. PMD, 5 fautes tolérées)
 - Les pré ou postconditions demandées figurent dans la javadoc, dans l’en-tête de la méthode PlayGameSuperviser.onEnter, et les réponses concernent les 3 classes Player, CaseMap et Case et sont correctes.
 - La CTT demandée est correctement évaluée dans la Javadoc de la classe TreasureQuestGameFactory
 
Acquis 4 : Justifier le choix d'une structure de données particulière
Seuil de réussite (tous sont à valider pour obtenir l'acquis)
- Les choix de type de collection sont correctement documentés dans le code pour les cases du terrain de jeu, dans la javadoc de la classe CaseMap.
 - Les choix d'implémentation sont correctement documentés dans le code pour les cases du terrain de jeu, dans la javadoc de la classe CaseMap.
 - 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)