Skip to main content

Template (officielle)

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)

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 , et les réponses concernent la classe est correcte.
  • La CTT demandée est correctement (justifiées, avec le pire des cas si il existe, avec signification des vairables N, M, etc) évaluée dans la Javadoc de la classe

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 .
  • 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 .

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)
  • Un plan de test exhaustif valide le code correspondant à la CTT demandée