Projet 2016-17 : simulation d'un système de gestion d'avions

Description générale

On désire simuler le fonctionnement d'un outil d'aide au contrôle aérien (appelé dans la suite Système de Gestion du Contrôle Aérien SGCA). L'application devra permettre de prendre en charge plusieurs avions et afficher la liste des avions présents au contrôleur. Le contrôleur pourra sélectionner un avion de cette liste et entrer au clavier une instruction.

L'application est constituée d'un ensemble d'éléments étant distribués, comme représenté sur la figure ci-dessus :

Un avion

Un avion est implémenté en C et dont le code gérant son déplacement au fil du temps et son intialisation vous est donné (fichiers avion.c et avion.h). Vous aurez à modifier ce fichier pour que l'avion envoie ses coordonnées au SGCA et qu'il reçoivent des ordres d'un contrôleur.

La communication entre un avion et le SCGA se fait via des sockets TCP.

On pourra lancer un nombre quelconque d'avions, variable au fil du temps de l'exécution de l'application.

Dans le fichier avion.c, il y a une troisième opération à implémenter pour ouvrir la connexion avec le serveur. Celle-ci se déroulera via du multicast UDP : l'avion envoie une requête sur un groupe multicast pour signaler son lancement au SGCA. Quand celui-ci la reçoit, il envoie l'adresse de sa socket d'écoute sur le même groupe multicat et qui sera ainsi récupérée par l'avion.

Le SGCA

C'est la partie centrale qui va s'occuper de communiquer avec les avions et les consoles. Un point important est de détecter le crash d'un avion et de le gérer correctement. De même pour une console.

Le SGCA sera entièrement implémenté en C.

Une console

Les consoles sont implémentées en Java et communiqueront avec le SGCA avec des sockets UDP.

Il y a deux types de console que l'on peut lancer en multiples exemplaires :

Evaluation

Une évaluation sur machine sera programmée. Chaque binôme lancera son application sur plusieurs machines et le fonctionnement ainsi que la robustesse de l'application (résistement aux crashs) sera testé.

Vous m'enverrez également par mail votre code source ainsi qu'un rapport de quelques pages décrivant le fonctionnement de votre application, les problèmes rencontrées, les solutions appliquées...