cahier des charges

Transcription

cahier des charges
CAHIER DES CHARGES
. Projet : TER Fractal TV
. Date : 6 avril 2005
. Version : 1.5
. Encadrant :
Philippe Collet
. Auteurs :
NICOLAS Yohann
BARBIER Thomas
CASTILLEJOS Nicolas
SAUVAN Bastien
SALAGEANU Emil
. Changements clés depuis la dernière version :
- Mise en page et correction orthographique.
-1-
I . Introduction
I.1 Résumé
Fractal TV est un projet visant à développer un prototype client/serveur d’échange
de fichiers vidéos à l’aide de la plate-forme de composant Fractal et de l’API Java Media
Framework.
L’architecture du prototype sera de type 1-N , un unique serveur et N clients qui
se connecteront au serveur par l’intermédiaire de RMI (Remote Method Invocation) .
Le serveur fourni un ensemble de vidéos ou des captures (Webcam par exemple)
qu’ il peut envoyer ou diffuser à la demande des clients (téléchargement ou streaming
grâce au protocole RTP).
Le serveur pourra également :
- négocier la qualité de la vidéo en fonction de sa charge
- mettre un fichier indisponible si cette même charge est trop élevée
Le client sera portable (PC/Windows, PC/Linux, PocketPC/Windows Mobile), il
gérera essentiellement :
- Le paramétrage et la lecture des vidéos
- Le choix du type de diffusion
- La qualité de la vidéo en fonction de sa bande passante disponible
- Savoir lire les vidéos en fonction des codecs dont il dispose
Grâce à la plate-forme Fractal, le client pourra éventuellement changer (connecter
et déconnecter) des composants dynamiquement, renoncer éventuellement à certains
selon les capacités de la machine sur laquelle il tourne.
I.2 Existant
. La Plateforme de composants Fractal développé par ObjectWeb
. La Java Media Framework (JMF) de Sun
. Le projet DESS Telecom Fractal-RTP :
Projet de type client/serveur sous la plate-forme Fractal qui utilise JMF dont
on pourrait réutiliser des composants fractal dans notre prototype.
. Un projet des étudiants de l'ESSI en cours de réalisation dans le but d’améliorer
les performances sur Pocket PC (type IPAQ)
-2-
I.3 Fournitures
Voici une liste de tout ce qui sera livré :
- Le prototype du serveur de fichiers vidéos
- Le prototype du client
- La documentation (sous forme de Javadoc)
- Manuel utilisateur
I.4 Définitions et Acronymes
Streaming : Technique de transfert de données multimédia en un flux (Stream)
régulier et continu. Ceci permet de lire sur Internet un contenu audio-vidéo au fur et à
mesure de son téléchargement en direct ou en différé.
Fractal : Fractal est une plate-forme de composants modulable et extensible
permettant entre autres de concevoir, implémenter et de reconfigurer à chaud
différents systèmes ou applications.
JMF : La Java Media Framework est une bibliothèque de développement fournie
par Sun permettant d'utiliser les fonctionnalités multimédias standard. Elle offre de
nombreuses classes utiles pour le traitement audio et vidéo, mais aussi la gestion du
protocole Real Time Protocole (RTP) pour la diffusion de flux.
RMI : La Remote Method Invocation est une API Java permettant de manipuler
des objets distants (C'est-à-dire un objet instancié sur une autre machine virtuelle,
éventuellement sur une autre machine du réseau) de manière transparente pour
l'utilisateur, c'est à dire de la même façon que si l’objet était sur la machine virtuelle
(JVM) de la machine locale.
Ainsi un serveur permet à un client d'invoquer des méthodes à distance sur un objet
qu'il instancie. Deux machines virtuelles sont donc nécessaires (une sur le serveur et
une sur le client) et l'ensemble des communications se fait en Java.
-3-
II . Organisation du Projet
II.1 Processus
Nous avons choisi de développer notre prototype de manière incrémentale dans le
but de toujours garder autant que possible une version « opérationnelle » de notre travail
et d’en améliorer les fonctionnalités, la fiabilité et la robustesse tout au long de
l’avancement du projet.
La méthode incrémentale permet également un développement plus sécurisé face
à des problèmes éventuels et d'avoir une succession de prototypes se rapprochant de
l'application finale.
II.2 Organisation Structurelle
Jusqu’à aujourd’hui, nous avons appris à nous familiariser avec les technologies
requises par le projet, ainsi nous avons tous fait différents essais, que cela soit avec
Fractal ou la JMF. Tous les membres de l’équipe ont écrit une petite application
client/serveur basée sur Fractal (et/ou Fractal RMI) dans le but de mieux aborder le
principe de la programmation par composants. Nous avons également effectué quelques
essais avec la JMF (création d’un petit lecteur vidéo par exemple).
Lors d’une réunion avec notre encadrant de projet, nous avons suggéré
d’implémenter un petit prototype ayant des fonctionnalités très restreintes et encore sous
forme de classe Java.
Voici la répartition des tâches dans l’équipe pour ce travail :
- NICOLAS Yohann & CASTILLEJOS Nicolas pour la partie RTP de
l’application
- BARBIER Thomas pour le téléchargement de fichier
- SALAGEANU Emil & SAUVAN Bastien pour la partie RMI
Ce petit prototype est expliqué plus en détail dans ce document.
Pour la suite du développement, nous allons nous baser sur le prototype dont nous
disposons maintenant et le faire grandir.
Tout d’abord, nous allons « Fractaliser » chaque partie de notre application, c'està-dire créer des composants de haut niveau à partir de nos classes Java. Chacun gérant la
partie dont il s’était déjà acquitté jusque là.
Par la suite, nous affinerons l’architecture en descendant vers des composants de
plus en plus précis tout en améliorant les fonctionnalités de chacune de nos parties
respectives. Pendant ce temps, Nicolas se concentrera sur le déploiement sur Pocket PC .
Et enfin, tous les membres de l’équipe concentreront leur travail sur le
déploiement de l’application sur tous les supports et sur les tests .
-4-
II.3 Limites et Interfaces
Les interfaces :
Le serveur scannera périodiquement un répertoire contenant les vidéos et
proposera les fichiers dont il dispose aux clients.
Le manager du serveur pourra ajouter des vidéos au répertoire défini comme étant
répertoire « partagé » accessible aux clients.
Le client disposera d'une interface graphique. Il précisera obligatoirement le port
et le nom (Ou adresse IP) du serveur afin de s'y connecter.
Il pourra récupérer la liste des fichiers disponibles et choisir d'en lire un en
streaming ou de le télécharger pour pouvoir le visualiser par la suite en local.
Les limites :
Le serveur ne disposera d’aucune interface graphique pour son utilisateur.
Dans le cas du Pocket PC, seul les fichiers .mpeg et .mov seront gérés dans un
premier temps, l’ajout de formats compatibles pourra être possible selon l’état de
l’avancement du projet et de la qualité de l’ensemble du prototype .
III . Gestion
III.1 Objectifs et priorités
Notre objectif principal est d’avant tout fournir au client un prototype fonctionnel
dont les deux qualités fondamentales seraient, d’une part d’avoir un client portable sur les
Systèmes déjà cités et d’autre part la possibilité de pouvoir réutiliser le code.
Nous allons donc mettre l’accent sur les points suivants :
- Prototype minimal permettant 2 modes d'utilisations clients :
. Lecture du fichier distant (rtp / streaming).
. Téléchargement du fichier sur la machine du client puis
éventuellement lecture en local.
- Portabilité du code source (utilisation du jdk1.3 de Sun pour rester
compatible avec le Pocket PC, le reste de la portabilité sera assurée par l’utilisation du
langage Java)
- Assurer une certaine évolutivité à notre prototype de sorte que l’ajout de
formats vidéo supportés puisse être aisé ou encore de pouvoir ajouter des fonctionnalités
ultérieurement de manière simple et efficace (Sans changer le code déjà existant).
- Permettre le test de charge du serveur et négocier en fonction de cette
donnée la qualité de la vidéo diffusée.
-5-
III.2 Hypothèse, dépendances, contraintes
Hypothèse :
On utilisera AWT et pas SWING afin de conserver la compatibilité avec les
Pocket PC.
La JVM J9 de IBM pour Pocket PC est opérationnelle et nous permettra de
réaliser nos besoins.
Dépendances :
La gestion des codecs sur pocketPC dépend d'un projet des étudiants de l'ESSI,
ils restent des incertitudes sur sa sortie et même sur son utilisation possible.
La réutilisation du projet DESS Telecom pourrait fournir des composants fractal
intégrables à l'application sous réserve de compréhension du code, sa réutilisation n’est
pas certaine mais permettra de toute façon d’enlever certaines ambiguïtés.
Contraintes :
Le projet devra être développé en Java (Jdk1.3 pour compatibilité Pocket PC).
L’utilisation de la plate-forme de composant Fractal est imposée par les besoins
du client.
III.3 Gestion du risque
Le Pocket PC est un point dangereux de notre projet, le déploiement sur ce type
d'architecture est très fastidieux et pourrait nous obliger à renoncer à une version
compatible, livrable dans les temps avec notre prototype.
Le projet se basant sur des technologies différentes, l'assemblage est difficile à
mettre en place d’où notre choix de processus de développement incrémental. Nous
connaissons le coût que peut avoir le rassemblement de ces technologies, nous limitons
ainsi les risques à venir en utilisant ce modèle de développement.
Le projet de l'ESSI pourrait ne pas aboutir ne nous permettant pas de fournir une
version performante de notre application sur Pocket PC.
-6-
III.4 Moyens de contrôle
Pour un confort d’utilisation maximal du côté client, nous devons essayer de gérer
au mieux les points faibles de ce type de projet :
- Utiliser toute la bande passante disponible pour offrir au client une qualité
optimale de la vidéo.
- Exécuter les clients sur les plates-formes différentes afin de s’assurer que
le prototype soit efficace sur chacun des systèmes.
- En utilisant le même mode (Streaming ou téléchargement) sur le même
fichier avec plusieurs clients différents au même moment.
- En utilisant 2 modes différents sur le même fichier avec plusieurs clients
différents au même moment.
- En testant sur différents types de fichiers sur toutes les plates-formes au
même moment.
IV . Technique
IV.1 Méthodes et outils employés
L'ensemble du projet est réalisé en Java avec JBuilder X de Borland.
L’utilisation de Trac pourrait être envisageable dans le cas où un membre de
l’équipe disposerait d’une station de travail sous linux et tournant à plein temps. Trac
contient un serveur subVersion et d’un site wiki qui permet de voir les sources, de placer
des schémas d’architecture et des commentaires.
IV.2 Documentation
L'ensemble de la documentation relative aux API utilisées dans le projet ainsi que
les forums concernant le déploiement et l'utilisation du Pocket PC sont disponibles sur le
site Wiki du projet :
- http://deptinfo.unice.fr/twiki/bin/view/Minfo/TERFRACTALTV
La documentation se présentera dans un premier temps sous la forme d'une
Javadoc. C'est l'unique documentation nécessaire aux programmeurs, le fonctionnement
global de l'application n'intervenant que lors de l'assemblage.
La mise en commun des différentes parties du programme se fera en groupe, la
présence de chaque membre de l'équipe permettra de pouvoir modifier n'importe quel
bout de code afin de pouvoir l'assembler avec le reste du projet.
-7-
V . Calendrier
Notre activité jusqu'à ce jour :
. Découverte des nouvelles technologies nécessaires pour le projet (Multimédia,
programmation par composant (Fractal), déploiement par ADL en XML).
. Conception de quelques applications dans le but de se familiariser avec ces
technologies (Client/serveur échangeant une simple phrase puis en Fractal RMI).
. Développement d'un prototype basique de l'application :
Pour cela, l'application avait été ramenée à 3 clients/serveurs:
. Serveur et client pour le téléchargement de fichiers.
. Serveur et client RTP pour la visualisation des vidéos en streaming.
. Interfaces de communication entre le client et le serveur en Java RMI.
La partie RTP a permis l'initiation au Multimédia et à la diffusion en streaming, il
reste à approfondir ces connaissances pour pouvoir fournir une application la plus fiable
possible.
La partie RMI a permis la consolidation des connaissances dans cette technologie.
La partie téléchargement a permis l'essai des ZipSockets afin de compresser les
données envoyées sur le réseau mais son échec a aboutis à son abandon dans les choix de
conception.
Ce découpage a permis à chacun d'entre nous de travailler sur une partie
Client/Serveur. L'assemblage du prototype plus long que prévu a révélé les problèmes de
déploiement auxquels nous serons confrontés et ont influencé le choix du planning. Une
personne devra superviser l'assemblage et le déploiement du projet tout au long de son
développement.
Notre activité dans les semaines à venir :
A partir des connaissances acquises dans l’expérimentation de ces nouvelles
technologies, nous avons établi un planning prévisionnel où chaque semaine a son
objectif à atteindre toujours dans le but de développer de manière incrémentale.
-8-
PLANNING PREVISIONNEL
Nom
Semaine 1
Semaine 2
Semaine 3
Nicolas Yohann Barbier Thomas
Castillejos
Salageanu
Sauvan Bastien
Nicolas
Emil
Fractalisation et Fractalisation
Fractalisation du Fractalisation de
modifications du Serveur
client RTP
la partie RMI (en
serveur RTP
utilisant toujours
Téléchargement et
assemblage des
Java RMI) et
différentes parties
assemblage
Fractalisation de
la partie RMI (en
utilisant toujours
Java RMI) et
assemblage
Adaptation en
Fractal RMI
Adaptation en
Fractal RMI
Adaptation en
Fractal RMI
Fractalisation en
composant plus
détaillée de la
partie RMI
Fractalisation en
composant plus
détaillée de la
partie RMI
Adaptation en
Fractal RMI
PocketPC et
installation de la
J9
Fractalisation en Fractalisation en PocketPC et
composant plus composant plus installation de la
détaillée RTP
J9
détaillée du
et/ou
serveur RTP +
Déploiement par téléchargement.
(eventuellement
ADL
sur la J9)
Semaine 4
Assemblage,
déploiement et
test
Assemblage,
déploiement et
test
PocketPC et
Assemblage,
installation de la déploiement et
J9 (et/ou
test
déploiement)
Assemblage,
déploiement et
test
Semaine 5
Semaine de
réserve ou on
place les efforts
sur les points
faibles de
l'application.
Semaine de
réserve ou on
place les efforts
sur les points
faibles de
l'application.
Semaine de
réserve ou on
place les efforts
sur les points
faibles de
l'application.
Semaine de
réserve ou on
place les efforts
sur les points
faibles de
l'application.
Semaine de
réserve ou on
place les efforts
sur les points
faibles de
l'application.
Semaine 6
Finitions, rapport,
repérage de bugs
de dernière
minute.
Finitions, rapport,
repérage de bugs
de dernière
minute.
Finitions, rapport,
repérage de bugs
de dernière
minute.
Finitions, rapport,
repérage de bugs
de dernière
minute.
Finitions, rapport,
repérage de bugs
de dernière
minute.
-9-
VI . Fonctionnalités
VI.1 Fonctionnalités côté serveur
- proposition de vidéos :
- vidéos en téléchargement : permet au client de mettre en local
sur son ordinateur le fichier qu’il a demandé.
- vidéos en streaming : permet au client de visionner la vidéo
pendant le téléchargement grâce au protocole RTP.
- ajuster la qualité en fonction de la bande passante disponible
du client.
- test de charge du serveur :
- ajuster la qualité de la vidéo diffusée en fonction de la charge
- interdire l’accès si la charge est trop importante
- tenir a jour une liste de fichiers vidéos disponibles :
- ajouter des fichiers vidéo à la liste
- retirer des fichiers vidéo a la liste
VI .2 Fonctionnalités côté client
- téléchargement de vidéos :
- sélectionner une vidéo parmi la liste de vidéos disponibles
- confirmer transfert du fichier
- visualisation de vidéos :
- visualisation de vidéos par streaming
- sélectionner une vidéo parmi la liste de vidéos
- paramétrer la qualité en fonction de la bande passante
disponible.
- visualisation de vidéos en local
- capture de vidéo : fonctionnalité qui dépendra de l'état dans l'avancement
du projet
- capture de vidéo par l’intermédiaire d’un device approprié
(webcam par exemple)
- diffusion par streaming du flux capturé.
- 10 -
VII . Contraintes non fonctionnelles
VII.1 Plate-forme matérielle
L'application Fractal TV, étant implémentée en Java, pourra fonctionner sur les 2
plates-formes les plus connues, à savoir PC/Windows et PC/Linux.
Elle devra aussi fonctionner sur une plate-forme assez récente : le Pocket PC.
Le logiciel fonctionnera uniquement sur un réseau de vitesse de réception au
moins équivalente à celui de l' ADSL en ce qui concerne le côté client. Il n'est pas étudié
pour fonctionner sur des connexions à faible débit, de type 56k ou autres. En ce qui
concerne le serveur, il devra être sur un réseau possédant une assez grosse vitesse
d'upload pour pouvoir desservir plusieurs clients en même temps. Le nombre de clients
maximal pouvant recevoir de la vidéo en même temps dépendra très fortement du débit
d'upload de la connexion du serveur.
La version de Fractal utilisée sera la version 2.0 avec Java jdk 1.3 pour
compatibilité avec le Pocket PC.
VII.2 Emprunte mémoire
La mémoire des ordinateurs étant de plus en plus importante, les plate-formes PC
ne nécessitent pas une attention particulière sur l'utilisation de la mémoire. Seul la partie
« client » qui devra tournée sur Pocket PC devra se suffire de ses 32/64 voir 128 Mo de
RAM pour les modèles les plus performants.
- 11 -
VII.3 Annexes techniques
Schéma d’architecture
- 12 -