Correction TD Génie Logiciel Semaine 12 DET - Générique Soit et B, deux diagrammes d états, l un avec un état composite (B) et l autre sans () C Diagramme d états Diagramme d états B Question : Montrer que les deux diagrammes ci-dessus ne sont pas équivalents en trouvant une séquence d événements qui n amène pas dans le même état en et en B. On supposera que les séquences débutent à l état initial. Correction Il faut bien remarquer que l état initial est à l intérieur de l état composite C. Par conséquent à chaque fois qu on entre dans l état C (comme c est le cas avec la transition x), on passe par l état initial. insi, la séquence d évènements a, z, x amènera à l état T dans le cas alors qu on sera dans l état initial dans le cas B. Diagrammes de classes et DET - Montre Enoncé : On considère une montre digitale simplifiée: 1/9
Bouton 17:35:22 Bouton B 1. Sur la figure, l état courant est l état ffichage Heure. 2. Quand on appuie une fois sur le bouton (bouton Mode), la montre passe en mode modification de l'heure. Chaque pression sur le bouton B (bouton vance) incrémente l'heure d'une unité; 3. Quand on appuie une nouvelle fois sur le bouton, la montre passe en mode modification des minutes. Chaque pression sur le bouton B incrémente les minutes d'une unité. 4. quand on appuie une nouvelle fois sur le bouton, la montre repasse en mode ffichage. 5. Pour régler l heure de l alarme, il faut exercer une double pression (à l instar d un doubleclic sur une souris) sur le bouton. 6. La montre s arrête lorsque l énergie ne parvient plus à la montre («batteries (piles) trop faible», «batteries retirées», ). Questions a. Réaliser un diagramme de classes représentant une vue détaillée (attribut et fonctions) des classes nécessaires à l analyse de cette description. b. Réaliser un Diagramme d'états correspondant aux spécifications 1 à 4 ci-dessus, sans oublier les actions accompagnant certaines des transitions. On laisse de coté dans un premier temps le réglage de l alarme ainsi que l état final provoqué par l événement «plus d énergie». c. Expliquer pourquoi le réglage de l alarme introduit un non-déterminisme dans le comportement de l interface utilisateur de la montre. Montrer comment ré-introduire un comportement déterministe en ajoutant un état supplémentaire non précisé dans l énoncé. d. jouter autant de transitions que nécessaire aux états pour représenter le passage dans l état final. Quelle astuce du formalisme du diagramme d états pourrait-on utiliser pour alléger la représentation. Correction a) 2/9
Bouton Signal b) Signal_ Signal_B Pile -niveau_energie Horloge -heure -minute -seconde +incrementer_heure() +incrementer_minute() +incrementer_seconde() +afficher_heure() +afficher_minute() +afficher_seconde() +raz_heure() +raz_minute() +raz_seconde() <<description>> classe stéréotypée <<signal>> représentative de l'appui sur le bouton ou B Reveil -heure -minute +regler_sonnerie() +sonner() On pourrait aussi faire pointer la transition des l état initial directement sur «régler heure»? Rappel : ou B désigne le signal ou signal provoqué par un et un seul appui sur la touche ou B (respectivement). Remarque : Il y a une différence entre : after(60s) : evt temporel when(m=60) : evt modifiant Il n y a pas «d état final». On pourrait ajouter un tel état provoqué par l événement «batterie trop faible». Dans un état, on a «entry» pour spécifier ce qui se déclenche lorsqu on entre dans l état et on a «exit» pour spécifier ce qui se déclenche lorsqu on quitte l état. Dans le cadre d une autotransition, ça déclenche les deux événements. 3/9
c) jouter un état «Micro-Horloge» qui compte 0.5 seconde par exemple, avant de considérer que l utilisateur ne souhaitait pas effectuer de double clic. insi, sera interprété comme double-clic la succession de deux appuis sur la touche en moins de 0.5 seconde. Pour factoriser le réglage des heures et minutes, deux états transitoires ont été créés : «Mode Horloge (timer)» et «Mode larme» : ces deux derniers fixent un attribut «Mode» (que l on peut ajouter à la classe «Montre», voir V1.1 du diagramme de classes) de façon à ce que les fonctions incrementer_heure et incrementer_minute sache si l incrément s applique à l heure de l horloge ou l heure de l alarme lorsqu ils sont déclenchés dans les états «Réglage_H» et «Réglage_M» when(h=24)/raz_heure() after(60s)/incrementer_minute() ffichage_hm /afficher_heure() ; afficher_minute() Micro-horloge Mode alarme after ( 0.1 seconde ) when (m=60)/incrementer_heure() ; raz_minute() after ( 0.5 seconde ) after ( 0.1 seconde ) Réglage_H Réglage_M Mode horloge B/incrementer_heure() B/incrementer_minute() Montre heure : undefined minute : undefined mode : undefined incrementer_heure() incrementer_minute() afficher_heure() afficher_minute() raz_minute() raz_heure() fixer_mode() obtenir_mode() <<comment>> Nouvel attribut pour gérer le mode alarme Signal_ Signal_B <<description>> classe stéréotypée <<signal>> représentative de l'appui sur le bouton ou B <<comment>> Pour accéder au nouvel attribut d) Utiliser le formalisme de l état composite. Cela signifie que quel que soit l état en cours à l intérieur de «Nominal», le signal «Energie trop faible» provoque la transition vers l état final. 4/9
insérer_batteries Nominal ffichage_hm /afficher_heure() ; afficher_minute() Réglage_H Réglage_M énergie_trop_faible DET - Publiphone Enoncé : L objectif est de réaliser une application qui simule le comportement d un Publiphone à Pièces sur un système d exploitation classique à partir de quelques périphériques standard dans la micro-informatique: microphone, haut-parleur, lecteur de carte bancaire type Moneo. Pour débuter ce projet, on part de l existant en analysant un système simplifié de Publiphone à pièces : 1. Le prix minimal d'une communication interurbaine est de 0.3 Euro TTC. 2. près l'introduction de la monnaie, l'utilisateur a 2 minutes pour composer son numéro du correspondant (ce délai est décompté). 3. La ligne appelée peut être libre ou occupée. 4. Le correspondant peut raccrocher le premier. 5. Le Publiphone consomme de l'argent dès que le correspondant décroche, et à chaque unité de temps (U.T.) engendrée par le standard. 6. On peut ajouter des pièces à tout moment. 7. Lors du raccrochage, le solde de monnaie est rendu. Questions : 1. Dessiner le Diagramme des Cas d'utilisation du Publiphone à pièces. 2. Réaliser un Diagramme (préliminaire) de séquence système qui décrive le Scénario nominal du cas d'utilisation: Téléphoner. 3. Réaliser un premier Diagramme d'états qui décrive le comportement nominal du Publiphone, d'après le diagramme de séquence système. 4. Sur le Diagramme d'états précédent, comment représenter le fait que l'appelant peut raccrocher à tout moment, et pas seulement dans l'état Conversation? 5/9
Correction DET - Publiphone 0. Recensement des évènements et états Type d événement Signal Temporel Opération Modifiant Liste Mise sous tension de l appareil Correspondant raccroche Monnaie introduite Numéro du correspondant composé Utilisateur décroche Utilisateur raccroche Délai de 2 minutes ucun Prix minimal atteint Etats du téléphone : - Point d entrée (état initial) - Point de sortie (état final) - ttente décrochage (au repos) - ttente pièces - ttente numérotation - Composition du numéro 1 : Décrocher <<include>> Composer Phone Guy Téléphoner <<include>> Raccrocher <<include>> <<include>> Payer Ou bien : 6/9
administrateur EXU1410 mettre sous tension utilisateur mettre hors tension reseau_telephonique téléphoner systeme_de_paiement NB : Sur le diagramme ci-dessous, l encadrement en pointillé désigne l état composite. 2 : Exemple de DSS PhoneGuy PubliPhone décrochage tonalité 1 monnaie composition tonalité 2 communication débit racrochage NB : on pourrait aussi ajouter une colonne destinataire 7/9
Le_Telephone_Du_Bar:systeme Robert:utilisateur decrocher Le_Gestionnaire_de_pieces:systeme_de_paiement Le_Reseau_Tilicom:reseau_telephonique introduire_pieces composer_numero <<comment>> le correspondant décroche etablir_communication consommer_unite envoyer_unite raccrocher terminer_communication rendre_monnaie 3 : DET 8/9
[mise sous tension ] [rrêt tension] Rendre monnaie ttente décrochage [raccrochage utilisateur] [combiné décroché] ttente pièces [prix minimum atteint] Point d entrée de l état composite ttente numérotation [numéro composé] [après 2 min] Composition numéro [ligne libre] [ligne occupée] Tonalité occupée Tonalité jouée [correspondant décroche] Consommer argent [Correspondant absent] Point de sortie de l état composite [U.T.] [Raccrochage correspondant] Conversation en cours [ajout] cceptation pièces 4 : par le super-état (état composite) 9/9