Devoir 1 - SEG-2506 - Hiver 2016
Donné: le 26 janvier, à remettre en classe le 22 février (après la semaine de lecture). Vous pouvez travailler en groupes de deux.
Soumettre votre rapport sur papier. Aussi, s.v.p., envoyer un courriel au TA avec votre spêcification LTSA et le programme Umple.
Préambule:
- Dans le lab-1, vous avez vu la modélisation conceptuelle d'une système de téléphone, et le développement, par cas d'utilisation, du comportement dynamique de téléphones qui communiquent à travers un commutateur. La spécification était laissée à votre discrétion et vous avez comparé votre conception avec le comportement spécifié pour le protocole SIP de la téléphonie par internet.
- Dans le lab-2, vous avez vu un modèle relativement simple de deux téléphones écrit dans le langage de l'outil LTSA, modèle qui comportait certains problèmes,
- Dans le lab-3, vous avez expérimenté avec la conception et implantation de machine d'états en utilisant l'environnement Umple.
L'objectif de ce devoir est de pratiquer ces choses encore avec une version de système téléphonique un peu différent.
Description du système
Structure
Le système téléphonique consiste de
- trois téléphones qui sont identifiés par les numéros 0, 1 et 2,
- un commutateur qui achemine les messages reçus d'un téléphone au téléphone pour lequel ils sont destinés.
- Chaque téléphone est associé avec un objet d'usager qui interagit avec le téléphone pour initier ou recevoir des connexions.
Comportement dynamique
Chaque téléphone pour initier un appel et aussi repondre à un appel entrant. Les messages échangés entre les téléphones et le commutateur suivent les convention SIP. Seulement les messages INVITE, INVITE_Response, ACK, BYE, et BYE_Response de SIP sont utilisés pour controler les connexions. Le commutateur joue le rôle d'un SIP Stateful Proxy (voir par exemple Wikipedia).
L'objet usager communique avec son téléphone correspondant par les interactions suivantes:
- go (int xxx) : une commande pour établir une connexion avec le téléphone numéro xxx (entrée au téléphone)
- talk : sortie du téléphone, cette interaction indique que la connexion est établie et l'usager peut parler et écouter.
- busy : sortie du téléphone, cette interaction indique le téléphone appelé est occupé.
- ringing : sortie du téléphone, cette interaction indique que quelqu'un veut établir une connexion.
- pick_up : cette commande indique que l'usager accepte la connexion entrant.
- terminate : entrée ou sortie du téléphone, indique que la connexion actuelle est terminée (par l'usager local ou par l'usager de l'autre bout).
Travail à faire
- Définir le comportement dynamique des objets usager dans la forme d'une machine à états impliquant les interactions mentionnées ci-dessus. Note: il est suggéré d'utiliser une machine qui a avec chaque transition seulement une interaction simple, une entrée ou une sortie.
- Les messages SIP mentionnés ci-haut sont assez complexes et peuvent contenir un grand nombre de paramètres. Pour modéliser le comportement du système téléphonique pour ce devoir, vous devriez simplifier beaucoup la situation, en utilisant aussi peu de paramètres que possible.Vous devriez écrire la liste des messages avec les paramètres que vous aller utiliser. Note: vous pourriez changer les noms des messages et des paramètres (comparé avec les noms de SIP), mais ils devraient rester similaire au noms originaux pour que l'on voit la correspondance avec les définitions SIP.
- Définissez le comportement dynamique des objets téléphone en donnant un modèle de machine à états à la Mealy (chaque transition est initiée par une entrée et peut contenir zéro, une ou plusieurs sorties).
- Note: Pour simplifier, vous pouvez faire l'hypothèse que la terminaison d'une connexion est toujours initiée par l'usager qui établissait la connexion, ou qu'il n'arriverait jamais que les deux usager d'une connexion initiait en même temps la terminaison de la connexion.
- Basé sur vos modèles de machines à états des points (1) et (3), construisez un système téléphonique simplifié avec l'outil LTSA et vérifiez qu'il ne contient pas de blocage.Suggestions pour simlifier:
- Le système contient seulement deux téléphones.
- Le premier usager seulement initie une connexion, et le deuxième usager l'accepte.
- Considérez aussi une deuxième version du système où le dexième usager est occupé.
- Note: Les interaction des deux usager, et les messages SIP, doivent être différents pour les deux téléphones. Il faut modifier leurs noms en conséquence, par exemple, en ajoutant 0 ou 1. Vous pouvez vous inspirer de l'example LTSA TCP symmetric v4 - TCP 1981.lts
- Modelisez le système téléphonique (basé sur les points (1), (2) et (3)) dans le environnement de développement Umple.
- Implantez votre modèle Umple en Java en ajoutant un processus Main qui crée le commutateur et les trois téléphones. Exécutez quelques tests et documentez les séquences d'interactions qui sont exécutés. Vous pourriez tester en particulier les situations suivantes:
- L'usager du téléphone 0 appelle l'usager du téléphone 1 ou 2.
- Pendant qu'il y a une connexion entre les téléphones 0 et 1, l'usager du téléphone 2 essaie d'établir une connexion avec un des autres usagers.
- Comparez quelques séquences d'interaction observées pendant les tests avec les séquences obtenues par la modélisation avec LTSA.
Documents à remettre: Un rapport sur les résultats obtenus pour les tâches ci-hautes
- Et en courriel au TA: la spécification LTSA et le programme Umple
Le barème de notation (préliminaire) est le suivant:
- Tâche 1: 10 points
- Tâche 2: 5 points
- Tâche 3: 15 points
- Tâche 4: 20 points
- Tâche 5: 20 points
- Tâche 6: 15 points
- Tâche 7: 5 points
- En plus: Style d'écriture, organisation et présentation du rapport: (20 points)