Rendu intermédiaire

1 Introduction

Ce rendu intermédiaire nous permet de faire une première évaluation du code de votre projet et de nous assurer que les deux membres de chaque groupe aient bien compris les concepts utilisés jusqu'ici.

L'évaluation se déroule en deux étapes. Tout d'abord nous procédons à des entretiens individuels durant la séance d'exercices du 4 avril. Ensuite, vous nous faites parvenir le code de votre projet avant le vendredi 11 avril 2014 à 14h00. Attention, il s'agit bien de 14h00, même si la séance d'exercice se termine à 15h00.

2 Contenu du rendu

Le rendu concerne tous les fichiers créés lors des étapes 1 à 7 (incluse), tests compris.

2.1 Fichiers

Les fichiers ci-dessous doivent en tout cas faire partie de votre rendu, de même que tous les fichiers de test que vous avez écrits. Ils doivent être placés dans une archive Zip, selon les instructions données plus bas.

src/ch/epfl/isochrone/TimeTableSearch.java
src/ch/epfl/isochrone/geo/PointOSM.java
src/ch/epfl/isochrone/geo/PointWGS84.java
src/ch/epfl/isochrone/math/Math.java
src/ch/epfl/isochrone/timetable/Date.java
src/ch/epfl/isochrone/timetable/FastestPathTree.java
src/ch/epfl/isochrone/timetable/Graph.java
src/ch/epfl/isochrone/timetable/GraphEdge.java
src/ch/epfl/isochrone/timetable/SecondsPastMidnight.java
src/ch/epfl/isochrone/timetable/Service.java
src/ch/epfl/isochrone/timetable/Stop.java
src/ch/epfl/isochrone/timetable/TimeTable.java
src/ch/epfl/isochrone/timetable/TimeTableReader.java

Chaque fichier Java que vous rendez doit obligatoirement contenir, dans les commentaires Javadoc, les noms et prénoms des auteurs ainsi que leur numéro SCIPER, placé entre parenthèses. La parenthèse ouvrante doit être immédiatement suivie des six chiffres du numéro SCIPER puis d'une parenthèse fermante. L'exemple ci-dessous illustre la manière correcte de formater ce numéro :

/**
 * @author Marie Dupond (123456)
 * @author Pierre Durand (654321)
 */

Les numéros SCIPER sont extraits automatiquement par notre système de gestion des rendus, qui refuse toute archive ne contenant pas entre un et deux numéros SCIPER différents, formatés comme décrit ci-dessus. Il est donc capital que vous respectiez cette règle.

3 Modalités de rendu

3.1 Création de l'archive

Pour créer l'archive Zip contenant les fichiers de votre projet, procédez ainsi dans Eclipse :

  1. Dans l'explorateur de paquetage (Package explorer), sélectionnez votre projet.
  2. Dans le menu File, choisissez Export… et, dans la boîte de dialogue qui s'ouvre, déroulez la section General, sélectionnez Archive File puis cliquez sur le bouton Next.
  3. Dans la boîte de dialogue qui suit, le nom de votre projet apparaît en haut à gauche avec une case cochée et un triangle permettant d'examiner son contenu. Cliquez sur ce triangle afin de pouvoir sélectionner plus précisément les données à exporter.
  4. Une fois votre projet déroulé, vous devriez voir apparaître tous les répertoires de premier niveau qu'il contient, à savoir bin, data, src et test. Chacun de ces répertoires est accompagné d'une case à cocher qui détermine si son contenu est exporté ou non. Désélectionnez toutes les cases à cocher des répertoires sauf celles des répertoires src et test, puisque vous ne devez rendre que ces deux parties de votre projet (src contient les fichiers Java que vous avez écrits, test les tests). Votre boîte de dialogue devrait alors ressembler à celle de la figure 1 ci-dessous.
  5. Choisissez l'endroit où créer l'archive (p.ex. le bureau de votre ordinateur) et son nom (p.ex. isochrone.zip) en cliquant sur le bouton Browse… puis en naviguant à l'endroit approprié.
  6. Cliquez sur le bouton Finish afin de créer l'archive Zip à l'endroit que vous avez choisi à l'étape précédente.

eclipse-export.png

Figure 1 : Exportation du projet depuis Eclipse

Une fois l'archive créée, nous vous conseillons de vous assurer que son contenu est correct. Il existe des programmes permettant de consulter et/ou d'extraire le contenu d'archives Zip pour la plupart des systèmes d'exploitation, ce qui vous permet de vérifier que la vôtre contient bien les fichiers attendus.

Au minimum, vérifiez que la taille de l'archive est proche de 30 Ko. Une taille nettement supérieure indique probablement que vous avez inclus les données d'horaire, ce qu'il ne faut absolument pas faire.

3.2 Envoi de l'archive

Une fois l'archive créée, il faut nous la transmettre en l'envoyant par e-mail à l'adresse cs108-s1@listes.epfl.ch. L'heure de réception de cet e-mail détermine l'heure de votre rendu.

Les e-mails envoyés à l'adresse ci-dessus sont traités automatiquement toutes les 10 minutes environ. Vous devriez donc recevoir une réponse à votre message dans ces délais. En cas de problème, merci de nous contacter via le forum du cours.

3.3 Dépassement de délai

Si pour une quelconque raison vous deviez rater le délai, vos points seront réduits de 20% par heure entamée après 14:00, l'heure de réception de l'e-mail faisant foi.

Par exemple un e-mail reçu entre 15:00:01 et 16:00:00 implique une réduction de 40% des points. Un e-mail reçu plus de 5 heures après le délai n'est pas pris en considération.

Les rendus multiples sont acceptés, mais seul le dernier est pris en considération. Dès lors, pour éviter tout problème, nous vous recommandons fortement de rendre une première version fonctionnelle de votre code dès que possible — idéalement durant la séance du 7 avril — et de la mettre éventuellement à jour par la suite, mais au plus tard à la date limite mentionnée plus haut.

4 Eléments de notation

Le rendu intermédiaire est évalué sur une échelle allant de 0 à 100, les points étant répartis ainsi :

  • 10 pour le bon respect des différentes règles administratives,
  • 50 pour les tests automatiques qui sont appliqués à votre rendu,
  • 30 pour les erreurs détectées lors de la lecture du code mais pas lors des tests automatiques,
  • 10 pour la qualité du code.

Ces points sont multipliés par un facteur individuel dépendant de votre prestation à l'entretien et déterminé ainsi :

  • 1 si elle est jugée bonne,
  • 3/4 si elle est jugée moyenne,
  • 1/2 si elle est jugée insuffisante.

Finalement, une éventuelle pénalité due à un rendu tardif est appliquée à ces points pour déterminer la note finale.

4.1 Suivi des règles

Les premiers 10% des points sont basés sur le bon respect des différentes règles administratives données dans ce document et ceux des étapes précédentes. Par exemple, le rendu de fichiers encodés selon un format différent de UTF-8 est pénalisé, puisque le choix de cet encodage a été spécifié dans le document de configuration d'Eclipse.

4.2 Evaluation du code

Les 50% suivants des points sont basés sur une évaluation automatique de votre rendu par tests unitaires. Pour garantir leur bon fonctionnement, les noms et signatures (ordre des paramètres et leur types) des fonctions publiques ainsi que leur modificateurs doivent correspondre à ceux décrits dans l'énoncé.

Les 40% suivants des points seront attribués après une lecture attentive du code. La première tranche de 30% est attribuée en fonction des éventuelles erreurs dans les fonctionnalités qui n'auraient pas été détectées automatiquement et les 10% restants portent sur la qualité du code. A cet effet, nous avons compilé une liste de ce que nous estimons être les bonnes pratiques à respecter pour coder en Java. Cette liste n'est pas exhaustive et est principalement basée sur le guide de bonnes pratiques proposé par Oracle :

  • Le code est proprement indenté. Eclipse peut indenter un fichier automatiquement en sélectionnant la totalité de son contenu (menu Edit, entrée Select All) puis en le ré-indentant en sélectionnant l'entrée Correct Indentation du menu Source.
  • Toutes les méthodes et classes sont commentées en utilisant la syntaxe de Javadoc. Vous pouvez choisir de le faire en français ou en anglais, mais n'utilisez qu'une langue dans tout votre projet.
  • Les parties de code complexes sont commentées afin de fournir des informations supplémentaires.
  • Les composants des classes et interfaces apparaissent toujours dans l'ordre suivant :
    1. Les variables statiques triées par visibilité (les variables publiques en premier, puis les protégées, ensuite les variables sans modificateur de visibilité et enfin les variables privées).
    2. Les variable d'instance, également triées par visibilité.
    3. Les méthodes, triées par fonctionnalité et non par visibilité (p.ex. une méthode privée peut-être entre deux méthodes publiques si elle est utilisée uniquement par la première).
  • Toutes les classes, variables et méthodes sont correctement nommées en anglais et en camel case, c-à-d que les mots qui forment un nom sont collés les uns aux autres et, à l'exception éventuelle du premier, commencent tous par une majuscule.
  • Les noms de classes et d'interfaces commencent par une majuscule, les noms de variables et de méthodes par une minuscule. Les constantes sont nommées en majuscules avec des tirets bas "_" entre les mots. Les noms doivent avoir un sens, mais pas forcément être longs. Par exemple il est communément accepté de nommer i un index ou x et y des coordonnées.
  • Le code est concis, clair et évite la duplication inutile. L'utilisation de variables pour les expressions se répétant plusieurs fois est recommandée.
  • Les exécution inutiles sont évitées. Attention toutefois, ce genre d'optimisation ne doit pas se faire au détriment des points ci-dessus.
  • Les expressions booléenne sont utilisées de façon intelligente, par exemple en évitant des constructions comme :
    • if (e) return true; else return false;
      (à remplacer par return e;),
    • if (e) return false; else return true;
      (à remplacer par return !e;),
    • if (e == false) …
      (à remplacer par if (!e) …).

4.3 Entretien individuel

Un entretien individuel est effectué lors de la séance d'exercice du 4 avril et porte sur les étapes 1 à 6 — l'étape 7, qui fait partie du rendu, est exclue des entretiens. Les questions posées sont relatives à votre implémentation du projet et ne devraient pas poser de problèmes si les deux membres du groupes ont bien compris le fonctionnement de la totalité du code.

Si vous ne parvenez pas à répondre de manière satisfaisante aux questions posées par les assistants, un malus individuel sera appliqué selon les règles données plus haut.

L'horaire de passage détaillé vous sera communiqué ultérieurement.

5 Résumé

Pour ce rendu, vous devez :

  • Vous préparer à l'entretien afin de garantir que chaque membre du groupe comprend bien le code des étapes 1 à 6.
  • Embellir votre code en le simplifiant si possible et en vous assurant que toutes les entités publiques définies sont commentées au format Javadoc.
  • Vous assurer que tous les fichiers Java que vous rendez contiennent les noms et numéros SCIPER des auteurs, formattés comme décrit plus haut.
  • Créer une archive Zip contenant le code de votre projet, tests inclus, selon les spécifications données ci-dessus.
  • Envoyer cette archive par e-mail à l'adresse donnée plus haut, en vous assurant qu'elle sera reçue au plus tard le vendredi 11 avril à 14h00.