Précisions sur l'architecture et les erreurs pour le rendu1

Précisions sur l'architecture et les erreurs pour le rendu1

par Marcus Cemes,
Number of replies: 1

Bonjour,
Je voudrais poser quelques questions concernant l'évaluation du code source, pour mieux comprendre les libertés et les contraintes imposées.

  1. Par rapport à l'architecture du projet, est-ce qu'on est libre de créer des modules supplémentaires, par exemple un module pour la validation des différents aspects de la ville, si on respecte l'architecture (et l'hiérarchie) de base (ville, tools, noeud) imposé par les spécifications du projet? Cela permettrait de diviser de grands modules en plusieurs fichiers, favorisant une plus grande modularisation du programme.

  2. "Le module error est fourni dans un fichier archive sur moodle ; il ne doit pas être modifié [...] Il n’est pas autorisé de modifier le code source de ce module car il sera utilisé par notre programme de notation automatique du rendu1" – (source)
    Est-ce que cela entend que le module error ne doit en aucun cas être modifié (les fichiers error.cc et error.h doivent se retrouver dans le code source comme ils sont fournis), ou que seulement les strings retournés par les fonctions ont une importance et doivent être conservés, car elles sont utilisées lors de l'évaluation automatique du program? Autrement dit, est-ce qu'on peut augmenter le module avec nos propres erreurs/logique, si on respecte les erreurs de base qu'il faudra retourner lors de la lecture du fichier?

  3. Selon ce post, il ne peut y avoir qu'une seule erreur par fichier de test. Cépendent, dans le fichier test e04.txt (fourni par Moodle), il se trouve deux erreurs différentes, un lien en double pour (14, 24), mais aussi une violation du nombre maximum de liens d'un noeud logement. Un autre cas de bord que j'ai trouvé est dans e10.txt. Le nœud #24 dépasse la capacité maximale (1000001), mais en conséquence, entre également en collision avec le nœud #366 à cause de son rayon disproportionné. Pourriez-vous nous donner une indication de la façon dont nous devrions aborder ces conflits? Est-il sûr de ne pas tomber sur ce genre de conflits lors de l'évaluation?

  4. "On doit pouvoir produire l’exécutable projet à partir du Makefile après décompression du contenu du fichier zip. La commande make ne doit faire AUCUN déplacement de fichier ; tout reste dans l’unique répertoire créé par la décompression du fichier archive." – (source)
    Dans notre cas, notre code source se trouve dans un sous-répertoire "src/" (par rapport au Makefile). Les étapes intermédiaires du Makefile (la compilation des modules) se font sous un dossier "obj/" et l'exécutable final sous "dist/". Ces sous-répertoires sont générés automatiquement par le Makefile (s'il y a besoin) avec mkdir, comme dépendances des fichiers intermédiaires.
    Est-ce que cela posera problème pour l'évaluation? Il n'y a pas de déplacement de fichier, seulement une création de fichiers dans des sous-répertoires par g++ pour favoriser une meilleure organisation du code source.
    Est-ce qu'il est nécessaire que tout se trouve dans un seul répertoire mélangé "plat"? Ou il suffit de construire l'exécutable exceptionnellement à côté du Makefile?

  5. Certains noms de module sont proposés en anglais (tools, error, gui) et d'autres en français (ville, projet, constantes (mais les constantes elles-mêmes sont en anglais), noeud).
    Si on respecte toujours l'architecture qui est imposée, est-ce qu'on a le droit de renommer ces fichiers en leurs équivalents en anglais ou en français pour rendre le projet un peu plus uniforme (i.e. town.cpp au lieu de ville.cc)? Et les noms des constantes?

Je m'excuse pour le long message et je vous remercie d'avance pour votre réponse!

In reply to Marcus Cemes

Re: Précisions sur l'architecture et les erreurs pour le rendu1

par Ronan Boulic,

question1: plus de modules ?

- l'architecture proposée a pour principe d'avoir un module par structure de donnée de haut niveau comme ville ou noeud afin que toutes les fonctions travaillant sur un type de donnée soient dans le même module/classe.  Si vous divisez un tel module en plusieurs morceaux vous introduisez des dépendances entre ces modules. Le bénéfice n'est pas clair du tout : multiplier les modules n'est pas forcément un signe de bonne modularité.

question2: altération possible du module error ?

- je comprends l'idée de vouloir ajouter votre propres fonctions affichant votre propres messages d'erreur pour des types d'erreurs que vous voulez traiter en plus de celles que nous imposons. Donc, c'est OK de suivre la ligne que vous indiquez à la condition suivante:

====> AUCUNE MODIFICATION des fonctions déjà fournies dans le module error

Vous pouvez ajouter vos propres fonctions supplémentaires si vous le voulez. Notez qu'en éditant le module error il y a un risque de mofidier involontairement les fonctions fournies.

question3: un fichier de test a plusieurs erreurs ; laquelle est celle qu'il faut trouver ?

- merci d'avoir relevé cette faiblesse. L'erreur qu'il faut trouver devrait être celle qui est trouvé par le programme de démo. nous modifierons tout fichier d'erreur qui aurait plus d'une seule erreur pour qu'il ne reste que celle qui nous intéresse à tester avec votre programme. Dites nous s'il y a d'autres fichiers avec plusieurs erreurs.

question4: production de l'exécutable avec make et répertoire "plat" ?

- il faut suivre la spécification (= un seul répertoire "plat") pour que notre script autograder fonctionne de la même façon pour tous les groupes.

question5: homogénéité de langue pour les noms de module / de constante ?

- OK mais seulement si vous passez à l'anglais, évidemment sans modifier la sémantique des mots traduits.