TD 4 - Réservation

Transcription

TD 4 - Réservation
TD 4 - Réservation
Lionel Seinturier, Giuseppe Lipari
February 10, 2016
Dans cet exercice, on étudie comment coder un serveur de réservation de chambres
d’hôtel.
L’hôtel dispose de N chambres, chaque chambre peux accueillir jusqu’à 4 personnes.
Les clientes veulent réserver une ou plusieurs chambres pour un ou plusieurs jours de la
semaine.
Une requête de réservation se fait en plusieurs étapes :
1. D’abord, le client spécifies le nombre de personnes et le jours de la semaine (de lundi
à dimanche) ; il envoie la requête au serveur ;
2. Le serveur vérifie la disponibilité. Si le nombre de chambres souhaité est disponible,
le serveur réserves provisoirement les chambres, et réponds positivement au client
avec le nombre de chambres réservées et les jours souhaités.
3. Le client a maintenant 30 secondes pour confirmer la réservation. Il peut :
• Confirmer la réservation avant que le 30 secondes soient passées ; Il envoie donc
un message de confirmation au serveur, qui réponds avec un ultérieur message
de confirmation.
• Annuler la réservation avant que le 30 secondes soient passées : il envoie un
message d’annulation et le serveur réponds d’avoir bien annulé la réservation ;
• Faire échouer le 30 secondes sans répondre. Dans ce cas, le serveur annule la
réservation de manière automatique.
1
Questions
1. Concevoir un protocole pour cet échange :
• les messages de requête et de réponse ;
• les message d’erreurs ;
• leur enchaînement.
2. Dessiner des diagrammes de séquence des messages pour représenter plusieurs scénarios d’interaction.
1
3. Concevoir les classes Reservation, Hotel, Chambre.
4. Écrire le pseudo-code du serveur. Le serveur doit être multi-threadé.
5. Est-ce que le protocole est avec ou sans état ? Et le serveur ?
6. Est-ce que on a besoin des méthodes synchronisées ?
• Si non, pourquoi ?
• Si oui, pourquoi ? Et lesquelles ?
7. Concevoir un suite de tests pour tester le bon fonctionnement du serveur dans
l’hypothese que le serveur n’est pas multi-threadé.
• qu’est-ce que il faut tester?
• pensez à des clients malintentionné qui cherche à faire planter le serveur: comment tester que le server est robuste?
• si necessaire modifier le protocole ou l’implementation pour ajouter de la robustesse.
2