Analyse du comportement interne et diagramme d'états du Publiphone

Page 1 sur 14Lecteur de document UniversityLib

Analyse du comportement interne et diagramme d'états du Publiphone

Programming, Math, etc. · textbook

1/13

2/13

3/13

Exercice2

4/13

Exercice 3

5/13

6/13

Exercice 4

Exercice 5

Nous avons ajouté au diagramme précédent les actions internes importantes du Publiphone, telles que la vérification des

pièces et la gestion du solde de l’appelant :

• incrémentation lors de l’introduction de pièces ;

• décrémentation lors du début de communication et à chaque UT.

7/13

Pour parfaire la préparation du diagramme d’états, nous allons maintenant répertorier l’ensemble des messages qui sont émis

et surtout ceux qui sont reçus par le Publiphone. En effet, les messages reçus vont devenir des événements qui déclenchent

des transitions entre états et les messages émis vont donner lieu à des actions sur les transitions.

Le diagramme de séquence système réalisé à l’étape 2 liste un certain nombre de messages. Nous visons maintenant en la

matière à l’exhaustivité et à la « généricité ». Dans cette optique, nous préconisons de représenter graphiquement l’ensemble

des messages échangés par le système avec ses acteurs sous la forme d’un diagramme de communication appelé diagramme

Publicité

de contexte dynamique4

En partant des deux diagrammes de séquence système, nous avons répertorié les messages échangés entre le système et ses

acteurs. Puis nous les avons généralisés en ajoutant des paramètres quand c’était nécessaire :

• introPièce(0,2 !) devient un message paramétré : « introPiece(p) » ;

• composerNumero(0562475200) devient « composerNumero(num) » ;

• tonalité (libre) devient « tonalité(type) » pour prendre en compte l’occupation de la ligne, etc.

8/13

Pour le cas d’utilisation Téléphoner, l’état initial nominal du Publiphone est à « raccroché en service ». Quand l’appelant

décroche le combiné, il doit ensuite introduire un minimum de 0,2 ! pour pouvoir composer son numéro. Une fois qu’un

numéro valide est composé, le Publiphone attend la réponse du standard, puis que l’appelé décroche. La conversation est

alors établie jusqu’à ce que l’un des deux raccroche. Le Publiphone revient alors à son état initial.

Traduisons ce texte en un premier squelette de diagramme d’états.

ÉVÉNEMENT INTERNE : « WHEN »

On notera que la plupart des événements qui déclenchent les transitions entre états correspondent à la réception d’un message

émis par un acteur. Nous avons d’ailleurs utilisé les mêmes noms pour les événements que pour les messages correspondants

(sauf pour numeroValide qui est plus lisible que le rigoureux validiteNumero(vrai)).

Seul le passage de l’état « Attente pièces » à l’état « Attente numéro » est provoqué par un événement interne au Publiphone :

la détection du dépassement du seuil des 0,2 !. UML propose un mot-clé pour distinguer ces changements d’états internes : «

when », suivi d’une expression booléenne dont le passage de faux à vrai déclenche la transition.

Il y a (comme souvent) deux façons de procéder : la triviale et l’élégante ! La solution triviale consiste à ajouter des

transitions déclenchées par l’événement raccrocherCombiné et sortant de tous les états pour amener vers l’état

Publicité

« Raccroché ». Mais le diagramme paraît soudain bien chargé…

La solution élégante consiste à introduire un super-état5, « Décroché », ce qui permet de factoriser la transition de sortie vers

l’état « Raccroché ».

9/13

Pour le moment, le crédit de l’appelant n’intervient que dans l’expression booléenne associée à l’événement interne « when

». Cependant, pour que le crédit atteigne 0,2 !, il faut que l’appelant introduise une ou plusieurs pièces.

Nous pouvons donc placer une transition propre (qui ramène vers l’état de départ) sur l’état « Attente pièces ». Dès que le

crédit dépasse 0,2 !, le Publiphone doit passer dans l’état « Attente numéro ».

Si nous ne souhaitons utiliser que des événements de réception de messages, probablement introduirons-nous des conditions

sur les transitions comme cela est illustré sur la figure 5-16.

10/13

Reprenons les choses par le début. Admettons que le fait de décrocher le combiné fasse tomber les éventuelles pièces qui

auraient été introduites auparavant. Le crédit doit donc être initialisé à « 0 » sur cette transition. Ensuite, pour que le crédit

atteigne 0,2 !, il faut que l’appelant introduise une ou plusieurs pièces. Nous avons donc placé une transition propre sur l’état

« Attente pièces ». Dès que le crédit dépasse 0,2 !, la transition de changement « when » amène le Publiphone en l’état «

Attente numéro ». Le crédit n’évolue plus jusqu’à ce que l’appelé décroche, ce qui est traduit par le message débuterComm

émis par le standard. En effet, à partir de ce moment là, le crédit est décrémenté régulièrement comme l’indique la phrase 5 («

Le Publiphone consomme de l’argent dès que l’appelé décroche et à chaque unité de temps [UT] générée par le standard »).

L’action taxer représente la chute d’une pièce à chaque impulsion. Enfin, il ne faut pas oublier de rendre les pièces non

utilisées quand l’appelant raccroche.

La prise en compte de tous ces éléments donne le schéma présenté ci-après. On notera l’introduction du nouvel état « Fin

Publicité

communication » pour parer au cas où la communication est interrompue par le Publiphone faute de crédit suffisant.

11/13

Il nous reste encore à modéliser la dernière phrase : on peut ajouter des pièces à tout moment. Là encore, plusieurs solutions

sont possibles, mais une seule va s’avérer tout à la fois correcte et élégante. La première idée consiste à introduire une

transition propre identique à celle de « Attente pièce » sur chaque sous-état de « Décroché ». Cette façon de procéder est

correcte, mais le dispositif est très lourd, et nous allons plutôt chercher à factoriser au moyen du super-état. N’est-il pas

possible de transférer la transition propre au niveau même de « Décroché », comme cela est illustré sur le schéma ci-après ?

À retenir TRANSITION PROPRE OU TRANSITION INTERNE ?

Dans le cas d’une transition propre, l’objet quitte son état de départ pour le retrouver. Cela peut avoir des effets secondaires

non négligeables comme l’interruption puis le redémarrage d’une activité durable, la réalisation d’effets en entrée (« entry »)

ou en sortie (« exit ») de l’état, etc. De plus, quand un état est décomposé en sous-états, une transition propre ramène

forcément l’objet dans le sous-état initial. Ici, chaque introduction de pièce ramènerait le Publiphone dans l’état « Attente

pièce », qui est implicitement sous-état initial de « Décroché » ! Pour résoudre ce problème courant, il existe en UML la

notion de transition interne ; elle représente un couple (événement/effet) qui n’a aucune influence sur l’état courant. La

transition interne est ainsi notée à l’intérieur du symbole de l’état. C’est l’approche que nous allons utiliser pour notre étude

de cas.

12/13

13/13

Exercice 6

14/13