Volumes horaires
- Projet 18.0
Crédits ECTS
Crédits ECTS 3.0
Objectif(s)
Développement d'une application réseau Java de zéro ou à partir de librairies existantes afin de sensibiliser les étudiants à l'implémentation et l'intégration de protocoles réseaux au sein d'un prototype abouti. Il faudra spécifier l'architecture logicielle, l'implémenter, vérifier la conformité du prototype implémenté en interagissant avec des applications existantes et mettre en évidence les performances
L'application à réaliser est un client bittorrent.
Contact Olivier ALPHANDContenu(s)
L'intérêt de ce projet est que les étudiants doivent organiser leur travail eux-même, chercher la documentation ou du code existant en ligne et mettre en place progressivement un prototype opérationnel couvrant les différents scénarios qu'ils définiront au fur et à mesure. Le langage de programmation est Java. Outre la gestion d'équipe, ce projet sera l'occasion de concevoir une architecture logicielle orientée objet, d'aborder des concepts avancés de programmation réseau (socket non bloquante, paradigme pair à pair (client/serveur), parseur ...) et de programmation tout court (thread, clean code, design pattern : machine à état, observeur, réacteur, ...).
Vous utiliserez un environnement de développement intégré (Eclipse/Netbeans), un système de contrôle de version (Git) et vous testerez la compatibilité de votre trafic réseau au fur et à mesure par l'intermédiaire d'outils réseaux (Wireshark, ...) ou en interagissant directement avec des applications existantes.
Enfin vous analyserez les performances de votre application (Jprofiler, débit réseau, ...) au sein d'un scénario facilement reproductible (automatisé) impliquant le téléchargement d'un fichier volumineux entre votre client et plusieurs clients bittorrent existants disséminés sur plusieurs machines du réseau Ensimag. Un comparatif des performances des clients des différents groupes pourra alimenter une discussion sur l'efficacité des stratégies de téléchargement implémentées.
Prérequis
Cours Réseaux 2A (TP inclus), programmation orientée objet Java, Wireshark
Code source du projet, rapport final et une démonstration du prototype
N1=code + rapport + démonstration prototype à la fin du projet
<br>
Pas de rattrapage en 2ème session