MASTER : M1 IPII
Date : du 14/11/2015 au 18/12/2015
Professeur : Fabien Meurillon <[email protected]>
[TOC]
Ce document constitue l'énoncé du projet de fin de module J2EE. Il porte sur la réalisation en binômes d'une application de type "url shortener".
Les livrables du projet devront être transmis avant le vendredi 18 décembre sur l'adresse mail Fabien Meurillon <[email protected]>
.
La totalité des livrables devra être compressée dans une unique archive (zip
ou tar.gz
) nommée avec le nom des deux étudiants impliqués.
Il pourra être téléchargeable depuis un service cloud (Dropbox, Google Drive, Box.net...) ou depuis tout autre URL accessible sur Internet.
Le but de ce projet est de réaliser une application permettant des raccourcir les URL dans le but de les partager sur les réseaux sociaux.
Des exemples de ce type de service peuvent être trouvés sur Internet :
Une gestion basique des utilisateurs sera mise en place. Les utilisateurs peuvent se connecter au site avec leur compte, ou créer un compte si ils n'en ont pas encore.
Un utilisateur est constitué au minimum :
- d'un identifiant interne
- d'un login
- d'un mot de passe
À l'inverse des principaux services concurrents, ce raccourcisseur d'URL sera un service privé : seuls les utilisateurs connectés pourront créer des redirections.
Lorsqu'il se connecte, l'utilisateur peut :
- créer une nouvelle redirection en saisissant une nouvelle adresse
- lister les redirections qu'il a déjà créé
Une redirection est constituée au minimum :
- un identifiant interne
- une URL "de base"
- une chaîne de caratères unique, qui servira à générer l'URL raccourcie
De préférence, la chaîne de caractères unique ne devra pas pouvoir être devinée et devrait donc comporter un certain degré d'aléatoire. Afin de garder l'URL la plus courte possible, cette chaîne devra faire un maximum de 4 caractères. Tous les caractères autorisés dans une URL pourront être utilisés.
Soit, d'après la RFC 1738 :
Thus, only alphanumerics, the special characters "
$-_.+!*'(),
", and reserved characters used for their reserved purposes may be used unencoded within a URL.
Par exemple :
- l'utilisateur saisi dans le champ de texte l'adresse
http://www.estcequecestbientotleweekend.fr
- si il s'agit d'une adresse HTTP valide, l'application lui propose une nouvelle adresse plus courte
- sinon, l'application lui retourne une erreur
En développement, l'adresse raccourcie pourra prendre la forme http://localhost:8080/r/ab1c
. La chaîne r
permet à l'application d'identifier le Controller chargé de la redirection, la chaîne ab1c
est la partie variable, générée par l'application.
Les redirections créées pourront être utilisées par tous les utilisateurs, y compris ceux qui ne sont pas connectés.
L'ouverture dans un navigateur de l'adresse citée en exemple http://localhost:8080/r/ab1c
provoquera une redirection vers la page http://www.estcequecestbientotleweekend.fr
.
Cette redirection pourra être effectuée :
- de préférence, en utilisant le code retour HTTP
301
assorti de l'en-têtelocation:
- sinon, en JavaScript dans le document HTML retourné
L'accès à une redirection inexistante doit provoquer une erreur 404.
Aucune charte graphique n'est imposée. Néanmoins l'application devra être confortable à l'œil et à l'utilisation.
L'application devra :
- être réalisée uniquement avec les technologies :
- JavaEE 7 / JDK 8
- HTML / CSS / Javascript
- respecter les principes de conceptions vus en cours, en particulier :
- Model - View - Controller
- Séparation des couches du Model (service, domain, repository)
Tous les frameworks MVC Java sont autorisés (pas de Scala ou d'autres langages). Sont recommandés Spring MVC et/ou l'utilisation "pure" de JavaEE. Il est permis d'utiliser un framework CSS pour assurer la cohérence visuelle. Il est permis d'utiliser un gestionnaire de dépendances (Maven ou Gradle).
Tous les frameworks et composants utilisés seront soumis à l'évaluation. Assurez-vous de bien utiliser ceux que vous choisissez.
L'archive qui constituera le livrable contiendra 3 éléments :
sources/
un repository Git contenant les sources de l'applicationdoc/
une documentation technique présentant :- le fonctionnement global de l'application
- son architecture (patterns implémentés, frameworks choisis, rôle des packages Java, emplacement des données...)
- les instructions permettant de générer le package à partir des sources
url-shortener.war
le package compilé, au format war
L'évaluation, sur 20 points, se décompose de la façon suivante :
Critère | Exemples attendus | Points associés |
---|---|---|
Qualité du code | Indentation Cohérence dans le nommage des variables Respect des Conventions de nommage Code en anglais (classes, variables, méthodes) Code auto-documenté (javadoc) |
6 |
Qualité de la conception | Pas de code métier dans les contrôleurs ni dans les repositories Présence des couches domain, service et repository S.O.L.I.D Modèle de données, requêtes SQL |
8 |
Respect du cahier des charges | Les fonctionnalités demandés sont présentes L'interface graphique est présentable |
6 |
En plus de ce barême certains malus pourront s'appliquer :
Critère | Points associés |
---|---|
Respect des délais | -4 par jour de retard |
Les sources ne compilent pas | -5 |
Le WAR ne se déploie pas | -5 |
Exception envoyée à l'utilisateur |
-2 par Exception |
Exception non catchée dans la console (un log ERROR est acceptable) |
-1 par Exception |
Certains bonus pourront également s'appliquer :
Critère | Points associés |
---|---|
l'URL courte est aléatoire | 1 |
La redirection est une HTTP 301 |
1 |