Introduction au projet JaVelo
CS-108
1. Introduction
Le but du projet de cette année, nommé JaVelo, est de réaliser un planificateur d'itinéraires vélo en Suisse.
L'interface de JaVelo est similaire à celle de planificateurs en ligne comme Google Maps. JaVelo n'est toutefois pas une application Web — qui s'exécute en partie dans le navigateur et en partie sur un serveur distant —, mais bien une application Java qui s'exécute exclusivement sur l'ordinateur de la personne qui l'utilise.
L'image ci-dessous montre l'interface graphique de JaVelo, qui sera familière à toute personne ayant déjà utilisé un planificateur d'itinéraire. La partie supérieure montre la carte de l'itinéraire, tandis que la partie inférieure montre son profil en long.
![javelo-gui;64.png](i/javelo-gui;64.png)
Comme d'habitude dans ce genre de programmes, il est possible de déplacer, agrandir ou réduire la carte au moyen de la souris.
La planification d'un itinéraire se fait en plaçant au moins deux points de passage — le point de départ et celui d'arrivée — en cliquant sur la carte. Dès que deux de ces points ont été placés, JaVelo détermine l'itinéraire reliant ces deux points qu'il considère comme idéal pour une personne se déplaçant à vélo. Pour cela, il tient compte non seulement du type des routes empruntées — en favorisant les routes peu importantes, pistes cyclables et autres — mais aussi du relief — en évitant les montées raides.
Dès qu'un itinéraire a été calculé, son profil en long est affiché dans le bas de l'interface, accompagné de quelques statistiques : longueur totale, dénivelés positifs et négatifs, etc. Lorsque le pointeur de la souris se trouve sur un point du profil, le point correspondant de l'itinéraire est mis en évidence sur la carte, et inversement.
Finalement, il est possible de modifier un itinéraire existant, en ajoutant, supprimant ou déplaçant des points de passage. Chaque changement provoque le recalcul de l'itinéraire idéal et de son profil en long.
JaVelo est limité au territoire suisse, car il n'existe actuellement pas de modèle altimétrique numérique couvrant la Terre entière qui soit assez précis pour nos besoins et disponible gratuitement. Pour la Suisse, un tel modèle existe puisque l'office fédéral de topographie (swisstopo) offre depuis peu un accès libre à la totalité de ses données, y compris le très précis modèle altimétrique SwissALTI3D, que nous utiliserons.
2. Organisation
Le projet se fait par groupes de 2 personnes au maximum. La formation de ces groupes est libre et peut changer au cours du semestre, pour peu que les directives concernant le plagiat soient respectées. En particulier, si deux personnes ayant travaillé en commun se séparent, elles doivent se partager le code et ne peuvent chacune l'emporter en totalité de leur côté.
La mise en œuvre du projet est découpée en 12 étapes hebdomadaires, regroupées en trois parties :
- la première partie est composée des étapes 1 à 6,
- la seconde partie est composée des étapes 7 à 11,
- la troisième partie est composée de l'étape 12, optionnelle.
La première partie est très guidée, afin de vous permettre de bien démarrer, tandis que la seconde l'est moins, la troisième étant (presque) totalement libre.
3. Notation
Un total de 500 points est attribué durant le semestre, répartis ainsi :
- projet : 300 points,
- examen intermédiaire : 75 points,
- examen final : 125 points.
Les 300 points attribués au projet sont répartis de la manière suivante :
- rendus testés : 90 points (18 points par rendu),
- rendu intermédiaire : 80 points,
- rendu final : 110 points,
- test final : 20 points.
Un rendu testé est un rendu qui est évalué automatiquement au moyen de tests. Il y a cinq rendus de ce type au cours du semestre, un pour chacune des étapes 2 à 6. Le nombre de points obtenus à un rendu testé est proportionnel au nombre de tests passés avec succès.
Le rendu intermédiaire, qui concerne les étapes 1 à 6, et le rendu final, qui concerne les étapes 7 à 11, sont quant à eux évalués par lecture de votre code, et les points attribués en fonction de la qualité du programme. L'efficacité, la concision et l'élégance du code sont prises en compte dans cette évaluation.
Le test final consiste en un test non automatisé — contrairement au test des étapes 2 à 6 — du bon fonctionnement du projet terminé.