Projet de Systèmes II (licence 2003-2004)

Bla... bla...

L'auteur de cette page est: Jean-Baptiste Yunès

Généralités

Il est proposé de construire un système de conversation par message et en temps-réel basé sur une architecture de type client/serveur.

Ce projet devra être réalisé en langage C en utilisant les fonctions étudiées en cours. Il devra impérativement fonctionner sur les machines de l'UFR. Le travail pourra être effectué par groupe de trois étudiants au plus. Un rapport devra être rédigé et rendu avant la soutenance. Les dates de remise des rapports et soutenance seront précisées ultérieurement.

Description fonctionnelle

La fonctionnalité de base est la conversation par message pouvant être réalisée entre différents utilisateurs: l'un d'entre eux saisit sur son terminal un message (chaîne de caractère) qui est, après validation, transmis à l'ensemble des autres utilisateurs.

Ce mécanisme sera évidemment raffiné de différentes façons:

groupe de discussion
à un instant donné un utilisateur n'appartient qu'à un seul de ces groupes, tout message saisi sera envoyé à l'ensemble des membres du groupe. Il existe deux types de groupes:
groupe ouvert
tout utilisateur est autorisé à devenir membre d'un tel groupe
groupe fermé
le créateur/contrôleur d'un tel groupe possède des pouvoirs très particuliers: autoriser un utilisateur à entrer dans le groupe, forcer un utilisateur à quitter le groupe, détruire le groupe, etc.
Un groupe sera identifié par un nom associé au groupe à sa création.
messages de contrôle
certains messages (dits de contrôle) sont destinés non à la diffusion mais à la gestion du système lui-même: message pour s'inscrire à un groupe, message permettant d'obtenir la liste des groupes disponibles, message de création d'un groupe, liste des membres d'un groupe, etc. Un tel message circulant dans le système sera formaté de façon particulière (non spécifié par le sujet) mais pourra toujours être distingué des autres par la présence en premier caractère de la chaîne du caractère <ESC> (ASCII 27, ou 0x1b, ou 033).
utilisateurs
un utilisateur sera identifié par un pseudo (unique dans le système et choisi au moment de la première connexion). Lors de l'inscription à un groupe, tout utilisateur pourra se déclarer comme utilisateur simplement curieux, en ce cas il ne lui sera pas autorisé à envoyer de message mais uniquement d'en recevoir. Ce statut pourra être modifié à tout moment sur demande de l'utilisateur et appréciation éventuelle du contrôleur du groupe.
messages privés
il est possible à tout utilisateur d'envoyer un message privé à un utilisateur choisi parmi les membres du groupe courant: ce message ne sera évidemment pas diffusé aux autres membres.
délai de garde
tout utilisateur quittera automatiquement l'application lorsqu'il n'aura pas interagit avec le système pendant un délai determiné (pouvant être modifié au lancement).

Recommandations

Il n'y a aucune indication en ce qui concerne l'architecture globale de système: s'il est évidemment possible d'utiliser une architecture de type client/serveur on peut aussi essayer des systèmes de type pair-à-pair. Un des nombreux choix à faire...

Une interface graphique (même minimale) sera appréciée, qui permettra d'éviter l'entrelacement désagréable des messages en provenance des nombreux utilisateurs et du message en cours de saisie. Cette interface pourra n'être pensée/réalisée qu'au dernier moment et en Java. On notera que ce point n'est pas l'essentiel du projet, qu'il est tout à fait facultatif mais doit simplement permettre l'utilisation agréable du produit: NE PAS Y PASSER DU TEMPS! (Nous en étudierons l'architecture en TP d'IG)

On prendra soin de faire en sorte que les différentes applications réagissent de manière appropriée aux différentes sollicitations de l'utilisateur: arrêt brutal, etc. Le lancement des différentes applications ne devra jamais se faire de façon compliquée (une seule commande avec le moins de paramètres possible).

Comme toujours, il est recommandé de procéder avec beaucoup de précautions... Il ne faut pas hésiter à rajouter ce qui manque.

De plus, il est rappelé que les enseignants sont normalement disposés à répondre à vos questions de vive voix ou par courrier électronique, profitez-en.

S'il est conseillé d'échanger des informations entre différents groupes de travail, il n'est pas conseillé de copier les uns sur les autres. Le sujet est suffisamment libre d'interprétation pour que chaque groupe trouve une solution originale à chaque problème. Et que chacun puisse faire évoluer le projet de façon originale.